增加plan service
This commit is contained in:
		
							
								
								
									
										74
									
								
								internal/domain/plan/plan_service.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								internal/domain/plan/plan_service.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,74 @@
 | 
			
		||||
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)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user