|
@@ -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 {
|