package service import ( "context" "time" domainAlarm "git.huangwc.com/pig/pig-farm-controller/internal/domain/alarm" // 引入领域层的 AlarmService "git.huangwc.com/pig/pig-farm-controller/internal/infra/logs" ) // ThresholdAlarmService 定义了阈值告警配置服务的接口。 // 该服务负责管理阈值告警任务的配置,并将其与计划进行联动。 type ThresholdAlarmService interface { // SnoozeThresholdAlarm 忽略一个阈值告警,或更新其忽略时间。 SnoozeThresholdAlarm(ctx context.Context, alarmID uint, durationMinutes uint) error // CancelSnoozeThresholdAlarm 取消对一个阈值告警的忽略状态。 CancelSnoozeThresholdAlarm(ctx context.Context, alarmID uint) error } // thresholdAlarmService 是 ThresholdAlarmService 接口的具体实现。 type thresholdAlarmService struct { ctx context.Context alarmService domainAlarm.AlarmService // 注入领域层的 AlarmService } // NewThresholdAlarmService 创建一个新的 ThresholdAlarmService 实例。 func NewThresholdAlarmService(ctx context.Context, alarmService domainAlarm.AlarmService) ThresholdAlarmService { return &thresholdAlarmService{ ctx: ctx, alarmService: alarmService, } } // SnoozeThresholdAlarm 实现了忽略阈值告警的逻辑。 func (s *thresholdAlarmService) SnoozeThresholdAlarm(ctx context.Context, alarmID uint, durationMinutes uint) error { serviceCtx := logs.AddFuncName(ctx, s.ctx, "SnoozeThresholdAlarm") return s.alarmService.SnoozeAlarm(serviceCtx, alarmID, time.Duration(durationMinutes)*time.Minute) } // CancelSnoozeThresholdAlarm 实现了取消忽略阈值告警的逻辑。 func (s *thresholdAlarmService) CancelSnoozeThresholdAlarm(ctx context.Context, alarmID uint) error { serviceCtx := logs.AddFuncName(ctx, s.ctx, "CancelSnoozeThresholdAlarm") return s.alarmService.CancelAlarmSnooze(serviceCtx, alarmID) }