浏览代码

Merge remote-tracking branch 'origin/eta/1.7.6' into debug

Roc 11 月之前
父节点
当前提交
bf616b143b

+ 41 - 12
controllers/data_manage/chart_info.go

@@ -1771,7 +1771,9 @@ func (this *ChartInfoController) ChartInfoSearch() {
 
 		// 权限判断
 		for k, v := range searchList {
-			searchList[k].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, v.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			if currClassify, ok := chartClassifyMap[v.ChartClassifyId]; ok {
+				searchList[k].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
 		}
 	}
 
@@ -1864,12 +1866,16 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 	if len(searchList) > 0 {
 		// 涉及分类id
 		classifyIdList := make([]int, 0)
+		// 图表id
+		chartInfoIdList := 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)
+			chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
 		}
 		if chartInfoIds != "" {
 			chartInfoIds = strings.Trim(chartInfoIds, ",")
@@ -1884,18 +1890,34 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 				chartEdbMap[v.ChartInfoId] = append(chartEdbMap[v.ChartInfoId], v)
 			}
 		}
+		// 当前列表中的图表map
+		chartInfoMap := make(map[int]*data_manage.ChartInfo)
+		// 当前列表中的分类map
+		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
 
 		// 图表分类
-		chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
-			return
+		{
+			chartClassifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取图表分类失败,Err:" + err.Error()
+				return
+			}
+			for _, v := range chartClassifyList {
+				chartClassifyMap[v.ChartClassifyId] = v
+			}
 		}
-
-		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
-		for _, v := range chartClassifyList {
-			chartClassifyMap[v.ChartClassifyId] = v
+		// 图表
+		{
+			tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
+				return
+			}
+			for _, tmpChartInfo := range tmpChartList {
+				chartInfoMap[tmpChartInfo.ChartInfoId] = tmpChartInfo
+			}
 		}
 
 		// 已授权图表和分类id
