Browse Source

fix:图表权限

Roc 11 months ago
parent
commit
dada69b4f2

+ 5 - 5
controllers/data_manage/chart_classify.go

@@ -96,7 +96,7 @@ func (this *ChartClassifyController) ChartClassifyListV2() {
 			return
 		}
 		// 移除没有权限的图表
-		allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap)
+		allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
 		resp.AllNodes = allNodes
 
 		br.Ret = 200
@@ -115,7 +115,7 @@ func (this *ChartClassifyController) ChartClassifyListV2() {
 				err := json.Unmarshal(redisData, &resp)
 				if err == nil && resp != nil {
 					// 移除没有权限的图表
-					allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap)
+					allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
 					resp.AllNodes = allNodes
 
 					br.Ret = 200
@@ -191,7 +191,7 @@ func (this *ChartClassifyController) ChartClassifyListV2() {
 	}
 
 	// 移除没有权限的图表
-	allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap)
+	allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
 	resp.AllNodes = allNodes
 
 	br.Ret = 200
@@ -1050,7 +1050,7 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 			return
 		}
 		// 移除没有权限的图表
-		allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap)
+		allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
 		resp.AllNodes = allNodes
 
 		br.Ret = 200
@@ -1068,7 +1068,7 @@ func (this *ChartClassifyController) ChartClassifyChartListV2() {
 		return
 	}
 	// 移除没有权限的图表
-	allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap)
+	allNodes := data.HandleNoPermissionChart(allChartInfo, noPermissionChartIdMap, this.SysUser.AdminId)
 
 	for k, item := range allNodes {
 		item.Button = data.GetChartOpButton(this.SysUser, item.SysUserId)

+ 70 - 3
controllers/data_manage/chart_info.go

@@ -1687,7 +1687,7 @@ func (this *ChartInfoController) ChartInfoSearch() {
 		return
 	}
 	keyWord := this.GetString("KeyWord")
-	searchList := make([]*data_manage.ChartInfo, 0)
+	searchList := make([]data_manage.ChartInfoMore, 0)
 	//var err error
 	//if KeyWord == "" {
 	//	searchList, err = data_manage.ChartInfoSearchByKeyWord(KeyWord)
@@ -1728,15 +1728,53 @@ func (this *ChartInfoController) ChartInfoSearch() {
 		}
 		for _, nv := range newSearchList {
 			if _, ok := existMap[nv.ChartInfoId]; !ok {
-				searchList = append(searchList, nv)
+				searchList = append(searchList, data_manage.ChartInfoMore{
+					ChartInfo: *nv,
+				})
 			}
 			existMap[nv.ChartInfoId] = nv.ChartName
 		}
 	}
 
 	if searchList == nil {
-		searchList = make([]*data_manage.ChartInfo, 0)
+		searchList = make([]data_manage.ChartInfoMore, 0)
 	}
+
+	// 数据权限
+	if len(searchList) > 0 {
+		// 涉及分类id
+		classifyIdList := make([]int, 0)
+		for _, v := range searchList {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
+		}
+
+		// 图表分类
+		chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
+			return
+		}
+
+		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range chartClassifyList {
+			chartClassifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权图表和分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "已授权图表和分类id失败,Err:" + err.Error()
+			return
+		}
+
+		// 权限判断
+		for k, v := range searchList {
+			searchList[k].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, v.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+		}
+	}
+
 	//新增搜索词记录
 	{
 		searchKeyword := new(data_manage.SearchKeyword)
@@ -1824,10 +1862,14 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 
 	finalList := make([]*data_manage.ChartInfoMore, 0)
 	if len(searchList) > 0 {
+		// 涉及分类id
+		classifyIdList := make([]int, 0)
+
 		chartInfoIds := ""
 		chartEdbMap := make(map[int][]*data_manage.ChartEdbInfoMapping)
 		for _, v := range searchList {
 			chartInfoIds += strconv.Itoa(v.ChartInfoId) + ","
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
 		}
 		if chartInfoIds != "" {
 			chartInfoIds = strings.Trim(chartInfoIds, ",")
@@ -1843,6 +1885,27 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 			}
 		}
 
+		// 图表分类
+		chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
+			return
+		}
+
+		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range chartClassifyList {
+			chartClassifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权图表和分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "已授权图表和分类id失败,Err:" + err.Error()
+			return
+		}
+
 		for _, v := range searchList {
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
@@ -1850,6 +1913,10 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 			if edbTmpList, ok := chartEdbMap[v.ChartInfoId]; ok {
 				tmp.IsEnChart = data.CheckIsEnChart(v.ChartNameEn, edbTmpList, v.Source, v.ChartType)
 			}
+
+			// 图表权限
+			tmp.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, v.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+
 			finalList = append(finalList, tmp)
 		}
 	}

+ 1 - 1
controllers/data_manage/correlation/correlation_chart_classify.go

@@ -104,7 +104,7 @@ func (this *CorrelationChartClassifyController) ChartClassifyList() {
 	}
 
 	// 移除没有权限的图表
