Browse Source

fix:图库添加只看我的分类筛选

Roc 6 months ago
parent
commit
afe5ef8f9d

+ 24 - 0
controllers/data_manage/chart_classify.go

@@ -251,6 +251,7 @@ func getChartClassifyListForMe(adminInfo system.Admin, resp *data_manage.ChartCl
 // ChartClassifyItems
 // @Title 获取所有图表分类接口-不包含图表
 // @Description 获取所有图表分类接口-不包含图表
+// @Param   IsShowMe   query   bool  true       "是否只看我的,true、false"
 // @Success 200 {object} data_manage.ChartClassifyListResp
 // @router /chart_classify/items [get]
 func (this *ChartClassifyController) ChartClassifyItems() {
@@ -259,6 +260,7 @@ func (this *ChartClassifyController) ChartClassifyItems() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
+	isShowMe, _ := this.GetBool("IsShowMe")
 
 	rootList, err := data_manage.GetChartClassifyByParentId(0, utils.CHART_SOURCE_DEFAULT)
 	if err != nil {
@@ -289,6 +291,28 @@ func (this *ChartClassifyController) ChartClassifyItems() {
 		nodeAll = append(nodeAll, rootNode)
 	}
 
+	if isShowMe {
+		// 自己拥有的分类id列表
+		chartClassifyIdList, err := data_manage.GetChartClassifyIdListByAdminId(this.SysUser.AdminId, utils.CHART_SOURCE_DEFAULT)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+
+		tmpNodeAll := nodeAll
+		nodeAll = make([]*data_manage.ChartClassifyItems, 0)
+		for _, node := range tmpNodeAll {
+			if node.Children == nil || len(node.Children) <= 0 {
+				continue
+			}
+			isSelf := data.RemoveNotChartClassifyItemsMakeTree(node, chartClassifyIdList)
+			if isSelf {
+				nodeAll = append(nodeAll, node)
+			}
+		}
+	}
+
 	language := `CN`
 	// 指标显示的语言
 	{

+ 19 - 0
models/data_manage/chart_classify.go

@@ -463,3 +463,22 @@ func GetChartClassifyAllBySource(source int) (items []*ChartClassifyItems, err e
 	_, err = o.Raw(sql, source).QueryRows(&items)
 	return
 }
+
+// GetChartClassifyIdListByAdminId
+// @Description: 根据用户id和指标类型获取其关联的所有指标分类id列表
+// @author: Roc
+// @datetime 2024-09-11 15:52:48
+// @param adminId int
+// @param source int
+// @return chartClassifyIdList []int
+// @return err error
+func GetChartClassifyIdListByAdminId(adminId, source int) (chartClassifyIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT chart_classify_id FROM chart_info WHERE sys_user_id = ? AND source = ?`
+
+	pars := []interface{}{adminId, source}
+	sql += ` group by chart_classify_id `
+	_, err = o.Raw(sql, pars).QueryRows(&chartClassifyIdList)
+
+	return
+}

+ 24 - 0
services/data/chart_classify.go

@@ -962,3 +962,27 @@ func GetChartClassifyParentRecursive(list []*data_manage.ChartClassifyItems, cla
 	}
 	return res
 }
+
+// RemoveNotChartClassifyItemsMakeTree
+// @Description: 过滤名下没有自己图表的分类,并生成树形结构
+// @author: Roc
+// @datetime 2024-09-11 16:59:39
+// @param node *data_manage.ChartClassifyItems
+// @param selfChartClassifyIdList []int
+// @return isSelf bool
+func RemoveNotChartClassifyItemsMakeTree(node *data_manage.ChartClassifyItems, selfChartClassifyIdList []int) (isSelf bool) {
+	if utils.InArrayByInt(selfChartClassifyIdList, node.ChartClassifyId) {
+		return true
+	}
+
+	childrenList := make([]*data_manage.ChartClassifyItems, 0)
+	for _, child := range node.Children {
+		if tmpIsSelf := RemoveNotChartClassifyItemsMakeTree(child, selfChartClassifyIdList); tmpIsSelf {
+			childrenList = append(childrenList, child)
+			isSelf = tmpIsSelf
+		}
+	}
+	node.Children = childrenList
+
+	return
+}