Browse Source

fix:只能筛选自己的分类

Roc 3 months ago
parent
commit
d669aa5481

+ 2 - 2
controllers/data_manage/data_manage_permission/data_move.go

@@ -46,7 +46,7 @@ func (c *DataMangePermissionController) EdbChartClassifyList() {
 		return
 	}
 
-	list, err := data_manage_permission.GetEdbChartClassifyList(source, subSource)
+	list, err := data_manage_permission.GetEdbChartClassifyList(source, subSource, c.SysUser.AdminId)
 	if err != nil {
 		//br.Success = true
 		br.Msg = "获取失败"
@@ -96,7 +96,7 @@ func (c *DataMangePermissionController) SecretEdbChartClassifyList() {
 		return
 	}
 
-	resp, err := data_manage_permission.GetEdbChartClassifyList(source, subSource)
+	resp, err := data_manage_permission.GetEdbChartClassifyList(source, subSource, c.SysUser.AdminId)
 	if err != nil {
 		//br.Success = true
 		br.Msg = "获取失败"

+ 15 - 8
controllers/data_manage/edb_classify.go

@@ -244,7 +244,7 @@ func (this *EdbClassifyController) AddEdbClassify() {
 	}
 
 	//添加指标
-	_, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, classifyType, this.SysUser.AdminId, this.SysUser.AdminName, this.Lang)
+	_, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, classifyType, this.SysUser.AdminId, this.SysUser.RealName, this.Lang)
 	if errMsg != `` {
 		br.Msg = errMsg
 		br.ErrMsg = errMsg
@@ -1070,13 +1070,14 @@ func (this *EdbClassifyController) SimpleList() {
 	// 如果是 子级分类,查询该子级分类的下一级分类和指标信息
 	// 增加标识判断是文件夹还是指标列表
 	parentId, _ := this.GetInt("ParentId")
-	isOnlyMe, _ := this.GetBool("IsOnlyMe")
 	// 如果选择了只看我的,那么只查询归属于我的账号
-	sysUserId := 0
-	if isOnlyMe {
-		sysUserId = this.SysUser.AdminId
+	sysUserId := this.SysUser.AdminId
+
+	// 如果是数据查看,那么就看所有的指标和分类
+	if classifyType == utils.EdbClassifyTypeBase {
+		sysUserId = 0
 	}
-	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, int8(classifyType), this.SysUser.AdminId)
+	rootList, err := data_manage.GetEdbClassifyByParentId(parentId, int8(classifyType), sysUserId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -1238,10 +1239,16 @@ func (this *EdbClassifyController) ClassifyTree() {
 	//	edbType = utils.EdbTypeCalculate
 	//}
 
+	sysUserId := this.SysUser.AdminId
+	// 基础指标(数据查看)默认是所有分类
+	if classifyType == utils.EdbClassifyTypeBase {
+		sysUserId = 0
+	}
+
 	allList := make([]*data_manage.EdbClassifyItems, 0)
 	if classifyType == utils.EdbClassifyTypeOrigin {
 		// 基础指标+计算指标
-		list, e := data_manage.GetEdbClassifyByClassifyTypes([]int{utils.EdbClassifyTypeBase, utils.EdbClassifyTypeCalculate})
+		list, e := data_manage.GetEdbClassifyByClassifyTypes([]int{utils.EdbClassifyTypeBase, utils.EdbClassifyTypeCalculate}, sysUserId)
 		if e != nil && !utils.IsErrNoRow(e) {
 			br.Msg = "获取失败"
 			br.ErrMsg = fmt.Sprintf("获取分类失败, %v", e)
@@ -1250,7 +1257,7 @@ func (this *EdbClassifyController) ClassifyTree() {
 		allList = list
 	} else {
 		// 单一类型
-		list, err := data_manage.GetAllEdbClassifyByType(classifyType)
+		list, err := data_manage.GetAllEdbClassifyByType(classifyType, sysUserId)
 		if err != nil && !utils.IsErrNoRow(err) {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取数据失败,Err:" + err.Error()

+ 2 - 2
controllers/data_manage/predict_edb_classify.go

@@ -211,7 +211,7 @@ func (this *PredictEdbClassifyController) Add() {
 	}
 
 	// 添加指标分类
-	_, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, 1, this.SysUser.AdminId, this.SysUser.AdminName, this.Lang)
+	_, err, errMsg := data.AddEdbClassify(req.ClassifyName, req.ParentId, req.Level, 1, this.SysUser.AdminId, this.SysUser.RealName, this.Lang)
 	if errMsg != `` {
 		br.Msg = errMsg
 		br.ErrMsg = errMsg
@@ -832,7 +832,7 @@ func (this *PredictEdbClassifyController) ClassifyTree() {
 		this.ServeJSON()
 	}()
 
-	allList, err := data_manage.GetPredictEdbClassifyAll()
+	allList, err := data_manage.GetAllEdbClassifyByType(utils.EdbClassifyTypePredict, this.SysUser.AdminId)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()

+ 17 - 9
controllers/fix.go

@@ -22,9 +22,11 @@ func init() {
 	// ### 2、再修复个人分类、删除不存在指标的分类
 	// ### 2.1 数据加工
 	//initFixSelfClassify(utils.EdbClassifyTypeCalculate)
-
-	// ### 2.2 衍生指标
+	//
+	//// ### 2.2 衍生指标
 	//initFixSelfClassify(utils.EdbClassifyTypePredict)
+	//
+	//fmt.Println("修复完成")
 }
 
 // initFixClassifyPath
@@ -33,7 +35,7 @@ func init() {
 // @datetime 2024-11-26 15:40:57
 func initFixClassifyPath() {
 	allList := make([]*data_manage.EdbClassifyItems, 0)
-	allList, e := data_manage.GetEdbClassifyByClassifyTypes([]int{utils.EdbClassifyTypeBase, utils.EdbClassifyTypePredict, utils.EdbClassifyTypeCalculate})
+	allList, e := data_manage.GetEdbClassifyByClassifyTypes([]int{utils.EdbClassifyTypeBase, utils.EdbClassifyTypePredict, utils.EdbClassifyTypeCalculate}, 0)
 	if e != nil {
 		fmt.Println("获取分类失败", e)
 		return
@@ -104,7 +106,7 @@ func initFixSelfClassify(classifyType int) {
 	}
 
 	// 获取所有数据加工的分类
-	classifyList, err := data_manage.GetAllEdbClassifyByType(classifyType)
+	classifyList, err := data_manage.GetAllEdbClassifyByType(classifyType, 0)
 	if err != nil {
 		fmt.Println("获取数据加工分类失败", err.Error())
 		return
@@ -216,7 +218,7 @@ func deleteNullClassify(classifyType int) {
 	}
 
 	// 获取所有数据加工的分类
-	classifyList, err := data_manage.GetAllEdbClassifyByType(classifyType)
+	classifyList, err := data_manage.GetAllEdbClassifyByType(classifyType, 0)
 	if err != nil {
 		fmt.Println("获取数据加工分类失败", err.Error())
 		return
@@ -313,15 +315,21 @@ func createNewClassify(userId, parentId, rootId, level int, sysUserName, parentC
 		fmt.Println("创建分类失败:", err.Error())
 		return
 	}
+
+	updateCols := []string{"ClassifyIdPath"}
 	// 更改分类id完整路径path
 	classifyInfo.ClassifyIdPath = fmt.Sprint(classifyIdPath, classifyInfo.ClassifyId)
-	_ = classifyInfo.Update([]string{"ClassifyIdPath"})
-
-	classifyRelationMap[node.ClassifyId] = classifyInfo.ClassifyId
 
 	if rootId <= 0 {
 		rootId = classifyInfo.ClassifyId
+		classifyInfo.RootId = classifyInfo.ClassifyId
+		updateCols = append(updateCols, "RootId")
 	}
+
+	_ = classifyInfo.Update(updateCols)
+
+	classifyRelationMap[node.ClassifyId] = classifyInfo.ClassifyId
+
 	level = classifyInfo.Level
 
 	if node.Children == nil {
@@ -331,7 +339,7 @@ func createNewClassify(userId, parentId, rootId, level int, sysUserName, parentC
 		return
 	}
 	for _, child := range node.Children {
-		createNewClassify(userId, parentId, rootId, level, sysUserName, classifyNamePath, classifyIdPath, child, classifyRelationMap)
+		createNewClassify(userId, classifyInfo.ClassifyId, rootId, level, sysUserName, classifyNamePath, classifyInfo.ClassifyIdPath, child, classifyRelationMap)
 	}
 
 	return

+ 29 - 5
models/data_manage/edb_classify.go

@@ -196,7 +196,7 @@ func GetAllEdbClassify() (items []*EdbClassifyItems, err error) {
 }
 
 // GetPredictEdbClassifyAll 获取预测指标的分类列表
-func GetPredictEdbClassifyAll() (items []*EdbClassifyItems, err error) {
+func GetPredictEdbClassifyAll(sysUserId int) (items []*EdbClassifyItems, err error) {
 	o := global.DmSQL["data"]
 	sql := ` SELECT * FROM edb_classify WHERE classify_type = 1  order by sort asc,classify_id asc`
 	err = o.Raw(sql).Scan(&items).Error
@@ -205,9 +205,13 @@ func GetPredictEdbClassifyAll() (items []*EdbClassifyItems, err error) {
 }
 
 // GetAllEdbClassifyByType 根据类型获取分类列表
-func GetAllEdbClassifyByType(classifyType int) (items []*EdbClassifyItems, err error) {
+func GetAllEdbClassifyByType(classifyType, sysUserId int) (items []*EdbClassifyItems, err error) {
 	o := global.DmSQL["data"]
-	sql := ` SELECT * FROM edb_classify WHERE classify_type = ? order by sort ASC,classify_id ASC`
+	sql := ` SELECT * FROM edb_classify WHERE classify_type = ?`
+	if sysUserId > 0 {
+		sql += fmt.Sprintf(` AND sys_user_id = %d `, sysUserId)
+	}
+	sql += ` order by sort ASC,classify_id ASC `
 	err = o.Raw(sql, classifyType).Scan(&items).Error
 
 	return
@@ -557,12 +561,18 @@ func GetIsJoinPermissionEdbClassifyIdList(classifyType int) (list []int, err err
 }
 
 // GetEdbClassifyByClassifyTypes 根据类型IDs获取分类
-func GetEdbClassifyByClassifyTypes(classifyTypes []int) (items []*EdbClassifyItems, err error) {
+func GetEdbClassifyByClassifyTypes(classifyTypes []int, sysUserId int) (items []*EdbClassifyItems, err error) {
 	if len(classifyTypes) == 0 {
 		return
 	}
 	o := global.DmSQL["data"]
-	sql := `SELECT * FROM edb_classify WHERE classify_type IN (?) ORDER BY classify_type ASC, sort ASC, classify_id ASC`
+	sql := `SELECT * FROM edb_classify WHERE classify_type IN (?) `
+
+	// 指定人
+	if sysUserId > 0 {
+		sql += ` AND sys_user_id = ? `
+	}
+	sql += ` ORDER BY classify_type ASC, sort ASC, classify_id ASC `
 	err = o.Raw(sql, classifyTypes).Scan(&items).Error
 	return
 }
@@ -651,3 +661,17 @@ func DelEdbClassifyByIdList(idList []int) (err error) {
 
 	return
 }
+
+func GetChildEdbClassifyListByParentId(classifyIdPath, orderStr string) (items []*EdbClassifyItems, err error) {
+	o := global.DmSQL["data"]
+	sql := ` SELECT * FROM edb_classify WHERE classify_id_path like ? `
+	if orderStr != "" {
+		sql += orderStr
+	} else {
+		sql += ` order by level desc, sort asc, classify_id asc`
+	}
+
+	err = o.Raw(sql, classifyIdPath).Scan(&items).Error
+
+	return
+}

+ 6 - 3
services/data/data_manage_permission/data_move.go

@@ -24,7 +24,7 @@ import (
 // @param subSource int
 // @return resp data_manage.EdbChartClassifyResp
 // @return err error
-func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartClassifyResp, err error) {
+func GetEdbChartClassifyList(source, subSource, sysUserId int) (resp data_manage.EdbChartClassifyResp, err error) {
 	switch source {
 	case 1: //手工数据指标
 		list, e := models.GetEdbdataClassify(0)
@@ -56,8 +56,11 @@ func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartCl
 		if source == 7 {
 			classifyType = utils.EdbClassifyTypeCalculate
 		}
+		if classifyType == utils.EdbClassifyTypeBase {
+			sysUserId = 0
+		}
 		// 考虑到后面可以会迭代到10层, 这里直接用递归处理
-		classifyAll, e := data_manage.GetAllEdbClassifyByType(classifyType)
+		classifyAll, e := data_manage.GetAllEdbClassifyByType(classifyType, sysUserId)
 		if e != nil && !utils.IsErrNoRow(e) {
 			err = e
 			return
@@ -67,7 +70,7 @@ func GetEdbChartClassifyList(source, subSource int) (resp data_manage.EdbChartCl
 	case 4:
 		//ETA预测指标
 		// 考虑到后面可以会迭代到10层, 这里直接用递归
-		classifyAll, e := data_manage.GetAllEdbClassifyByType(1)
+		classifyAll, e := data_manage.GetAllEdbClassifyByType(1, sysUserId)
 		if e != nil && !utils.IsErrNoRow(e) {
 			err = e
 			return

+ 28 - 0
services/data/edb_classify.go

@@ -1601,3 +1601,31 @@ func GetEdbClassifyMaxSort(parentId int, classifyType uint8) (maxSort int, err e
 	}
 	return
 }
+
+// GetAllChildClassifyByParentId
+// @Description: 根据上级id获取所有的下级id
+// @author: Roc
+// @datetime 2024-12-02 15:14:13
+// @param parentId int
+// @return targetList []*data_manage.EdbClassifyItems
+// @return err error
+// @return errMsg string
+func GetAllChildClassifyByParentId(parentId int) (targetList []*data_manage.EdbClassifyItems, err error, errMsg string) {
+	//判断是否是挂在顶级目录下
+	parentClassify, err := data_manage.GetEdbClassifyById(parentId)
+	if err != nil {
+		if utils.IsErrNoRow(err) {
+			errMsg = "当前分类不存在"
+			err = errors.New(errMsg)
+			return
+		}
+		errMsg = "获取失败"
+		err = errors.New("获取分类信息失败,Err:" + err.Error())
+		return
+	}
+	orderStr := ` order by level asc, sort asc, classify_id asc`
+
+	targetList, err = data_manage.GetChildEdbClassifyListByParentId(fmt.Sprint(parentClassify.ClassifyIdPath, ",%"), orderStr)
+
+	return
+}