From f03116691c7d67c6a8a7675bcd960bb1e14cc40c Mon Sep 17 00:00:00 2001 From: guoyuqi Date: Wed, 14 Oct 2026 18:59:53 +0800 Subject: [PATCH] fix: alert config log text --- agent/app/api/v2/alert.go | 28 ++++---------------------- agent/app/service/alert.go | 40 +++++++++++++++++++++++++------------- 2 files changed, 30 insertions(+), 38 deletions(-) diff --git a/agent/app/api/v2/alert.go b/agent/app/api/v2/alert.go index 260ebf60c..d05e0ab05 100644 --- a/agent/app/api/v2/alert.go +++ b/agent/app/api/v2/alert.go @@ -1,7 +1,6 @@ package v2 import ( - "encoding/json" "errors" "net/http" "net/url" @@ -328,8 +327,8 @@ func (b *BaseApi) UpdateAlertConfigStatus(c *gin.Context) { if err := helper.CheckBindAndValidate(&req, c); err != nil { return } - err := alertService.UpdateAlertConfigStatus(req, loadAuditUser(c)) - setAlertConfigLogName(c, req.ID) + name, err := alertService.UpdateAlertConfigStatus(req, loadAuditUser(c)) + helper.SetOperationLogValues(c, map[string]string{"name": name}) if err != nil { helper.InternalServer(c, err) return @@ -362,8 +361,8 @@ func (b *BaseApi) DeleteAlertConfig(c *gin.Context) { if err := helper.CheckBindAndValidate(&req, c); err != nil { return } - setAlertConfigLogName(c, req.ID) - err := alertService.DeleteAlertConfig(req.ID) + name, err := alertService.DeleteAlertConfig(req.ID) + helper.SetOperationLogValues(c, map[string]string{"name": name}) if err != nil { helper.InternalServer(c, err) return @@ -414,22 +413,3 @@ func (b *BaseApi) TestAlertConfig(c *gin.Context) { } helper.SuccessWithData(c, flag) } - -// Resolve the current name for the operation log. Call before deleting the record. -func setAlertConfigLogName(c *gin.Context, id uint) { - name := "" - if config, err := repo.NewIAlertRepo().GetConfigById(id); err == nil { - name = alertConfigLogName(config.Config, config.Title) - } - helper.SetOperationLogValues(c, map[string]string{"name": name}) -} - -func alertConfigLogName(config, title string) string { - var value struct { - DisplayName string `json:"displayName"` - } - if json.Unmarshal([]byte(config), &value) == nil && strings.TrimSpace(value.DisplayName) != "" { - return strings.TrimSpace(value.DisplayName) - } - return title -} diff --git a/agent/app/service/alert.go b/agent/app/service/alert.go index e22ac7cee..91aac6840 100644 --- a/agent/app/service/alert.go +++ b/agent/app/service/alert.go @@ -74,8 +74,8 @@ type IAlertService interface { GetAlertConfig(req dto.AlertConfigQuery) ([]model.AlertConfig, error) PageAlertConfig(req dto.AlertConfigPageReq) (int64, []model.AlertConfig, error) UpdateAlertConfig(req dto.AlertConfigUpdate, operator string) error - UpdateAlertConfigStatus(req dto.AlertConfigStatusUpdate, operator string) error - DeleteAlertConfig(id uint) error + UpdateAlertConfigStatus(req dto.AlertConfigStatusUpdate, operator string) (string, error) + DeleteAlertConfig(id uint) (string, error) TestAlertConfig(req dto.AlertConfigTest) (bool, error) TestCustomAlertConfig(req dto.AlertConfigTest, lang string) (dto.AlertConfigTestResult, error) } @@ -623,25 +623,26 @@ func (a AlertService) updateCustomAlertConfig(req dto.AlertConfigUpdate, operato }) } -func (a AlertService) UpdateAlertConfigStatus(req dto.AlertConfigStatusUpdate, operator string) error { +func (a AlertService) UpdateAlertConfigStatus(req dto.AlertConfigStatusUpdate, operator string) (string, error) { if err := validateAlertConfigStatus(req.Status); err != nil { - return err + return "", err } config, err := alertRepo.GetConfigById(req.ID) if err != nil { - return err + return "", err } + name := alertConfigLogName(config.Config, config.Title) if req.Status == constant.AlertEnable { if err := a.validateCommunityAlertConfigType(config.Type); err != nil { - return err + return name, err } if config.Type == constant.Custom { if _, err := alertwebhook.Resolve(config); err != nil { - return err + return name, err } } } - return alertRepo.UpdateAlertConfig(map[string]interface{}{ + return name, alertRepo.UpdateAlertConfig(map[string]interface{}{ "status": req.Status, "update_user": operator, }, repo.WithByID(req.ID)) @@ -813,19 +814,20 @@ func alertConfigSMSPhone(configData string) string { return strings.TrimSpace(cfg.Phone) } -func (a AlertService) DeleteAlertConfig(id uint) error { - _, err := alertRepo.GetConfigById(id) +func (a AlertService) DeleteAlertConfig(id uint) (string, error) { + config, err := alertRepo.GetConfigById(id) if err != nil { - return err + return "", err } + name := alertConfigLogName(config.Config, config.Title) usedAlerts, err := alertRepo.List(alertRepo.WithByAlertMethodContainsConfigID(id)) if err != nil { - return err + return name, err } if len(usedAlerts) > 0 { - return buserr.New("ErrAlertConfigInUse") + return name, buserr.New("ErrAlertConfigInUse") } - return alertRepo.DeleteAlertConfig(repo.WithByID(id)) + return name, alertRepo.DeleteAlertConfig(repo.WithByID(id)) } func (a AlertService) TestAlertConfig(req dto.AlertConfigTest) (bool, error) { @@ -1043,3 +1045,13 @@ func (a AlertService) validateCronJobAlertChannels(alertType, advanced, method s _, err = a.validateAlertMethodReferences(method) return err } + +func alertConfigLogName(config, title string) string { + var value struct { + DisplayName string `json:"displayName"` + } + if json.Unmarshal([]byte(config), &value) == nil && strings.TrimSpace(value.DisplayName) != "" { + return strings.TrimSpace(value.DisplayName) + } + return title +}