|
@@ -5,9 +5,11 @@ import (
|
|
|
"eta/eta_mobile/models/data_manage"
|
|
|
"eta/eta_mobile/models/system"
|
|
|
"eta/eta_mobile/services/data/data_manage_permission"
|
|
|
+ "eta/eta_mobile/services/eta_forum"
|
|
|
"eta/eta_mobile/utils"
|
|
|
"fmt"
|
|
|
"strconv"
|
|
|
+ "strings"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
@@ -239,7 +241,7 @@ func HandleNoPermissionChart(allNodes []*data_manage.ChartClassifyItems, noPermi
|
|
|
func AddChartClassify(chartClassifyName string, parentId, level, source int, lang string, sysUser *system.Admin) (classifyInfo *data_manage.ChartClassify, err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
errMsg = "保存分类失败"
|
|
|
-
|
|
|
+ isSelected := 0
|
|
|
// 校验分类名称相同的数量
|
|
|
{
|
|
|
var count int
|
|
@@ -263,7 +265,25 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
|
|
|
|
|
|
//获取该层级下最大的排序数
|
|
|
maxSort, err := data_manage.GetChartClassifyMaxSort(parentId, source)
|
|
|
-
|
|
|
+//查询顶级rootId
|
|
|
+ rootId := 0
|
|
|
+ levelPath := ""
|
|
|
+ if parentId > 0 {
|
|
|
+ parentClassify, tErr := data_manage.GetChartClassifyById(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
|
|
|
+ levelPath = parentClassify.LevelPath
|
|
|
+ isSelected = parentClassify.IsSelected
|
|
|
+ }
|
|
|
classifyInfo = new(data_manage.ChartClassify)
|
|
|
classifyInfo.ParentId = parentId
|
|
|
classifyInfo.ChartClassifyName = chartClassifyName
|
|
@@ -278,15 +298,35 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
|
|
|
classifyInfo.UniqueCode = utils.MD5(utils.DATA_PREFIX + "_" + timestamp)
|
|
|
classifyInfo.Sort = maxSort + 1
|
|
|
classifyInfo.Source = source
|
|
|
-
|
|
|
- _, err = data_manage.AddChartClassify(classifyInfo)
|
|
|
+ classifyInfo.RootId = rootId
|
|
|
+ classifyInfo.IsSelected = isSelected
|
|
|
+ newId, err := data_manage.AddChartClassify(classifyInfo)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
+ updateCols := make([]string, 0)
|
|
|
+ if parentId == 0 { //一级目录的rootId等于自己本身
|
|
|
+ classifyInfo.RootId = int(newId)
|
|
|
+ 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)
|
|
|
+ if isSelected == utils.ChartClassifyIsSelected { // 如果分类设置为精选资源,则需要同步到ETA资源库
|
|
|
+ go eta_forum.ChartClassifySave(classifyInfo.ChartClassifyId)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return
|
|
@@ -308,13 +348,12 @@ func AddChartClassify(chartClassifyName string, parentId, level, source int, lan
|
|
|
func EditChartClassify(chartClassifyId, source int, chartClassifyName, lang string, sysUser *system.Admin) (classifyInfo *data_manage.ChartClassify, err error, errMsg string, isSendEmail bool) {
|
|
|
isSendEmail = true
|
|
|
errMsg = "保存失败"
|
|
|
-
|
|
|
+
|
|
|
// 获取分类信息
|
|
|
classifyInfo, err = data_manage.GetChartClassifyById(chartClassifyId)
|
|
|
if err != nil {
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
// 分类来源校验
|
|
|
if classifyInfo.Source != source {
|
|
|
errMsg = "图表分类异常"
|
|
@@ -422,3 +461,57 @@ func GetChartClassifyParentRecursive(list []*data_manage.ChartClassifyItems, cla
|
|
|
}
|
|
|
return res
|
|
|
}
|
|
|
+
|
|
|
+// 新增处理子分类精选状态的函数
|
|
|
+func UpdateChildClassifySelection(classifyInfo *data_manage.ChartClassify, parentClassifyInfo *data_manage.ChartClassify, oldSelected int) error {
|
|
|
+ // 处理一级目录
|
|
|
+ if classifyInfo.ParentId == 0 {
|
|
|
+ if oldSelected != classifyInfo.IsSelected {
|
|
|
+ return data_manage.UpdateChartClassifyIsSelected(
|
|
|
+ classifyInfo.Source,
|
|
|
+ classifyInfo.IsSelected,
|
|
|
+ classifyInfo.LevelPath,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+ }else {
|
|
|
+ // 处理二级及以上目录
|
|
|
+ if classifyInfo.IsSelected != parentClassifyInfo.IsSelected {
|
|
|
+ return data_manage.UpdateChartClassifyIsSelected(
|
|
|
+ classifyInfo.Source,
|
|
|
+ parentClassifyInfo.IsSelected,
|
|
|
+ classifyInfo.LevelPath,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+// 新增内部函数
|
|
|
+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
|
|
|
+}
|