diff --git a/src/bean/vo/request/alert_rules.go b/src/bean/vo/request/alert_rules.go index e0956a5862177e8615ce7b0211e25ec9077e2f58..b69670a988d78afca080396341786fde5bed9373 100644 --- a/src/bean/vo/request/alert_rules.go +++ b/src/bean/vo/request/alert_rules.go @@ -62,7 +62,7 @@ type ListAlertRules struct { NotifyMethod string `json:"notify_method" form:"notify_method" binding:"omitempty,oneof=all dingtalk sms"` // 预警通知方式 all dingtalk sms IsEnabled int `json:"is_enabled" form:"is_enabled" binding:"omitempty,oneof=0 1 2"` // 是否开启 1:是 2:否 Keyword string `json:"keyword" form:"keyword"` // 预警规则名称(指标名称) - StartTime string `json:"start_time" form:"start_time"` - EndTime string `json:"end_time" form:"end_time"` + StartTime string `json:"start_time" form:"start_time" binding:"omitempty,datetime=2006-01-02 15:04:05"` + EndTime string `json:"end_time" form:"end_time" binding:"omitempty,datetime=2006-01-02 15:04:05"` Pagination } diff --git a/src/bean/vo/response/alert_rules.go b/src/bean/vo/response/alert_rules.go index ff1bc07392b48f6c2cb1d7f273852f28e8530660..77240074b97c71567347e7931a19da9a826072b9 100644 --- a/src/bean/vo/response/alert_rules.go +++ b/src/bean/vo/response/alert_rules.go @@ -4,6 +4,9 @@ import "gitlab.wodcloud.com/smart-operation/so-operation-api/src/bean/entity" type AlertRulesItem struct { entity.AlertRules `xorm:"extends"` + ClassParentName string `json:"class_parent_name" xorm:"class_parent_name"` + ClassName string `json:"class_name" xorm:"class_name"` + MetricConfigName string `json:"metric_config_name" xorm:"metric_config_name"` AlertCondition []entity.AlertCondition `json:"alert_condition" xorm:"alert_condition"` AlertRange []entity.RulesAlertRange `json:"alert_range" xorm:"alert_range"` NotifyMethod []string `json:"notify_method" xorm:"notify_method"` diff --git a/src/service/alert_class.go b/src/service/alert_class.go index bcde691ce7122a59de7af0336fde95fb4829a5f9..a76f72784753e69a3b057f5cfd9bff1894ff8774 100644 --- a/src/service/alert_class.go +++ b/src/service/alert_class.go @@ -18,19 +18,19 @@ type AlertClassSvc struct { User entity.SystemUserInfo } -func (m *AlertClassSvc) Add(session *xorm.Session, req request.AddAlertClass) (classId int, err error) { +func (a *AlertClassSvc) Add(session *xorm.Session, req request.AddAlertClass) (classId int, err error) { now := jsontime.Now() data := entity.AlertClass{ - CreatedBy: m.User.SystemAccount, + CreatedBy: a.User.SystemAccount, CreatedAt: now, - UpdatedBy: m.User.SystemAccount, + UpdatedBy: a.User.SystemAccount, UpdatedAt: now, } _ = copier.Copy(&data, &req) var max int if data.SortOrder >= 0 { - max, err = m.SortOrderMax(data.ParentId) + max, err = a.SortOrderMax(data.ParentId) if err != nil { return } @@ -41,10 +41,10 @@ func (m *AlertClassSvc) Add(session *xorm.Session, req request.AddAlertClass) (c return } -func (m *AlertClassSvc) Update(session *xorm.Session, req request.UpdateAlertClass) error { +func (a *AlertClassSvc) Update(session *xorm.Session, req request.UpdateAlertClass) error { now := jsontime.Now() data := entity.AlertClass{ - UpdatedBy: m.User.SystemAccount, + UpdatedBy: a.User.SystemAccount, UpdatedAt: now, } _ = copier.Copy(&data, &req) @@ -55,7 +55,7 @@ func (m *AlertClassSvc) Update(session *xorm.Session, req request.UpdateAlertCla return nil } -func (m *AlertClassSvc) Move(req request.MoveAlertClass) (err error) { +func (a *AlertClassSvc) Move(req request.MoveAlertClass) (err error) { db, err := client.GetDbClient() if err != nil { err = resp.DbConnectError.WithError(err) @@ -123,7 +123,7 @@ func (m *AlertClassSvc) Move(req request.MoveAlertClass) (err error) { return nil } -func (m *AlertClassSvc) GetDataById(req request.DetailAlertClass) (resp response.AlertClassItem, err error) { +func (a *AlertClassSvc) GetDataById(req request.DetailAlertClass) (resp response.AlertClassItem, err error) { db, err := client.GetDbClient() if err != nil { return @@ -132,7 +132,7 @@ func (m *AlertClassSvc) GetDataById(req request.DetailAlertClass) (resp response return } -func (m *AlertClassSvc) List(req request.ListAlertClass) (resp response.AlertClassList, err error) { +func (a *AlertClassSvc) List(req request.ListAlertClass) (resp response.AlertClassList, err error) { db, err := client.GetDbClient() if err != nil { return @@ -151,7 +151,7 @@ func (m *AlertClassSvc) List(req request.ListAlertClass) (resp response.AlertCla return } -func (m *AlertClassSvc) Tree(req request.ListAlertClass) (resp []*response.AlertClassNode, err error) { +func (a *AlertClassSvc) Tree(req request.ListAlertClass) (resp []*response.AlertClassNode, err error) { db, err := client.GetDbClient() if err != nil { return @@ -204,7 +204,7 @@ func sortTree(nodes []*response.AlertClassNode) { } } -func (m *AlertClassSvc) SortOrderMax(parentId int) (max int, err error) { +func (a *AlertClassSvc) SortOrderMax(parentId int) (max int, err error) { db, err := client.GetDbClient() if err != nil { return @@ -215,7 +215,7 @@ func (m *AlertClassSvc) SortOrderMax(parentId int) (max int, err error) { return } -func (m *AlertClassSvc) Delete(ids []int) (err error) { +func (a *AlertClassSvc) Delete(ids []int) (err error) { db, err := client.GetDbClient() if err != nil { return diff --git a/src/service/alert_rules.go b/src/service/alert_rules.go index e706986523709d9f6aa2846e146d479c2ab23ca2..1bb6413798e11aa61f0a993b72f584c4b07a420f 100644 --- a/src/service/alert_rules.go +++ b/src/service/alert_rules.go @@ -18,7 +18,7 @@ type AlertRulesSvc struct { User entity.SystemUserInfo } -func (m *AlertRulesSvc) Add(req request.AddAlertRules) error { +func (a *AlertRulesSvc) Add(req request.AddAlertRules) error { db, err := client.GetDbClient() if err != nil { err = resp.DbConnectError.WithError(err) @@ -27,9 +27,9 @@ func (m *AlertRulesSvc) Add(req request.AddAlertRules) error { now := jsontime.Now() data := entity.AlertRules{ Id: uuid.New().String(), - CreatedBy: m.User.SystemAccount, + CreatedBy: a.User.SystemAccount, CreatedAt: now, - UpdatedBy: m.User.SystemAccount, + UpdatedBy: a.User.SystemAccount, UpdatedAt: now, } _ = copier.Copy(&data, &req) @@ -53,7 +53,7 @@ func (m *AlertRulesSvc) Add(req request.AddAlertRules) error { metricConfigId string ) - alertClassSvc := AlertClassSvc{User: m.User} + alertClassSvc := AlertClassSvc{User: a.User} classParentId, err = alertClassSvc.Add(session, request.AddAlertClass{ ClassName: req.ClassParentName, SortOrder: -1, @@ -74,7 +74,7 @@ func (m *AlertRulesSvc) Add(req request.AddAlertRules) error { data.ClassId = classId // 添加指标配置 - metricConfigSvc := MetricConfigSvc{User: m.User} + metricConfigSvc := MetricConfigSvc{User: a.User} _ = copier.Copy(&addMetricConfig, &req) addMetricConfig.SourceFrom = 2 addMetricConfig.MetricName = req.MetricConfigName @@ -97,7 +97,7 @@ func (m *AlertRulesSvc) Add(req request.AddAlertRules) error { return nil } -func (m *AlertRulesSvc) Update(req request.UpdateAlertRules) error { +func (a *AlertRulesSvc) Update(req request.UpdateAlertRules) error { db, err := client.GetDbClient() if err != nil { err = resp.DbConnectError.WithError(err) @@ -105,7 +105,7 @@ func (m *AlertRulesSvc) Update(req request.UpdateAlertRules) error { } now := jsontime.Now() data := entity.AlertRules{ - UpdatedBy: m.User.SystemAccount, + UpdatedBy: a.User.SystemAccount, UpdatedAt: now, } _ = copier.Copy(&data, &req) @@ -134,7 +134,7 @@ func (m *AlertRulesSvc) Update(req request.UpdateAlertRules) error { alertClassItem response.AlertClassItem ) - alertClassSvc := AlertClassSvc{User: m.User} + alertClassSvc := AlertClassSvc{User: a.User} alertClassItem, err = alertClassSvc.GetDataById(request.DetailAlertClass{ClassId: dbAlertRules.ClassId}) if err != nil { return nil, err @@ -155,7 +155,7 @@ func (m *AlertRulesSvc) Update(req request.UpdateAlertRules) error { } // 更新指标配置 - metricConfigSvc := MetricConfigSvc{User: m.User} + metricConfigSvc := MetricConfigSvc{User: a.User} _ = copier.Copy(&updateMetricConfig, &req) updateMetricConfig.SourceFrom = 2 updateMetricConfig.Id = dbAlertRules.MetricConfigId @@ -175,23 +175,25 @@ func (m *AlertRulesSvc) Update(req request.UpdateAlertRules) error { return nil } -func (m *AlertRulesSvc) GetDataById(req request.DetailAlertRules) (resp response.AlertRulesItem, err error) { - db, err := client.GetDbClient() +func (a *AlertRulesSvc) GetDataById(req request.DetailAlertRules) (resp response.AlertRulesItem, err error) { + list, err := a.List(request.ListAlertRules{Id: req.Id}) if err != nil { return } - _, err = db.NewSession().Table(resp.TableName()).Where("id = ?", req.Id).Get(&resp) + if len(list.List) >= 1 { + resp = list.List[0] + } return } -func (m *AlertRulesSvc) List(req request.ListAlertRules) (resp response.AlertRulesList, err error) { +func (a *AlertRulesSvc) List(req request.ListAlertRules) (resp response.AlertRulesList, err error) { db, err := client.GetDbClient() if err != nil { return } session := db.NewSession() defer session.Close() - session.Table(new(entity.AlertRules)).Alias("r").Select("r.*") + session.Table(new(entity.AlertRules)).Alias("r").Select("r.*,acp.class_name class_parent_name,ac.class_name,mc.metric_name metric_config_name") session.Join("LEFT", "metric_config mc", "mc.id = r.metric_config_id") session.Join("LEFT", "alert_class ac", "ac.class_id = r.class_id") session.Join("LEFT", "alert_class acp", "acp.class_id = ac.parent_id") @@ -204,6 +206,12 @@ func (m *AlertRulesSvc) List(req request.ListAlertRules) (resp response.AlertRul if req.IsEnabled > 0 { session.Where("r.is_enabled = ?", req.IsEnabled) } + if req.StartTime != "" { + session.Where("r.created_at >= ?", req.StartTime) + } + if req.EndTime != "" { + session.Where("r.created_at <= ?", req.EndTime) + } if req.Keyword != "" { // 预警对象/预警分类/预警指标 session.Where("r.metric_name LIKE ?", "%"+req.Keyword+"%"). @@ -221,7 +229,7 @@ func (m *AlertRulesSvc) List(req request.ListAlertRules) (resp response.AlertRul return } -func (m *AlertRulesSvc) Delete(ids []string) (err error) { +func (a *AlertRulesSvc) Delete(ids []string) (err error) { db, err := client.GetDbClient() if err != nil { return diff --git a/src/service/prometheus.go b/src/service/prometheus.go index 74f3ad2f89aa70913965643f91c7822daaa7c345..2927be400a4c99db5f2fd4a0e3c7b614a9a76ac7 100644 --- a/src/service/prometheus.go +++ b/src/service/prometheus.go @@ -17,7 +17,7 @@ type PrometheusSvc struct { User entity.SystemUserInfo } -func (m *PrometheusSvc) Label(req request.PrometheusLabel) (resp response.PrometheusList, err error) { +func (p *PrometheusSvc) Label(req request.PrometheusLabel) (resp response.PrometheusList, err error) { var ( prometheusLabel response.PrometheusLabel prometheusSeries response.PrometheusSeries