75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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)
 | 
						|
}
 |