Ver Fonte

fix:图表中的指标权限校验

Roc há 11 meses atrás
pai
commit
6ff5d53135

+ 108 - 1
controllers/data_manage/chart_info.go

@@ -1384,6 +1384,43 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 		chartInfo.ChartSource = strings.Join(sourceNameList, ",")
 		chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
 
+		// 指标权限
+		{
+
+			classifyMap := make(map[int]*data_manage.EdbClassify)
+
+			// 分类
+			{
+				classifyIdList := make([]int, 0)
+				for _, v := range edbList {
+					classifyIdList = append(classifyIdList, v.ClassifyId)
+				}
+				classifyList, tmpErr := data_manage.GetEdbClassifyByIdList(classifyIdList)
+				if tmpErr != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取分类列表失败,Err:" + tmpErr.Error()
+					return
+				}
+				for _, v := range classifyList {
+					classifyMap[v.ClassifyId] = v
+				}
+			}
+			// 获取所有有权限的指标和分类
+			permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+				return
+			}
+
+			for _, item := range edbList {
+				// 数据权限
+				if currClassify, ok := classifyMap[item.ClassifyId]; ok {
+					item.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(item.IsJoinPermission, currClassify.IsJoinPermission, item.EdbInfoId, item.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+				}
+			}
+		}
+
 		resp.EdbInfoList = edbList
 		resp.XEdbIdValue = xEdbIdValue
 		resp.YDataList = yDataList
@@ -2249,7 +2286,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 					}
 				}
 
-				// 权限校验
+				// 图表权限校验
 				{
 					resp.ChartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassify.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
 
@@ -2273,6 +2310,41 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 					}
 				}
 
+				// 指标权限
+				{
+
+					classifyMap := make(map[int]*data_manage.EdbClassify)
+
+					// 分类
+					{
+						classifyIdList := make([]int, 0)
+						for _, v := range resp.EdbInfoList {
+							classifyIdList = append(classifyIdList, v.ClassifyId)
+						}
+						classifyList, tmpErr := data_manage.GetEdbClassifyByIdList(classifyIdList)
+						if tmpErr != nil {
+							errMsg = "获取分类列表失败,Err:" + tmpErr.Error()
+							return
+						}
+						for _, v := range classifyList {
+							classifyMap[v.ClassifyId] = v
+						}
+					}
+					// 获取所有有权限的指标和分类
+					permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+					if err != nil {
+						errMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+						return
+					}
+
+					for _, item := range resp.EdbInfoList {
+						// 数据权限
+						if currClassify, ok := classifyMap[item.ClassifyId]; ok {
+							item.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(item.IsJoinPermission, currClassify.IsJoinPermission, item.EdbInfoId, item.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+						}
+					}
+				}
+
 				isOk = true
 				fmt.Println("source redis")
 				return
@@ -2431,6 +2503,41 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 		}
 	}
 
+	// 指标权限
+	{
+
+		classifyMap := make(map[int]*data_manage.EdbClassify)
+
+		// 分类
+		{
+			classifyIdList := make([]int, 0)
+			for _, v := range resp.EdbInfoList {
+				classifyIdList = append(classifyIdList, v.ClassifyId)
+			}
+			classifyList, tmpErr := data_manage.GetEdbClassifyByIdList(classifyIdList)
+			if tmpErr != nil {
+				errMsg = "获取分类列表失败,Err:" + tmpErr.Error()
+				return
+			}
+			for _, v := range classifyList {
+				classifyMap[v.ClassifyId] = v
+			}
+		}
+		// 获取所有有权限的指标和分类
+		permissionEdbIdList, permissionClassifyIdList, err := data_manage_permission.GetUserEdbAndClassifyPermissionList(sysUser.AdminId, 0, 0)
+		if err != nil {
+			errMsg = "获取所有有权限的指标和分类失败,Err:" + err.Error()
+			return
+		}
+
+		for _, item := range resp.EdbInfoList {
+			// 数据权限
+			if currClassify, ok := classifyMap[item.ClassifyId]; ok {
+				item.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(item.IsJoinPermission, currClassify.IsJoinPermission, item.EdbInfoId, item.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
+			}
+		}
+	}
+
 	return
 }
 

+ 3 - 5
controllers/data_manage/edb_info.go

@@ -4484,11 +4484,9 @@ func (this *EdbInfoController) AllEdbInfoByEs() {
 	if edbInfoListLen > 0 {
 		classifyList, err := data_manage.GetEdbClassifyByIdList(classifyIdList)
 		if err != nil {
-			if err != nil {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
-				return
-			}
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取分类列表失败,Err:" + err.Error()
+			return
 		}
 
 		for _, v := range classifyList {

+ 1 - 1
models/data_manage/chart_edb_mapping.go

@@ -46,7 +46,7 @@ func AddChartEdbMapping(items []*ChartEdbMapping) (err error) {
 func GetChartEdbMappingList(chartInfoId int) (list []*ChartEdbInfoMapping, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := ` SELECT a.*,b.source_name,b.source,b.sub_source,b.classify_id,b.edb_code,b.edb_name,b.edb_name_en,b.frequency,b.unit,b.unit_en,b.start_date,
-b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type,
+b.end_date,b.modify_time,b.latest_date,b.latest_value,b.unique_code,b.edb_info_type AS edb_info_category_type,b.edb_type,b.is_join_permission,
 a.is_convert, a.convert_type, a.convert_value, a.convert_unit, a.convert_en_unit 
              FROM chart_edb_mapping AS a
 			 INNER JOIN edb_info AS b ON a.edb_info_id=b.edb_info_id

+ 2 - 0
models/data_manage/chart_info.go

@@ -499,6 +499,8 @@ type ChartEdbInfoMapping struct {
 	ConvertValue        float64 `description:"数据转换值"`
 	ConvertUnit         string  `description:"数据转换单位"`
 	ConvertEnUnit       string  `description:"数据转换单位"`
+	IsJoinPermission    int     `description:"是否加入权限管控,0:不加入;1:加入;默认:0"`
+	HaveOperaAuth       bool    `description:"是否有数据权限,默认:false"`
 }
 
 type QuarterData struct {

+ 1 - 0
services/data/chart_info.go

@@ -475,6 +475,7 @@ func getEdbDataMapList(chartInfoId, chartType int, calendar, startDate, endDate
 		item.ConvertValue = v.ConvertValue
 		item.ConvertUnit = v.ConvertUnit
 		item.ConvertEnUnit = v.ConvertEnUnit
+		item.IsJoinPermission = v.IsJoinPermission
 
 		var startDateReal string
 		var diffSeconds int64