177 lines
4.5 KiB
Go
177 lines
4.5 KiB
Go
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, "删除成功!")
|
||
}
|