实现列表查询活跃告警和历史告警
This commit is contained in:
@@ -4,8 +4,10 @@ import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
domainAlarm "git.huangwc.com/pig/pig-farm-controller/internal/domain/alarm" // 引入领域层的 AlarmService
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/app/dto"
|
||||
domainAlarm "git.huangwc.com/pig/pig-farm-controller/internal/domain/alarm"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/repository"
|
||||
)
|
||||
|
||||
// ThresholdAlarmService 定义了阈值告警配置服务的接口。
|
||||
@@ -15,19 +17,25 @@ type ThresholdAlarmService interface {
|
||||
SnoozeThresholdAlarm(ctx context.Context, alarmID uint, durationMinutes uint) error
|
||||
// CancelSnoozeThresholdAlarm 取消对一个阈值告警的忽略状态。
|
||||
CancelSnoozeThresholdAlarm(ctx context.Context, alarmID uint) error
|
||||
// ListActiveAlarms 批量查询活跃告警。
|
||||
ListActiveAlarms(ctx context.Context, req *dto.ListActiveAlarmRequest) (*dto.ListActiveAlarmResponse, error)
|
||||
// ListHistoricalAlarms 批量查询历史告警。
|
||||
ListHistoricalAlarms(ctx context.Context, req *dto.ListHistoricalAlarmRequest) (*dto.ListHistoricalAlarmResponse, error)
|
||||
}
|
||||
|
||||
// thresholdAlarmService 是 ThresholdAlarmService 接口的具体实现。
|
||||
type thresholdAlarmService struct {
|
||||
ctx context.Context
|
||||
alarmService domainAlarm.AlarmService // 注入领域层的 AlarmService
|
||||
alarmService domainAlarm.AlarmService
|
||||
alarmRepo repository.AlarmRepository
|
||||
}
|
||||
|
||||
// NewThresholdAlarmService 创建一个新的 ThresholdAlarmService 实例。
|
||||
func NewThresholdAlarmService(ctx context.Context, alarmService domainAlarm.AlarmService) ThresholdAlarmService {
|
||||
func NewThresholdAlarmService(ctx context.Context, alarmService domainAlarm.AlarmService, alarmRepo repository.AlarmRepository) ThresholdAlarmService {
|
||||
return &thresholdAlarmService{
|
||||
ctx: ctx,
|
||||
alarmService: alarmService,
|
||||
alarmRepo: alarmRepo,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,3 +50,48 @@ func (s *thresholdAlarmService) CancelSnoozeThresholdAlarm(ctx context.Context,
|
||||
serviceCtx := logs.AddFuncName(ctx, s.ctx, "CancelSnoozeThresholdAlarm")
|
||||
return s.alarmService.CancelAlarmSnooze(serviceCtx, alarmID)
|
||||
}
|
||||
|
||||
// ListActiveAlarms 实现了批量查询活跃告警的逻辑。
|
||||
func (s *thresholdAlarmService) ListActiveAlarms(ctx context.Context, req *dto.ListActiveAlarmRequest) (*dto.ListActiveAlarmResponse, error) {
|
||||
serviceCtx := logs.AddFuncName(ctx, s.ctx, "ListActiveAlarms")
|
||||
|
||||
opts := repository.ActiveAlarmListOptions{
|
||||
SourceType: req.SourceType,
|
||||
SourceID: req.SourceID,
|
||||
Level: req.Level,
|
||||
IsIgnored: req.IsIgnored,
|
||||
TriggerTime: req.TriggerTime,
|
||||
EndTime: req.EndTime,
|
||||
OrderBy: req.OrderBy,
|
||||
}
|
||||
|
||||
alarms, total, err := s.alarmRepo.ListActiveAlarms(serviceCtx, opts, req.Page, req.PageSize)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return dto.NewListActiveAlarmResponse(alarms, total, req.Page, req.PageSize), nil
|
||||
}
|
||||
|
||||
// ListHistoricalAlarms 实现了批量查询历史告警的逻辑。
|
||||
func (s *thresholdAlarmService) ListHistoricalAlarms(ctx context.Context, req *dto.ListHistoricalAlarmRequest) (*dto.ListHistoricalAlarmResponse, error) {
|
||||
serviceCtx := logs.AddFuncName(ctx, s.ctx, "ListHistoricalAlarms")
|
||||
|
||||
opts := repository.HistoricalAlarmListOptions{
|
||||
SourceType: req.SourceType,
|
||||
SourceID: req.SourceID,
|
||||
Level: req.Level,
|
||||
TriggerTimeStart: req.TriggerTimeStart,
|
||||
TriggerTimeEnd: req.TriggerTimeEnd,
|
||||
ResolveTimeStart: req.ResolveTimeStart,
|
||||
ResolveTimeEnd: req.ResolveTimeEnd,
|
||||
OrderBy: req.OrderBy,
|
||||
}
|
||||
|
||||
alarms, total, err := s.alarmRepo.ListHistoricalAlarms(serviceCtx, opts, req.Page, req.PageSize)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return dto.NewListHistoricalAlarmResponse(alarms, total, req.Page, req.PageSize), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user