Browse Source

add:指标预警接口

zqbao 5 months ago
parent
commit
22eed8419a

+ 3 - 3
controllers/edb_monitor/edb_monitor.go

@@ -107,7 +107,7 @@ func (m *EdbMonitorController) Add() {
 		return
 	}
 
-	msg, err := edbmonitor.EdbMonitorInfoSave(req, sysUser.AdminId)
+	msg, err := edbmonitor.SaveEdbMonitorInfo(req, sysUser.AdminId)
 	if err != nil {
 		if msg == "" {
 			msg = "添加失败"
@@ -172,7 +172,7 @@ func (m *EdbMonitorController) Edit() {
 		return
 	}
 
-	msg, err := edbmonitor.EdbMonitorInfoSave(req, sysUser.AdminId)
+	msg, err := edbmonitor.SaveEdbMonitorInfo(req, sysUser.AdminId)
 	if err != nil {
 		if msg == "" {
 			msg = "编辑失败"
@@ -217,7 +217,7 @@ func (m *EdbMonitorController) Delete() {
 		return
 	}
 
-	msg, err := edbmonitor.EdbMonitorInfoDelete(req)
+	msg, err := edbmonitor.DeleteEdbMonitorInfo(req)
 	if err != nil {
 		if msg == "" {
 			msg = "删除失败"

+ 127 - 3
controllers/edb_monitor/edb_monitor_classify.go

@@ -6,9 +6,10 @@ import (
 	"eta/eta_api/models"
 	"eta/eta_api/models/edb_monitor/request"
 	edbmonitor "eta/eta_api/services/edb_monitor"
+	"strings"
 )
 
-type EdbMonitorClassify struct {
+type EdbMonitorClassifyController struct {
 	controllers.BaseAuthController
 }
 
@@ -17,7 +18,7 @@ type EdbMonitorClassify struct {
 // @Description 预警管理分类列表
 // @Success 200 {object} response.EdbMonitorClassifyTree
 // @router /list [get]
-func (c *EdbMonitorClassify) List() {
+func (c *EdbMonitorClassifyController) List() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		c.Data["json"] = br
@@ -52,7 +53,7 @@ func (c *EdbMonitorClassify) List() {
 // @Param   request body request.EdbMonitorSaveRequest  true  "每页数据条数"
 // @Success 200 {object} models.EnglishReportEmailPageListResp
 // @router /classify/add [post]
-func (c *EdbMonitorClassify) Add() {
+func (c *EdbMonitorClassifyController) Add() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		c.Data["json"] = br
@@ -73,7 +74,130 @@ func (c *EdbMonitorClassify) Add() {
 		return
 	}
 
+	req.ClassifyName = strings.TrimSpace(req.ClassifyName)
+	if req.ClassifyName == "" {
+		br.Msg = "分类名称不能为空"
+		return
+	}
+	if req.Level <= 0 || (req.ParentId > 0 && req.RootId <= 0) || req.ClassifyId > 0 {
+		br.Msg = "参数错误"
+		return
+	}
+
+	msg, err := edbmonitor.SaveEdbMonitorClassify(req)
+	if err != nil {
+		if msg == "" {
+			msg = "分类添加失败"
+		}
+		br.Msg = msg
+		br.ErrMsg = err.Error()
+		return
+	}
+
 	br.Msg = "分类添加成功"
 	br.Ret = 200
 	br.Success = true
 }
+
+// Edit
+// @Title 预警管理分类编辑
+// @Description 预警管理分类编辑
+// @Param   request body request.EdbMonitorSaveRequest  true  "每页数据条数"
+// @Success 200 {object} models.EnglishReportEmailPageListResp
+// @router /classify/edit [post]
+func (c *EdbMonitorClassifyController) Edit() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req request.EdbMonitorClassifySaveReq
+	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &req); err != nil {
+		br.Msg = "参数解析失败"
+		br.ErrMsg = err.Error()
+		return
+	}
+
+	if req.ClassifyId <= 0 {
+		br.Msg = "分类不存在,请刷新页面"
+		return
+	}
+	req.ClassifyName = strings.TrimSpace(req.ClassifyName)
+	if req.ClassifyName == "" {
+		br.Msg = "分类名称不能为空"
+		return
+	}
+	if req.Level <= 0 || (req.ParentId > 0 && req.RootId <= 0) {
+		br.Msg = "参数错误"
+		return
+	}
+
+	msg, err := edbmonitor.SaveEdbMonitorClassify(req)
+	if err != nil {
+		if msg == "" {
+			msg = "分类添加失败"
+		}
+		br.Msg = msg
+		br.ErrMsg = err.Error()
+		return
+	}
+
+	br.Msg = "分类添加成功"
+	br.Ret = 200
+	br.Success = true
+}
+
+// Delete
+// @Title 预警管理分类删除
+// @Description 预警管理分类删除
+// @Param   request body request.EdbMonitorSaveRequest  true  "每页数据条数"
+// @Success 200 {object} models.EnglishReportEmailPageListResp
+// @router /classify/delete [post]
+func (c *EdbMonitorClassifyController) Delete() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	var req request.EdbMonitorClassifyDeleteReq
+	if err := json.Unmarshal(c.Ctx.Input.RequestBody, &req); err != nil {
+		br.Msg = "参数解析失败"
+		br.ErrMsg = err.Error()
+		return
+	}
+
+	if req.ClassifyId <= 0 {
+		br.Msg = "分类不存在,请刷新页面"
+		return
+	}
+
+	msg, err := edbmonitor.DeleteEdbMonitorClassify(req)
+	if err != nil {
+		if msg == "" {
+			msg = "分类删除失败"
+		}
+		br.Msg = msg
+		br.ErrMsg = err.Error()
+		return
+	}
+
+	br.Msg = "分类删除成功"
+	br.Ret = 200
+	br.Success = true
+}

+ 10 - 0
models/db.go

@@ -13,6 +13,7 @@ import (
 	future_good2 "eta/eta_api/models/data_manage/future_good"
 	"eta/eta_api/models/data_manage/supply_analysis"
 	"eta/eta_api/models/data_stat"
+	edbmonitor "eta/eta_api/models/edb_monitor"
 	"eta/eta_api/models/eta_trial"
 	"eta/eta_api/models/fe_calendar"
 	"eta/eta_api/models/ppt_english"
@@ -204,6 +205,8 @@ func init() {
 	// 初始化因子指标系列
 	initFactorEdbSeries()
 
+	// 初始化指标监控
+	initEdbMonitor()
 	// 初始化部分数据表变量(直接init会有顺序问题=_=!)
 	afterInitTable()
 }
@@ -636,6 +639,13 @@ func initFactorEdbSeries() {
 	)
 }
 
+func initEdbMonitor() {
+	orm.RegisterModel(
+		new(edbmonitor.EdbMonitorInfo),     // 指标监控表
+		new(edbmonitor.EdbMonitorClassify), // 指标监控日志表
+	)
+}
+
 // afterInitTable
 // @Description: 初始化表结构的的后置操作
 // @author: Roc

+ 21 - 0
models/edb_monitor/edb_monitor.go

@@ -1,6 +1,7 @@
 package edbmonitor
 
 import (
+	"eta/eta_api/utils"
 	"time"
 
 	"github.com/beego/beego/v2/client/orm"
@@ -49,6 +50,16 @@ func DeleteEdbMonitorInfoById(id int) (err error) {
 	return
 }
 
+func DeleteEdbMonitorInfoByIdList(ids []int) (err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := `DELETE FROM edb_monitor_info WHERE edb_monitor_id IN(` + utils.GetOrmInReplace(len(ids)) + `)`
+	_, err = o.Raw(sql, ids).Exec()
+	return
+}
+
 func GetEdbMonitorInfoById(id int) (item *EdbMonitorInfo, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT * FROM edb_monitor_info WHERE edb_monitor_id =?`
@@ -56,6 +67,16 @@ func GetEdbMonitorInfoById(id int) (item *EdbMonitorInfo, err error) {
 	return
 }
 
+func GetEdbMonitorInfoCountByClassifyId(classifyId []int) (count int, err error) {
+	if len(classifyId) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(*) AS count FROM edb_monitor_info WHERE edb_monitor_classify_id IN(` + utils.GetOrmInReplace(len(classifyId)) + `)`
+	err = o.Raw(sql, classifyId).QueryRow(&count)
+	return
+}
+
 func GetEdbMonitorInfoCountByCondition(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT COUNT(*) AS count FROM edb_monitor_info WHERE 1=1 `

+ 85 - 0
models/edb_monitor/edb_monitor_classify.go

@@ -1,6 +1,7 @@
 package edbmonitor
 
 import (
+	"eta/eta_api/utils"
 	"time"
 
 	"github.com/beego/beego/v2/client/orm"
@@ -16,9 +17,93 @@ type EdbMonitorClassify struct {
 	CreateTime   time.Time `description:"创建时间"`
 }
 
+func (e *EdbMonitorClassify) Insert() (id int64, err error) {
+	o := orm.NewOrmUsingDB("data")
+	id, err = o.Insert(e)
+	return
+}
+
+func (e *EdbMonitorClassify) Update(cols []string, classifyId []int) (err error) {
+	tx, err := orm.NewOrmUsingDB("data").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err != nil {
+			tx.Rollback()
+		} else {
+			tx.Commit()
+		}
+	}()
+	_, err = tx.Update(e, cols...)
+	if err != nil {
+		return
+	}
+	if len(classifyId) == 0 {
+		return
+	}
+	sql := `UPDATE edb_monitor_classify SET root_id = ? WHERE classify_id IN (` + utils.GetOrmInReplace(len(classifyId)) + `)`
+	_, err = tx.Raw(sql, e.RootId, classifyId).Exec()
+	if err != nil {
+		return
+	}
+	return
+}
+
+func DeleteEdbMonitorClassifyById(id int) (err error) {
+	o := orm.NewOrmUsingDB("data")
+	_, err = o.Raw("DELETE FROM edb_monitor_classify WHERE classify_id =?", id).Exec()
+	return
+}
+
 func GetEdbMonitorClassifyList() (items []*EdbMonitorClassify, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := "SELECT * FROM edb_monitor_classify"
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+func GetEdbMonitorClassifyById(id int) (item *EdbMonitorClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM edb_monitor_classify WHERE classify_id =?"
+	err = o.Raw(sql, id).QueryRow(&item)
+	return
+}
+
+func GetEdbMonitorClassifyMaxSortByParentId(parentId int) (sort int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT MAX(sort) FROM edb_monitor_classify WHERE parent_id =?"
+	err = o.Raw(sql, parentId).QueryRow(&sort)
+	return
+}
+
+func GetChildEdbMonitorClassifyIdById(id int) (classifyId []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT classify_id FROM edb_monitor_classify WHERE parent_id =?"
+	_, err = o.Raw(sql, id).QueryRows(&classifyId)
+	return
+}
+
+func GetChildEdbMonitorClassifyById(id int) (items []*EdbMonitorClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM edb_monitor_classify WHERE parent_id =?"
+	_, err = o.Raw(sql, id).QueryRows(&items)
+	return
+}
+
+func GetChildEdbMonitorClassifyByRootId(rootId int) (items []*EdbMonitorClassify, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := "SELECT * FROM edb_monitor_classify WHERE root_id =?"
+	_, err = o.Raw(sql, rootId).QueryRows(&items)
+	return
+}
+
+func GetEdbMonitorClassifyCountByIdList(ids []int) (count int, err error) {
+	if len(ids) == 0 {
+		return
+	}
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT COUNT(*) FROM edb_monitor_classify WHERE classify_id IN (` + utils.GetOrmInReplace(len(ids)) + `)`
+	err = o.Raw(sql, ids).QueryRow(&count)
+	return
+}

+ 5 - 0
models/edb_monitor/request/edb_monitor_classify.go

@@ -3,6 +3,11 @@ package request
 type EdbMonitorClassifySaveReq struct {
 	ClassifyId   int
 	ClassifyName string
+	Level        int
 	ParentId     int
 	RootId       int
 }
+
+type EdbMonitorClassifyDeleteReq struct {
+	ClassifyId int
+}

+ 72 - 0
routers/commentsRouter.go

@@ -6469,6 +6469,78 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: `/classify/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/classify/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"],
+        beego.ControllerComments{
+            Method: "Edit",
+            Router: `/classify/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorClassifyController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
+        beego.ControllerComments{
+            Method: "Add",
+            Router: `/add`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
+        beego.ControllerComments{
+            Method: "Delete",
+            Router: `/delete`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
+        beego.ControllerComments{
+            Method: "Edit",
+            Router: `/edit`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/edb_monitor:EdbMonitorController"],
+        beego.ControllerComments{
+            Method: "List",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnPermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnPermissionController"],
         beego.ControllerComments{
             Method: "Add",

+ 1 - 0
routers/router.go

@@ -401,6 +401,7 @@ func init() {
 		web.NSNamespace("/edb_monitor",
 			web.NSInclude(
 				&edb_monitor.EdbMonitorController{},
+				&edb_monitor.EdbMonitorClassifyController{},
 			),
 		),
 	)

+ 2 - 2
services/edb_monitor/edb_monitor.go

@@ -152,7 +152,7 @@ func GetMonitorList(classifyId, level, state, userId string, pageSize, currentIn
 	return
 }
 
-func EdbMonitorInfoSave(req request.EdbMonitorInfoSaveReq, adminId int) (msg string, err error) {
+func SaveEdbMonitorInfo(req request.EdbMonitorInfoSaveReq, adminId int) (msg string, err error) {
 	edb, er := data_manage.GetEdbInfoById(req.EdbInfoId)
 	if er != nil {
 		if er.Error() == utils.ErrNoRow() {
@@ -302,7 +302,7 @@ func cmpEdbMonitorState(twoData []*data_manage.EdbData, monitorType int, monitor
 	}
 }
 
-func EdbMonitorInfoDelete(req request.EdbMonitorInfoDeleteReq) (msg string, err error) {
+func DeleteEdbMonitorInfo(req request.EdbMonitorInfoDeleteReq) (msg string, err error) {
 	err = edbmonitor.DeleteEdbMonitorInfoById(req.EdbMonitorId)
 	if err != nil {
 		msg = "删除失败"

+ 182 - 0
services/edb_monitor/edb_monitor_classify.go

@@ -1,8 +1,13 @@
 package edbmonitor
 
 import (
+	"errors"
 	edbmonitor "eta/eta_api/models/edb_monitor"
+	"eta/eta_api/models/edb_monitor/request"
 	"eta/eta_api/models/edb_monitor/response"
+	"eta/eta_api/utils"
+	"fmt"
+	"time"
 )
 
 func GetEdbMonitorClassifyTree() (resp []*response.EdbMonitorClassifyTree, msg string, err error) {
@@ -15,6 +20,183 @@ func GetEdbMonitorClassifyTree() (resp []*response.EdbMonitorClassifyTree, msg s
 	return
 }
 
+func SaveEdbMonitorClassify(req request.EdbMonitorClassifySaveReq) (msg string, err error) {
+	childClassify, er := edbmonitor.GetChildEdbMonitorClassifyById(req.ParentId)
+	if er != nil {
+		msg = "分类信息保存失败"
+		err = fmt.Errorf("get parent classify err:%w", er)
+		return
+	}
+	var parentId []int
+	if req.ParentId != req.RootId {
+		if req.ParentId > 0 {
+			parentId = append(parentId, req.ParentId)
+		}
+		if req.RootId > 0 {
+			parentId = append(parentId, req.RootId)
+		}
+	} else {
+		if req.ParentId > 0 {
+			parentId = append(parentId, req.ParentId)
+		}
+	}
+	count, er := edbmonitor.GetEdbMonitorClassifyCountByIdList(parentId)
+	if er != nil {
+		msg = "分类信息保存失败"
+		err = fmt.Errorf("get classify count err:%w", er)
+		return
+	}
+	if len(parentId) != count {
+		msg = "父级分类不存在"
+		err = errors.New("parent classify not exist")
+		return
+	}
+
+	if req.ClassifyId > 0 {
+		classifyInfo, er := edbmonitor.GetEdbMonitorClassifyById(req.ClassifyId)
+		if er != nil {
+			if er.Error() == utils.ErrNoRow() {
+				msg = "分类不存在"
+				return
+			}
+			msg = "分类信息保存失败"
+			return
+		}
+		if classifyInfo.Level != req.Level {
+			msg = "分类层级不能修改"
+			return
+		}
+		var updateCols []string
+		if classifyInfo.ClassifyName != req.ClassifyName {
+			classifyInfo.ClassifyName = req.ClassifyName
+			updateCols = append(updateCols, "classify_name")
+		}
+		if classifyInfo.ParentId != req.ParentId {
+			classifyInfo.ParentId = req.ParentId
+			updateCols = append(updateCols, "parent_id")
+
+			maxSort, er := edbmonitor.GetEdbMonitorClassifyMaxSortByParentId(classifyInfo.ParentId)
+			if er != nil {
+				msg = "分类信息保存失败"
+				err = fmt.Errorf("get max sort err:%w", er)
+				return
+			}
+			classifyInfo.Sort = maxSort + 1
+			updateCols = append(updateCols, "sort")
+		}
+
+		var childClassifyIds []int
+		for _, v := range childClassify {
+			if v.ClassifyName == req.ClassifyName {
+				msg = "分类名称重复"
+				err = errors.New("classify name repeat")
+				return
+			} else {
+				childClassifyIds = append(childClassifyIds, v.ClassifyId)
+			}
+		}
+
+		if classifyInfo.RootId != req.RootId {
+			classifyInfo.RootId = req.RootId
+			updateCols = append(updateCols, "root_id")
+
+		}
+		err = classifyInfo.Update(updateCols, childClassifyIds)
+		if err != nil {
+			msg = "分类信息保存失败"
+			return
+		}
+	} else {
+		for _, v := range childClassify {
+			if v.ClassifyName == req.ClassifyName {
+				msg = "分类名称重复"
+				err = errors.New("classify name repeat")
+				return
+			}
+		}
+
+		maxSort, er := edbmonitor.GetEdbMonitorClassifyMaxSortByParentId(req.ParentId)
+		if er != nil {
+			msg = "分类信息保存失败"
+			err = fmt.Errorf("get max sort err:%w", er)
+			return
+		}
+
+		tmp := new(edbmonitor.EdbMonitorClassify)
+		tmp.ClassifyName = req.ClassifyName
+		tmp.ParentId = req.ParentId
+		tmp.RootId = req.RootId
+		tmp.Level = req.Level
+		tmp.Sort = maxSort + 1
+		tmp.CreateTime = time.Now()
+		_, er = tmp.Insert()
+		if er != nil {
+			msg = "分类信息保存失败"
+			err = fmt.Errorf("insert classify err:%w", er)
+			return
+		}
+	}
+
+	return
+}
+
+func DeleteEdbMonitorClassify(req request.EdbMonitorClassifyDeleteReq) (msg string, err error) {
+	classifyInfo, er := edbmonitor.GetEdbMonitorClassifyById(req.ClassifyId)
+	if er != nil {
+		if er.Error() == utils.ErrNoRow() {
+			msg = "分类不存在"
+			return
+		}
+		msg = "分类信息删除失败"
+		return
+	}
+	var classifyIds []int
+	switch classifyInfo.Level {
+	case 1:
+		classifyList, er := edbmonitor.GetChildEdbMonitorClassifyByRootId(classifyInfo.ClassifyId)
+		if er != nil {
+			msg = "分类删除失败"
+			err = fmt.Errorf("get child classify by root err:%w", er)
+			return
+		}
+		classifyIds = append(classifyIds, classifyInfo.ClassifyId)
+		for _, v := range classifyList {
+			classifyIds = append(classifyIds, v.ClassifyId)
+		}
+	case 2:
+		classifyList, er := edbmonitor.GetChildEdbMonitorClassifyById(classifyInfo.ClassifyId)
+		if er != nil {
+			msg = "分类删除失败"
+			err = fmt.Errorf("get child classify err:%w", er)
+			return
+		}
+		var classifyIds []int
+		classifyIds = append(classifyIds, classifyInfo.ClassifyId)
+		for _, v := range classifyList {
+			classifyIds = append(classifyIds, v.ClassifyId)
+		}
+	case 3:
+		classifyIds = append(classifyIds, classifyInfo.ClassifyId)
+	}
+
+	count, er := edbmonitor.GetEdbMonitorInfoCountByClassifyId(classifyIds)
+	if er != nil {
+		msg = "分类删除失败"
+		err = fmt.Errorf("get classify info count err:%w", er)
+		return
+	}
+	if count > 0 {
+		msg = "分类下存在关联预警,不能删除"
+		return
+	}
+	err = edbmonitor.DeleteEdbMonitorInfoByIdList(classifyIds)
+	if err != nil {
+		msg = "分类删除失败"
+		return
+	}
+	return
+}
+
 func generateClassifyTree(classifyList []*edbmonitor.EdbMonitorClassify, parentId int) []*response.EdbMonitorClassifyTree {
 	res := make([]*response.EdbMonitorClassifyTree, 0)
 	for _, v := range classifyList {