package plan import ( "git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" ) // Service 定义了计划领域服务的接口。 type Service interface { // Start 启动计划相关的后台服务,例如计划执行管理器。 Start() // Stop 停止计划相关的后台服务,例如计划执行管理器。 Stop() // RefreshPlanTriggers 刷新计划触发器,同步数据库中的计划状态和待执行队列中的触发器任务。 RefreshPlanTriggers() error // CreateOrUpdateTrigger 为给定的 planID 创建其关联的触发任务。 // 如果触发器已存在,会根据计划类型更新其执行时间。 CreateOrUpdateTrigger(planID uint) error // EnsureAnalysisTaskDefinition 确保计划的分析任务定义存在于 tasks 表中。 // 如果不存在,则会自动创建。此方法不涉及待执行队列。 EnsureAnalysisTaskDefinition(planID uint) error // TODO: 在这里添加其他与计划相关的领域服务方法 } // planServiceImpl 是 Service 接口的具体实现。 type planServiceImpl struct { executionManager ExecutionManager taskManager AnalysisPlanTaskManager logger *logs.Logger } // NewPlanService 创建一个新的 Service 实例。 func NewPlanService( executionManager ExecutionManager, taskManager AnalysisPlanTaskManager, logger *logs.Logger, ) Service { return &planServiceImpl{ executionManager: executionManager, taskManager: taskManager, logger: logger, } } // Start 启动计划相关的后台服务。 func (s *planServiceImpl) Start() { s.logger.Infof("PlanService 正在启动...") s.executionManager.Start() } // Stop 停止计划相关的后台服务。 func (s *planServiceImpl) Stop() { s.logger.Infof("PlanService 正在停止...") s.executionManager.Stop() } // RefreshPlanTriggers 刷新计划触发器。 func (s *planServiceImpl) RefreshPlanTriggers() error { s.logger.Infof("PlanService 正在刷新计划触发器...") return s.taskManager.Refresh() } // CreateOrUpdateTrigger 为给定的 planID 创建其关联的触发任务。 // 如果触发器已存在,会根据计划类型更新其执行时间。 func (s *planServiceImpl) CreateOrUpdateTrigger(planID uint) error { s.logger.Infof("PlanService 正在为计划 %d 创建或更新触发器...", planID) return s.taskManager.CreateOrUpdateTrigger(planID) } // EnsureAnalysisTaskDefinition 确保计划的分析任务定义存在于 tasks 表中。 // 如果不存在,则会自动创建。此方法不涉及待执行队列。 func (s *planServiceImpl) EnsureAnalysisTaskDefinition(planID uint) error { s.logger.Infof("PlanService 正在确保计划 %d 的分析任务定义...", planID) return s.taskManager.EnsureAnalysisTaskDefinition(planID) }