浏览代码

fix:调整权限返回

Roc 1 年之前
父节点
当前提交
3b18025266
共有 1 个文件被更改,包括 122 次插入48 次删除
  1. 122 48
      controllers/data_manage/edb_info.go

+ 122 - 48
controllers/data_manage/edb_info.go

@@ -3849,11 +3849,44 @@ func (this *EdbInfoController) RelationChartList() {
 		myChartMap[v.ChartInfoId] = v
 	}
 	listLen := len(list)
-	for i := 0; i < listLen; i++ {
-		if existItem, ok := myChartMap[list[i].ChartInfoId]; ok {
-			list[i].IsAdd = true
-			list[i].MyChartId = existItem.MyChartId
-			list[i].MyChartClassifyId = existItem.MyChartClassifyId
+
+	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 {
+			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 _, v := range list {
+			if existItem, ok := myChartMap[v.ChartInfoId]; ok {
+				v.IsAdd = true
+				v.MyChartId = existItem.MyChartId
+				v.MyChartClassifyId = existItem.MyChartClassifyId
+			}
+			// 权限
+			if currClassify, ok := classifyMap[v.ChartClassifyId]; ok {
+				v.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.ChartInfoId, v.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			}
 		}
 	}
 
@@ -3981,55 +4014,96 @@ func (this *EdbInfoController) RelationEdbList() {
 	}
 
 	edbList := make([]*data_manage.ChartEdbInfoMapping, 0)
-	for _, v := range list {
-		item := new(data_manage.ChartEdbInfoMapping)
-		item.EdbInfoId = v.EdbInfoId
-		item.SourceName = v.SourceName
-		item.Source = v.Source
-		item.EdbCode = v.EdbCode
-		item.EdbName = v.EdbName
-		item.EdbNameEn = v.EdbNameEn
-		item.Frequency = v.Frequency
-		item.FrequencyEn = data.GetFrequencyEn(v.Frequency)
-		if v.Unit != `无` {
-			item.Unit = v.Unit
-		}
-		item.UnitEn = v.UnitEn
-		item.StartDate = v.StartDate
-		item.EndDate = v.EndDate
-		item.ModifyTime = v.ModifyTime
-		item.IsAxis = 1
-		item.LeadValue = 0
-		item.LeadUnit = ""
-		item.ChartEdbMappingId = 0
-		item.ChartInfoId = 0
-		item.IsOrder = false
-		item.EdbInfoType = v.EdbInfoType
-		item.EdbInfoCategoryType = v.EdbInfoType
-		item.ChartStyle = ""
-		item.ChartColor = ""
-		item.ChartWidth = 0
-		item.MaxData = v.MaxValue
-		item.MinData = v.MinValue
-		item.LatestValue = v.LatestValue
-		item.LatestDate = v.LatestDate
-		item.UniqueCode = v.UniqueCode
-		item.ClassifyId = v.ClassifyId
-
-		dataList := make([]*data_manage.EdbDataList, 0)
-		if v.EdbInfoType == 0 {
-			dataList, err = data_manage.GetEdbDataList(v.Source, v.SubSource, v.EdbInfoId, "", "")
-		} else {
-			_, dataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, "", "", false)
+
+	if len(edbList) > 0 {
+
+		// 当前的分类
+		classifyMap := make(map[int]*data_manage.EdbClassify)
+		{
+			classifyIdList := make([]int, 0)
+			for _, v := range edbList {
+				classifyIdList = append(classifyIdList, v.ClassifyId)
+			}
+			classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIdList)
+			if err != nil {
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+					return
+				}
+			}
+
+			for _, v := range classifyList {
+				classifyMap[v.ClassifyId] = v
+			}
 		}
+
+		// 获取所有有权限的指标和分类
+		permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(this.SysUser.AdminId, 0, 0)
 		if err != nil {
 			br.Msg = "获取失败"
-			br.Msg = "获取失败,Err:" + err.Error()
+			br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
 			return
 		}
 
-		item.DataList = dataList
-		edbList = append(edbList, item)
+		for _, v := range list {
+			item := new(data_manage.ChartEdbInfoMapping)
+			item.EdbInfoId = v.EdbInfoId
+			item.SourceName = v.SourceName
+			item.Source = v.Source
+			item.EdbCode = v.EdbCode
+			item.EdbName = v.EdbName
+			item.EdbNameEn = v.EdbNameEn
+			item.Frequency = v.Frequency
+			item.FrequencyEn = data.GetFrequencyEn(v.Frequency)
+			if v.Unit != `无` {
+				item.Unit = v.Unit
+			}
+			item.UnitEn = v.UnitEn
+			item.StartDate = v.StartDate
+			item.EndDate = v.EndDate
+			item.ModifyTime = v.ModifyTime
+			item.IsAxis = 1
+			item.LeadValue = 0
+			item.LeadUnit = ""
+			item.ChartEdbMappingId = 0
+			item.ChartInfoId = 0
+			item.IsOrder = false
+			item.EdbInfoType = v.EdbInfoType
+			item.EdbInfoCategoryType = v.EdbInfoType
+			item.ChartStyle = ""
+			item.ChartColor = ""
+			item.ChartWidth = 0
+			item.MaxData = v.MaxValue
+			item.MinData = v.MinValue
+			item.LatestValue = v.LatestValue
+			item.LatestDate = v.LatestDate
+			item.UniqueCode = v.UniqueCode
+			item.ClassifyId = v.ClassifyId
+
+			dataList := make([]*data_manage.EdbDataList, 0)
+			// 指标权限
+			if currClassify, ok := classifyMap[v.ClassifyId]; ok {
+				v.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.EdbInfoId, v.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+			}
+
+			// 有权限则获取数据
+			if v.HaveOperaAuth {
+				if v.EdbInfoType == 0 {
+					dataList, err = data_manage.GetEdbDataList(v.Source, v.SubSource, v.EdbInfoId, "", "")
+				} else {
+					_, dataList, _, _, err, _ = data.GetPredictDataListByPredictEdbInfoId(v.EdbInfoId, "", "", false)
+				}
+				if err != nil {
+					br.Msg = "获取失败"
+					br.Msg = "获取失败,Err:" + err.Error()
+					return
+				}
+			}
+
+			item.DataList = dataList
+			edbList = append(edbList, item)
+		}
 	}
 
 	page = paging.GetPaging(currentIndex, pageSize, dataCount)