45 lines
1.9 KiB
Go
45 lines
1.9 KiB
Go
|
|
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)
|
||
|
|
}
|