@@ -1907,6 +1929,12 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 		}
 
 		for _, v := range searchList {
+			// 图表权限
+			chartViewInfo, ok := chartInfoMap[v.ChartInfoId]
+			if !ok {
+				continue
+			}
+
 			tmp := new(data_manage.ChartInfoMore)
 			tmp.ChartInfo = *v
 			//判断是否需要展示英文标识
@@ -1914,8 +1942,9 @@ func (this *ChartInfoController) ChartInfoSearchByEs() {
 				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)
+			if currClassify, ok := chartClassifyMap[chartViewInfo.ChartClassifyId]; ok {
+				tmp.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, currClassify.IsJoinPermission, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
 
 			finalList = append(finalList, tmp)
 		}

+ 1 - 1
controllers/data_manage/edb_info.go

@@ -3245,7 +3245,7 @@ func (this *EdbInfoController) EdbInfoFilterByEs() {
 			tmpEdbList, err := data_manage.GetEdbInfoByIdList(edbInfoIdList)
 			if err != nil {
 				br.Msg = "获取失败"
-				br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+				br.ErrMsg = "获取所有有权限的指标失败,Err:" + err.Error()
 				return
 			}
 			edbInfoMap := make(map[int]*data_manage.EdbInfo)

+ 182 - 15
controllers/data_manage/my_chart.go

@@ -1318,15 +1318,52 @@ func (this *MyChartController) MyChartList() {
 	}
 
 	listLen := len(list)
-	for i := 0; i < listLen; i++ {
-		//判断是否需要展示英文标识
-		if edbTmpList, ok := chartEdbMap[list[i].ChartInfoId]; ok {
-			list[i].IsEnChart = data.CheckIsEnChart(list[i].ChartNameEn, edbTmpList, list[i].Source, list[i].ChartType)
+	if listLen > 0 {
+		// 分类id
+		classifyIdList := make([]int, 0)
+		// 当前列表中的分类map
+		classifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range list {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
 		}
-		if _, ok := myChartMap[list[i].ChartInfoId]; ok {
-			list[i].IsAdd = true
+		classifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+				return
+			}
+		}
+		for _, v := range classifyList {
+			classifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+
+		// 权限
+		for i, chartViewInfo := range list {
+			//判断是否需要展示英文标识
+			if edbTmpList, ok := chartEdbMap[list[i].ChartInfoId]; ok {
+				list[i].IsEnChart = data.CheckIsEnChart(list[i].ChartNameEn, edbTmpList, list[i].Source, list[i].ChartType)
+			}
+			if _, ok := myChartMap[list[i].ChartInfoId]; ok {
+				list[i].IsAdd = true
+			}
+
+			// 数据权限
+			if currClassify, ok := classifyMap[chartViewInfo.ChartClassifyId]; ok {
+				list[i].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, currClassify.IsJoinPermission, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
 		}
+
 	}
+
 	resp := new(data_manage.MyChartListResp)
 	if list == nil || len(list) <= 0 || (err != nil && err.Error() == utils.ErrNoRow()) {
 		items := make([]*data_manage.MyChartList, 0)
@@ -1537,10 +1574,45 @@ func (this *MyChartController) ChartRecommendList() {
 		myChartMap[v.ChartInfoId] = v.ChartInfoId
 	}
 	listLen := len(list)
-	for i := 0; i < listLen; i++ {
-		if _, ok := myChartMap[list[i].ChartInfoId]; ok {
-			list[i].IsAdd = true
+
+	if listLen > 0 {
+		// 分类id
+		classifyIdList := make([]int, 0)
+		// 当前列表中的分类map
+		classifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range list {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
+		}
+		classifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+				return
+			}
+		}
+		for _, v := range classifyList {
+			classifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+		// 权限
+		for k, chartViewInfo := range list {
+			if currClassify, ok := classifyMap[chartViewInfo.ChartClassifyId]; ok {
+				list[k].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, currClassify.IsJoinPermission, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
+
+			if _, ok := myChartMap[list[k].ChartInfoId]; ok {
+				list[k].IsAdd = true
+			}
 		}
+
 	}
 
 	resp := new(data_manage.ChartRecommendListResp)
@@ -1600,9 +1672,44 @@ func (this *MyChartController) MyChartSearch() {
 		return
 	}
 	listLen := len(list)
-	for i := 0; i < listLen; i++ {
-		list[i].IsAdd = true
+
+	if listLen > 0 {
+		// 分类id
+		classifyIdList := make([]int, 0)
+		// 当前列表中的分类map
+		classifyMap := make(map[int]*data_manage.ChartClassify)
+		for _, v := range list {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
+		}
+		classifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+		if err != nil {
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+				return
+			}
+		}
+		for _, v := range classifyList {
+			classifyMap[v.ChartClassifyId] = v
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+		// 权限
+		for k, chartViewInfo := range list {
+			if currClassify, ok := classifyMap[chartViewInfo.ChartClassifyId]; ok {
+				list[k].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, currClassify.IsJoinPermission, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
+			list[k].IsAdd = true
+		}
+
 	}
+
 	resp := new(data_manage.MyChartSearchListResp)
 	if list == nil {
 		list = make([]*data_manage.MyChartList, 0)
@@ -1671,11 +1778,71 @@ func (this *MyChartController) MyChartSearchByEs() {
 		br.ErrMsg = "获取图表信息失败,Err:" + err.Error()
 		return
 	}
-	if len(list) <= 0 {
+
+	lenList := len(list)
+	if lenList <= 0 {
 		list = make([]*data_manage.MyChartList, 0)
-	}
-	for _, v := range list {
-		v.IsAdd = true
+	} else {
+		// 分类id
+		classifyIdList := make([]int, 0)
+		// 图表id
+		chartInfoIdList := make([]int, 0)
+
+		// 当前列表中的分类map
+		chartClassifyMap := make(map[int]*data_manage.ChartClassify)
+		// 当前列表中的图表map
+		chartInfoMap := make(map[int]*data_manage.ChartInfo)
+		for _, v := range list {
+			classifyIdList = append(classifyIdList, v.ChartClassifyId)
+			chartInfoIdList = append(chartInfoIdList, v.ChartInfoId)
+		}
+
+		// 分类
+		{
+			classifyList, err := data_manage.GetChartClassifyByIdList(classifyIdList)
+			if err != nil {
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+					return
+				}
+			}
+			for _, tmpClassifyInfo := range classifyList {
+				chartClassifyMap[tmpClassifyInfo.ChartClassifyId] = tmpClassifyInfo
+			}
+		}
+
+		// 图表
+		{
+			tmpChartList, err := data_manage.GetChartInfoByIdList(chartInfoIdList)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取所有有权限的图表失败,Err:" + err.Error()
+				return
+			}
+			for _, tmpChartInfo := range tmpChartList {
+				chartInfoMap[tmpChartInfo.ChartInfoId] = tmpChartInfo
+			}
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+		// 权限
+		for k, tmpChartViewInfo := range list {
+			list[k].IsAdd = true
+			chartViewInfo, ok := chartInfoMap[tmpChartViewInfo.ChartInfoId]
+			if !ok {
+				continue
+			}
+			if currClassify, ok := chartClassifyMap[chartViewInfo.ChartClassifyId]; ok {
+				list[k].HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartViewInfo.IsJoinPermission, currClassify.IsJoinPermission, chartViewInfo.ChartInfoId, chartViewInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
+		}
 	}
 
 	page := paging.GetPaging(currentIndex, pageSize, int(total))

+ 2 - 0
models/data_manage/my_chart.go

@@ -327,6 +327,8 @@ type MyChartList struct {
 	IsEnChart           bool   `description:"是否展示英文标识"`
 	Disabled            int    `description:"是否禁用,0:启用,1:禁用,默认:0"`
 	Source              int    `description:"1:ETA图库;2:商品价格曲线"`
+	IsJoinPermission    int    `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth       bool   `description:"是否有数据权限,默认:false"`
 }
 
 type MyChartListResp struct {

+ 6 - 3
services/data/chart_classify.go

@@ -198,15 +198,18 @@ func HandleNoPermissionChart(allNodes []*data_manage.ChartClassifyItems, noPermi
 			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)
+					if currClassify, ok := chartClassifyMap[chartInfo.ChartClassifyId]; ok {
+						chartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, currClassify.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+					}
 				}
 			}
 
-			node.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(node.IsJoinPermission, node.IsJoinPermission, node.ChartInfoId, node.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			if currClassify, ok := chartClassifyMap[node.ChartClassifyId]; ok {
+				node.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(node.IsJoinPermission, currClassify.IsJoinPermission, node.ChartInfoId, node.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
 
 		}
 	}