package v1 import ( "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/controller" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model" mc "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/model/metric" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/errors" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/pkg/request" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/internal/validator" "github.com/gin-gonic/gin" ) // 创建指标规则 func CreateMetricRule(c *gin.Context) { rule := &mc.MetricsRule{} err := validator.CheckPostParams(c, rule) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } queryNo := map[string]interface{}{ "rule_no": rule.RuleNo, } r, _ := rule.Get(queryNo) if r.RuleNo != "" { controller.FailCode(c, errors.InvalidParameter, err, "编号重复!") return } if rule.RuleKey != "" { queryKey := map[string]interface{}{ "rule_key": rule.RuleKey, } rr, _ := rule.Get(queryKey) if rr.RuleKey != "" { controller.FailCode(c, errors.InvalidParameter, err, "KEY值重复!") return } } _, err = rule.Create() if err != nil { controller.FailCode(c, errors.ServerError, err, "数据库错误!") return } controller.Success(c, "") } // 编辑指标规则 func EditMetricRule(c *gin.Context) { rule := &mc.MetricsRule{} err := validator.CheckPostParams(c, rule) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } fields := map[string]interface{}{} fields["id"] = rule.Id oldRule, err := rule.Get(fields) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "无法查找到对象!") return } if rule.RuleNo != oldRule.RuleNo { controller.FailCode(c, errors.InvalidParameter, err, "编号不允许修改!") return } if rule.RuleKey != "" { queryKey := map[string]interface{}{ "rule_key": rule.RuleKey, } rr, _ := rule.Get(queryKey) if rr.RuleKey != "" && rr.RuleKey != oldRule.RuleKey { controller.FailCode(c, errors.InvalidParameter, err, "KEY值重复!") return } } updateColumns := []string{} _, err = rule.Update(updateColumns) if err != nil { controller.FailCode(c, errors.ServerError, err, "数据库错误!") return } controller.Success(c, "") } // 根据编号获取规则 func GetMetricRule(c *gin.Context) { rule := &mc.MetricsRule{} ruleNo := c.Param("ruleNo") fields := map[string]interface{}{} fields["rule_no"] = ruleNo mRule, err := rule.Get(fields) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } controller.Success(c, mRule) } // 根据扩展key获取规则 func GetMetricRuleByKey(c *gin.Context) { rule := &mc.MetricsRule{} ruleKey := c.Param("ruleKey") fields := map[string]interface{}{} fields["rule_key"] = ruleKey mRule, err := rule.Get(fields) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } controller.Success(c, mRule) } type PageBody struct { PageInfo *request.PageInfo `json:"pageInfo" binding:"required"` Keyword string `json:"keyword"` } // 根据扩展key获取规则 func PageMetrics(c *gin.Context) { var pageBody PageBody err := c.ShouldBindJSON(&pageBody) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } rule := &mc.MetricsRule{} fields := map[string]interface{}{} fields["keyword"] = pageBody.Keyword page := &model.Page[mc.MetricsRule]{} page.Covert(pageBody.PageInfo) err = rule.Page(page, fields) if err != nil { controller.FailCode(c, errors.ServerError, err, "内部错误!") return } controller.Success(c, page) } // 删除指标规则 func DeleteMetric(c *gin.Context) { rule := &mc.MetricsRule{} ruleNo := c.Param("ruleNo") fields := map[string]interface{}{} fields["rule_no"] = ruleNo mRule, err := rule.Get(fields) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } mRule.Delete() controller.Success(c, "") } type DeleteBody struct { RuleNos []string `json:"ruleNos" binding:"required"` } // 批量删除指标规则 func DeleteBatchMetric(c *gin.Context) { var deleteBody DeleteBody err := c.ShouldBindJSON(&deleteBody) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "请检查参数!") return } rule := &mc.MetricsRule{} _, err = rule.DeleteBatch(deleteBody.RuleNos) if err != nil { controller.FailCode(c, errors.InvalidParameter, err, "删除失败!") return } controller.Success(c, "删除成功!") }