Parcourir la source

批量增加分类时,添加rootId

xyxie il y a 1 an
Parent
commit
5f91bffd14
1 fichiers modifiés avec 42 ajouts et 3 suppressions
  1. 42 3
      models/edb_classify.go

+ 42 - 3
models/edb_classify.go

@@ -1,6 +1,7 @@
 package models
 
 import (
+	"errors"
 	"eta/eta_index_lib/utils"
 	"github.com/beego/beego/v2/client/orm"
 	"strconv"
@@ -12,6 +13,7 @@ type EdbClassify struct {
 	ClassifyType    uint8     `description:"分类类型,0:普通指标分类,1:预测指标分类"`
 	ClassifyName    string    `description:"分类名称"`
 	ParentId        int       `description:"父级id"`
+	RootId          int       `description:"顶级id"`
 	HasData         int       `description:"是否含有指标数据"`
 	CreateTime      time.Time `description:"创建时间"`
 	ModifyTime      time.Time `description:"修改时间"`
@@ -28,6 +30,13 @@ func AddEdbClassify(item *EdbClassify) (lastId int64, err error) {
 	return
 }
 
+// Update 更新分类基础信息
+func (edbClassify *EdbClassify) Update(cols []string) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Update(edbClassify, cols...)
+	return
+}
+
 func GetEdbClassifyById(classifyId int) (item *EdbClassify, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM edb_classify WHERE classify_id=? `
@@ -107,14 +116,34 @@ func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint
 	if isAdd {
 		sysUserIdInt, _ := strconv.Atoi(sysUserId)
 		//获取该层级下最大的排序数
-		maxSort, err := GetEdbAndClassifyMaxSort(parentId, classifyType)
-
+		maxSort, e := GetEdbAndClassifyMaxSort(parentId, classifyType)
+		if e != nil {
+			errMsg = "查询分类信息出错" + e.Error()
+			err = errors.New(errMsg)
+			return
+		}
+		rootId := 0
+		if parentId > 0 {
+			parentClassify, tErr := GetEdbClassifyById(parentId)
+			if tErr != nil {
+				if tErr.Error() == utils.ErrNoRow() {
+					errMsg = "父级分类不存在"
+					err = errors.New(errMsg)
+					return
+				}
+				errMsg = "获取失败"
+				err = errors.New("获取分类信息失败,Err:" + tErr.Error())
+				return
+			}
+			rootId = parentClassify.RootId
+		}
 		timestamp := strconv.FormatInt(time.Now().UnixNano(), 10)
 		classifyInfo = &EdbClassify{
 			//ClassifyId:      0,
 			ClassifyType:    classifyType,
 			ClassifyName:    classifyName,
 			ParentId:        parentId,
+			RootId:          rootId,
 			HasData:         0,
 			CreateTime:      time.Now(),
 			ModifyTime:      time.Now(),
@@ -124,11 +153,21 @@ func SaveEdbClassify(classifyName string, parentId, level int, classifyType uint
 			UniqueCode:      utils.MD5(utils.DATA_PREFIX + "_" + timestamp),
 			Sort:            maxSort + 1,
 		}
-		classifyId, err := AddEdbClassify(classifyInfo)
+		var classifyId int64
+		classifyId, err = AddEdbClassify(classifyInfo)
 		if err != nil {
 			errMsg = "保存分类失败"
+			return
 		}
 		classifyInfo.ClassifyId = int(classifyId)
+		if parentId == 0 { //一级目录的rootId等于自己本身
+			classifyInfo.RootId = int(classifyId)
+			err = classifyInfo.Update([]string{"RootId"})
+			if err != nil {
+				errMsg = "更新分类失败"
+				return
+			}
+		}
 	}
 	return
 }