-	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap)
+	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap, this.SysUser.AdminId)
 	resp.AllNodes = allNodes
 
 	br.Ret = 200

+ 2 - 1
controllers/data_manage/cross_variety/classify.go

@@ -1,5 +1,6 @@
 package cross_variety
 
+import "C"
 import (
 	"encoding/json"
 	"eta/eta_api/controllers"
@@ -95,7 +96,7 @@ func (c *ClassifyController) List() {
 	}
 
 	// 移除没有权限的图表
-	allNodes = data.HandleNoPermissionChart(allNodes, noPermissionChartIdMap)
+	allNodes = data.HandleNoPermissionChart(allNodes, noPermissionChartIdMap, c.SysUser.AdminId)
 	resp.AllNodes = allNodes
 
 	br.Ret = 200

+ 2 - 2
controllers/data_manage/future_good/future_good_chart_classify.go

@@ -56,7 +56,7 @@ func (this *FutureGoodChartClassifyController) ChartClassifyList() {
 			return
 		}
 		// 移除没有权限的图表
-		allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap)
+		allNodes := data.HandleNoPermissionChart(resp.AllNodes, noPermissionChartIdMap, this.SysUser.AdminId)
 		resp.AllNodes = allNodes
 
 		br.Ret = 200
@@ -97,7 +97,7 @@ func (this *FutureGoodChartClassifyController) ChartClassifyList() {
 	}
 
 	// 移除没有权限的图表
-	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap)
+	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap, this.SysUser.AdminId)
 	resp.AllNodes = allNodes
 
 	br.Ret = 200

+ 1 - 1
controllers/data_manage/line_equation/line_chart_classify.go

@@ -101,7 +101,7 @@ func (this *LineEquationChartClassifyController) ChartClassifyList() {
 	}
 
 	// 移除没有权限的图表
-	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap)
+	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap, this.SysUser.AdminId)
 	resp.AllNodes = allNodes
 
 	br.Ret = 200

+ 1 - 1
controllers/data_manage/line_feature/classify.go

@@ -101,7 +101,7 @@ func (this *LineFeaturesChartClassifyController) ChartClassifyList() {
 	}
 
 	// 移除没有权限的图表
-	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap)
+	allNodes := data.HandleNoPermissionChart(rootList, noPermissionChartIdMap, this.SysUser.AdminId)
 	resp.AllNodes = allNodes
 
 	br.Ret = 200

+ 2 - 1
models/data_manage/chart_info.go

@@ -59,7 +59,8 @@ type ChartInfo struct {
 
 type ChartInfoMore struct {
 	ChartInfo
-	IsEnChart bool `description:"是否展示英文标识"`
+	IsEnChart     bool `description:"是否展示英文标识"`
+	HaveOperaAuth bool `description:"是否有数据权限,默认:false"`
 }
 
 func AddChartInfo(item *ChartInfo) (lastId int64, err error) {

+ 37 - 1
services/data/chart_classify.go

@@ -153,7 +153,9 @@ func GetChartOpButton(sysUser *system.Admin, belongUserId int) (button data_mana
 }
 
 // HandleNoPermissionChart 图表列表返回,将没有权限的图表移除
-func HandleNoPermissionChart(allNodes []*data_manage.ChartClassifyItems, noPermissionChartIdMap map[int]bool) (newAllNodes []*data_manage.ChartClassifyItems) {
+func HandleNoPermissionChart(allNodes []*data_manage.ChartClassifyItems, noPermissionChartIdMap map[int]bool, sysUserId int) (newAllNodes []*data_manage.ChartClassifyItems) {
+	// 涉及分类id
+	classifyIdList := make([]int, 0)
 	// 移除没有权限的图表
 	newAllNodes = make([]*data_manage.ChartClassifyItems, 0)
 	for _, node := range allNodes {
@@ -168,11 +170,45 @@ func HandleNoPermissionChart(allNodes []*data_manage.ChartClassifyItems, noPermi
 					continue
 				}
 				tmpNodeList = append(tmpNodeList, chartInfo)
+				classifyIdList = append(classifyIdList, chartInfo.ChartClassifyId)
 			}
 		}
 
 		tmpNodeInfo.Children = tmpNodeList
 		newAllNodes = append(newAllNodes, &tmpNodeInfo)
+		classifyIdList = append(classifyIdList, node.ChartClassifyId)
+	}
+
+	// 数据权限
+	if len(classifyIdList) > 0 {
+		// 图表分类
+		chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			return
+		}
+
+		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range chartClassifyList {
+			chartClassifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(sysUserId, 0, 0)
+		if err != nil {
+			return
+		}
+
+		newAllNodes = make([]*data_manage.ChartClassifyItems, 0)
+		for _, node := range newAllNodes {
+			if node.Children != nil {
+				for _, chartInfo := range node.Children {
+					chartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartInfo.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+				}
+			}
+
+			node.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(node.IsJoinPermission, node.IsJoinPermission, node.ChartInfoId, node.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+
+		}
 	}
 
 	return