|
@@ -8,6 +8,7 @@ import (
|
|
|
"eta/eta_api/utils"
|
|
|
"fmt"
|
|
|
"strconv"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -308,6 +309,7 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
|
|
|
}
|
|
|
//查询顶级rootId
|
|
|
rootId := 0
|
|
|
+ levelPath := ""
|
|
|
if parentId > 0 {
|
|
|
parentClassify, tErr := data_manage.GetChartClassifyById(parentId)
|
|
|
if tErr != nil {
|
|
@@ -321,6 +323,7 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
|
|
|
return
|
|
|
}
|
|
|
rootId = parentClassify.RootId
|
|
|
+ levelPath = parentClassify.LevelPath
|
|
|
}
|
|
|
|
|
|
classifyInfo = new(data_manage.ChartClassify)
|
|
@@ -343,15 +346,23 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
+ updateCols := make([]string, 0)
|
|
|
if parentId == 0 { //一级目录的rootId等于自己本身
|
|
|
classifyInfo.RootId = int(newId)
|
|
|
- err = classifyInfo.Update([]string{"RootId"})
|
|
|
- if err != nil {
|
|
|
- errMsg = "更新分类失败"
|
|
|
- return
|
|
|
- }
|
|
|
+ updateCols = append(updateCols, "RootId")
|
|
|
+ }
|
|
|
+ if parentId > 0 {
|
|
|
+ levelPath = fmt.Sprintf("%s%d,", levelPath, newId)
|
|
|
+ } else {
|
|
|
+ levelPath = fmt.Sprintf("%d,", newId)
|
|
|
+ }
|
|
|
+ updateCols = append(updateCols, "LevelPath")
|
|
|
+ classifyInfo.LevelPath = levelPath
|
|
|
+ err = classifyInfo.Update(updateCols)
|
|
|
+ if err != nil {
|
|
|
+ errMsg = "更新分类失败"
|
|
|
+ return
|
|
|
}
|
|
|
-
|
|
|
// 目前只有ETA图库需要继承分类权限
|
|
|
if classifyInfo.Source == utils.CHART_SOURCE_DEFAULT {
|
|
|
go data_manage_permission.InheritParentClassify(5, classifyInfo.Source, classifyInfo.ChartClassifyId, classifyInfo.ParentId, classifyInfo.ChartClassifyName)
|
|
@@ -621,6 +632,7 @@ func moveChartClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify,
|
|
|
// 移动对象为分类, 判断分类是否存在
|
|
|
if chartClassifyInfo != nil {
|
|
|
oldParentId := chartClassifyInfo.ParentId
|
|
|
+ oldLevelPath := chartClassifyInfo.LevelPath
|
|
|
oldLevel := chartClassifyInfo.Level
|
|
|
var classifyIds []int
|
|
|
if oldParentId != parentClassifyId {
|
|
@@ -779,6 +791,15 @@ func moveChartClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ //更新分类的level_path
|
|
|
+ if oldParentId != parentClassifyId {
|
|
|
+ if err = UpdateChartClassifyLevelPathWithChildren(chartClassifyInfo, parentChartClassifyInfo, oldParentId, oldLevelPath); err != nil {
|
|
|
+ errMsg = "移动失败"
|
|
|
+ err = errors.New("更新分类level_path失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
if chartInfo == nil {
|
|
@@ -903,6 +924,33 @@ func moveChartClassify(parentChartClassifyInfo, chartClassifyInfo, prevClassify,
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// 新增内部函数
|
|
|
+func UpdateChartClassifyLevelPathWithChildren(chartClassifyInfo *data_manage.ChartClassify, parentChartClassifyInfo *data_manage.ChartClassify, oldParentId int, oldLevelPath string) error {
|
|
|
+ levelPath := fmt.Sprintf("%s%d,", parentChartClassifyInfo.LevelPath, chartClassifyInfo.ChartClassifyId)
|
|
|
+ chartClassifyInfo.LevelPath = levelPath
|
|
|
+ if err := chartClassifyInfo.Update([]string{"LevelPath"}); err != nil {
|
|
|
+ return fmt.Errorf("修改失败,Err:" + err.Error())
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新子分类的levelpath
|
|
|
+ tmpList, err := data_manage.GetChartClassifyByLevelPath(oldLevelPath)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("保存分类失败,Err:" + err.Error())
|
|
|
+ }
|
|
|
+ // 把原先的父级levePath,替换成最新的父级序列
|
|
|
+ for _, tmp := range tmpList {
|
|
|
+ after, _ := strings.CutPrefix(tmp.LevelPath, oldLevelPath)
|
|
|
+ if after != "" {
|
|
|
+ tmp.LevelPath = levelPath + after
|
|
|
+ tmp.ModifyTime = time.Now()
|
|
|
+ if e := tmp.Update([]string{"LevelPath", "ModifyTime"}); e != nil {
|
|
|
+ return fmt.Errorf("修改子分类,Err:" + e.Error())
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
func GetChildChartClassifyByClassifyId(targetClassifyId int) (targetList []*data_manage.ChartClassifyIdItems, err error, errMsg string) {
|
|
|
//判断是否是挂在顶级目录下
|
|
|
targetClassify, err := data_manage.GetChartClassifyById(targetClassifyId)
|
|
@@ -1006,11 +1054,10 @@ func EditChartClassifyV2(chartClassifyId, parentId, source int, chartClassifyNam
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ var parentClassifyInfo *data_manage.ChartClassify
|
|
|
if parentId != classifyInfo.ParentId {
|
|
|
- parentClassifyInfo, e := data_manage.GetChartClassifyById(parentId)
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
+ parentClassifyInfo, err= data_manage.GetChartClassifyById(parentId)
|
|
|
+ if err != nil {
|
|
|
return
|
|
|
}
|
|
|
if classifyInfo.Level != parentClassifyInfo.Level + 1 {
|
|
@@ -1029,7 +1076,8 @@ func EditChartClassifyV2(chartClassifyId, parentId, source int, chartClassifyNam
|
|
|
|
|
|
// 需要变更的字段
|
|
|
updateCols := make([]string, 0)
|
|
|
-
|
|
|
+ oldParentId := classifyInfo.ParentId
|
|
|
+ oldLevelPath := classifyInfo.LevelPath
|
|
|
if parentId != classifyInfo.ParentId {
|
|
|
classifyInfo.ParentId = parentId
|
|
|
classifyInfo.ModifyTime = time.Now()
|
|
@@ -1082,6 +1130,14 @@ func EditChartClassifyV2(chartClassifyId, parentId, source int, chartClassifyNam
|
|
|
err = classifyInfo.Update(updateCols)
|
|
|
}
|
|
|
|
|
|
+ if oldParentId != parentId {
|
|
|
+ if err = UpdateChartClassifyLevelPathWithChildren(classifyInfo, parentClassifyInfo, oldParentId, oldLevelPath); err != nil {
|
|
|
+ errMsg = "修改分类失败"
|
|
|
+ err = errors.New("更新分类level_path失败,Err:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return
|
|
|
}
|
|
|
|