Browse Source

fix:图表权限

Roc 11 months ago
parent
commit
4e36452ef1

+ 26 - 6
controllers/data_manage/chart_classify.go

@@ -615,7 +615,7 @@ func (this *ChartClassifyController) DeleteChartClassify() {
 
 		// 权限校验
 		{
-			haveOperaAuth := data_manage_permission.CheckEdbClassifyPermissionByPermissionIdList(item.IsJoinPermission, item.ChartClassifyId, permissionClassifyIdList)
+			haveOperaAuth := data_manage_permission.CheckChartClassifyPermissionByPermissionIdList(item.IsJoinPermission, item.ChartClassifyId, permissionClassifyIdList)
 			button := data.GetChartClassifyOpButton(this.SysUser, item.SysUserId, haveOperaAuth)
 			if !button.OpButton {
 				br.Msg = "无操作权限"
@@ -664,14 +664,34 @@ func (this *ChartClassifyController) DeleteChartClassify() {
 			br.Msg = "图表已删除,请刷新页面"
 			return
 		}
-		//图表操作权限
-		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
-		if !ok {
-			br.Msg = "没有该图表的操作权限"
-			br.ErrMsg = "没有该图表的操作权限"
+
+		chartClassifyItem, err := data_manage.GetChartClassifyById(chartInfo.ChartClassifyId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表分类详情数据失败,Err:" + err.Error()
+			return
+		}
+
+		// 已授权图表、分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, chartInfo.ChartInfoId, chartInfo.ChartClassifyId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
 			return
 		}
 
+		// 权限校验
+		{
+			haveOperaAuth := data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassifyItem.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+			//图表操作权限
+			ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, haveOperaAuth)
+			if !ok {
+				br.Msg = "没有该图表的操作权限"
+				br.ErrMsg = "没有该图表的操作权限"
+				return
+			}
+		}
+
 		// 获取引用该图表的MyCharts, 用于ES删除
 		var myCond string
 		var myPars []interface{}

+ 392 - 293
controllers/data_manage/chart_info.go

@@ -9,6 +9,7 @@ import (
 	"eta/eta_api/models/system"
 	"eta/eta_api/services"
 	"eta/eta_api/services/data"
+	"eta/eta_api/services/data/data_manage_permission"
 	etaTrialService "eta/eta_api/services/eta_trial"
 	"eta/eta_api/utils"
 	"fmt"
@@ -772,6 +773,8 @@ func (this *ChartInfoController) ChartInfoDetail() {
 
 	var err error
 	chartInfo := new(data_manage.ChartInfoView)
+	chartInfo.HaveOperaAuth = true
+
 	if chartInfoId > 0 {
 		chartInfo, err = data_manage.GetChartInfoViewById(chartInfoId)
 		if err != nil {
@@ -796,8 +799,30 @@ func (this *ChartInfoController) ChartInfoDetail() {
 		}
 		chartInfo.ChartThemeStyle = chartTheme.Config
 		chartInfo.ChartThemeId = chartTheme.ChartThemeId
+
+		// 图表数据权限
+		{
+			// 图表分类
+			chartClassify, err := data_manage.GetChartClassifyById(chartInfo.ChartClassifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取图表分类信息失败,Err:" + err.Error()
+				return
+			}
+
+			// 已授权分类id
+			permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, chartInfo.ChartInfoId, chartInfo.ChartClassifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+				return
+			}
+			chartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassify.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+		}
 	}
 
+	resp := new(data_manage.ChartInfoDetailResp)
+
 	mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
 	if chartInfoId > 0 {
 		mappingList, err = data_manage.GetChartEdbMappingList(chartInfoId)
@@ -854,72 +879,79 @@ func (this *ChartInfoController) ChartInfoDetail() {
 	// 开始/结束日期
 	startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
 
-	// 获取图表中的指标数据
-	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
-	if err != nil {
-		br.Msg = "获取失败"
-		if errMsg != `` {
-			br.Msg = errMsg
+	if chartInfo.HaveOperaAuth {
+		// 获取图表中的指标数据
+		edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
+		if err != nil {
+			br.Msg = "获取失败"
+			if errMsg != `` {
+				br.Msg = errMsg
+			}
+			br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+			return
 		}
-		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
-		return
-	}
-	// 单位
-	if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
-		chartInfo.Unit = yDataList[0].Unit
-		chartInfo.UnitEn = yDataList[0].UnitEn
-	}
-	warnEdbList := make([]string, 0)
-	for _, v := range edbList {
-		if v.IsNullData {
-			warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
+		// 单位
+		if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
+			chartInfo.Unit = yDataList[0].Unit
+			chartInfo.UnitEn = yDataList[0].UnitEn
 		}
-	}
-	if len(warnEdbList) > 0 {
-		chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
-	}
-	if chartInfoId > 0 && chartInfo != nil {
-		//判断是否加入我的图库
-		{
-			var myChartCondition string
-			var myChartPars []interface{}
-			myChartCondition += ` AND a.admin_id=? `
-			myChartPars = append(myChartPars, sysUser.AdminId)
-			myChartCondition += ` AND a.chart_info_id=? `
-			myChartPars = append(myChartPars, chartInfo.ChartInfoId)
-
-			myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
-				return
-			}
-			if myChartList != nil && len(myChartList) > 0 {
-				chartInfo.IsAdd = true
-				chartInfo.MyChartId = myChartList[0].MyChartId
-				chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+		warnEdbList := make([]string, 0)
+		for _, v := range edbList {
+			if v.IsNullData {
+				warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
 			}
 		}
-		if chartInfo.ChartType == 2 {
-			if chartInfo.SeasonStartDate != "" {
-				chartInfo.StartDate = chartInfo.SeasonStartDate
-				chartInfo.EndDate = chartInfo.SeasonEndDate
-				if chartInfo.DateType == 3 {
-					chartInfo.DateType = 5
+		if len(warnEdbList) > 0 {
+			chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
+		}
+		if chartInfoId > 0 && chartInfo != nil {
+			//判断是否加入我的图库
+			{
+				var myChartCondition string
+				var myChartPars []interface{}
+				myChartCondition += ` AND a.admin_id=? `
+				myChartPars = append(myChartPars, sysUser.AdminId)
+				myChartCondition += ` AND a.chart_info_id=? `
+				myChartPars = append(myChartPars, chartInfo.ChartInfoId)
+
+				myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
+					return
+				}
+				if myChartList != nil && len(myChartList) > 0 {
+					chartInfo.IsAdd = true
+					chartInfo.MyChartId = myChartList[0].MyChartId
+					chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+				}
+			}
+			if chartInfo.ChartType == 2 {
+				if chartInfo.SeasonStartDate != "" {
+					chartInfo.StartDate = chartInfo.SeasonStartDate
+					chartInfo.EndDate = chartInfo.SeasonEndDate
+					if chartInfo.DateType == 3 {
+						chartInfo.DateType = 5
+					}
 				}
 			}
 		}
-	}
 
-	// 图表的指标来源
-	sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
-	chartInfo.ChartSource = strings.Join(sourceNameList, ",")
-	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
+		// 图表的指标来源
+		sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
+		chartInfo.ChartSource = strings.Join(sourceNameList, ",")
+		chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
+		//判断是否需要展示英文标识
+		chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+
+		resp.EdbInfoList = edbList
+		resp.XEdbIdValue = xEdbIdValue
+		resp.YDataList = yDataList
+		resp.DataResp = dataResp
+	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
-	//判断是否需要展示英文标识
-	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -928,13 +960,8 @@ func (this *ChartInfoController) ChartInfoDetail() {
 		IsSetName: chartInfo.IsSetName,
 	}
 
-	resp := new(data_manage.ChartInfoDetailResp)
 	resp.ChartInfo = chartInfo
-	resp.EdbInfoList = edbList
-	resp.XEdbIdValue = xEdbIdValue
-	resp.YDataList = yDataList
 	resp.BarChartInfo = barConfig
-	resp.DataResp = dataResp
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -1104,7 +1131,7 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
 	chartInfo.Button = data_manage.ChartViewButton{
@@ -1172,6 +1199,28 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 		return
 	}
 
+	resp := new(data_manage.ChartInfoDetailResp)
+
+	// 图表数据权限
+	{
+		// 图表分类
+		chartClassify, err := data_manage.GetChartClassifyById(chartInfo.ChartClassifyId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取图表分类信息失败,Err:" + err.Error()
+			return
+		}
+
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, chartInfo.ChartInfoId, chartInfo.ChartClassifyId)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+			return
+		}
+		chartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassify.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+	}
+
 	// 获取主题样式
 	chartTheme, err := data.GetChartThemeConfig(chartInfo.ChartThemeId, chartInfo.Source, chartInfo.ChartType)
 	if err != nil {
@@ -1262,58 +1311,71 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 		extraConfigStr = chartInfo.BarConfig
 	}
 
-	// 获取图表中的指标数据
-	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
-	if err != nil {
-		br.Msg = "获取失败"
-		if errMsg != `` {
-			br.Msg = errMsg
+	if chartInfo.HaveOperaAuth {
+		// 获取图表中的指标数据
+		edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
+		if err != nil {
+			br.Msg = "获取失败"
+			if errMsg != `` {
+				br.Msg = errMsg
+			}
+			br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+			return
 		}
-		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
-		return
-	}
-	// 单位
-	if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
-		chartInfo.Unit = yDataList[0].Unit
-		chartInfo.UnitEn = yDataList[0].UnitEn
-	}
-	warnEdbList := make([]string, 0)
-	for _, v := range edbList {
-		if v.IsNullData {
-			warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
+		// 单位
+		if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
+			chartInfo.Unit = yDataList[0].Unit
+			chartInfo.UnitEn = yDataList[0].UnitEn
 		}
-	}
-	if len(warnEdbList) > 0 {
-		chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
-	}
-	if chartInfoId > 0 && chartInfo != nil {
-		//判断是否加入我的图库
-		{
-			var myChartCondition string
-			var myChartPars []interface{}
-			myChartCondition += ` AND a.admin_id=? `
-			myChartPars = append(myChartPars, sysUser.AdminId)
-			myChartCondition += ` AND a.chart_info_id=? `
-			myChartPars = append(myChartPars, chartInfo.ChartInfoId)
-
-			myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
-				return
+		warnEdbList := make([]string, 0)
+		for _, v := range edbList {
+			if v.IsNullData {
+				warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
 			}
-			if myChartList != nil && len(myChartList) > 0 {
-				chartInfo.IsAdd = true
-				chartInfo.MyChartId = myChartList[0].MyChartId
-				chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+		}
+		if len(warnEdbList) > 0 {
+			chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
+		}
+		if chartInfoId > 0 && chartInfo != nil {
+			//判断是否加入我的图库
+			{
+				var myChartCondition string
+				var myChartPars []interface{}
+				myChartCondition += ` AND a.admin_id=? `
+				myChartPars = append(myChartPars, sysUser.AdminId)
+				myChartCondition += ` AND a.chart_info_id=? `
+				myChartPars = append(myChartPars, chartInfo.ChartInfoId)
+
+				myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
+					return
+				}
+				if myChartList != nil && len(myChartList) > 0 {
+					chartInfo.IsAdd = true
+					chartInfo.MyChartId = myChartList[0].MyChartId
+					chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+				}
 			}
 		}
+		//判断是否需要展示英文标识
+		chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+
+		// 图表的指标来源
+		sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
+
+		chartInfo.ChartSource = strings.Join(sourceNameList, ",")
+		chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
+
+		resp.EdbInfoList = edbList
+		resp.XEdbIdValue = xEdbIdValue
+		resp.YDataList = yDataList
+		resp.DataResp = dataResp
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
-	//判断是否需要展示英文标识
-	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -1322,18 +1384,8 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 		IsSetName: chartInfo.IsSetName,
 	}
 
-	// 图表的指标来源
-	sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
-	chartInfo.ChartSource = strings.Join(sourceNameList, ",")
-	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
-
-	resp := new(data_manage.ChartInfoDetailResp)
 	resp.ChartInfo = chartInfo
-	resp.EdbInfoList = edbList
-	resp.XEdbIdValue = xEdbIdValue
-	resp.YDataList = yDataList
 	resp.BarChartInfo = barConfig
-	resp.DataResp = dataResp
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
@@ -2012,41 +2064,92 @@ func (this *ChartInfoController) ChartInfoDetailFromUniqueCode() {
 func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCache bool, sysUser *system.Admin) (resp *data_manage.ChartInfoDetailFromUniqueCodeResp, isOk bool, msg, errMsg string) {
 	resp = new(data_manage.ChartInfoDetailFromUniqueCodeResp)
 
+	msg = `获取失败`
 	adminId := sysUser.AdminId
 
+	// 图表数据权限
+	// 图表分类
+	chartClassify, err := data_manage.GetChartClassifyById(chartInfo.ChartClassifyId)
+	if err != nil {
+		errMsg = "获取图表分类信息失败,Err:" + err.Error()
+		return
+	}
+
+	// 已授权分类id
+	permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(adminId, chartInfo.ChartInfoId, chartInfo.ChartClassifyId)
+	if err != nil {
+		errMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+		return
+	}
+
 	//判断是否存在缓存,如果存在缓存,那么直接从缓存中获取
 	key := data.GetChartInfoDataKey(chartInfo.ChartInfoId)
 	if utils.Re == nil && isCache {
 		if utils.Re == nil && utils.Rc.IsExist(key) {
-			if data, err1 := utils.Rc.RedisBytes(key); err1 == nil {
-				err := json.Unmarshal(data, &resp)
-				if err == nil && resp != nil {
-					// 这里跟当前用户相关的信息重新查询写入resp, 不使用缓存中的
-					var myCond string
-					var myPars []interface{}
-					myCond += ` AND a.admin_id=? `
-					myPars = append(myPars, adminId)
-					myCond += ` AND a.chart_info_id=? `
-					myPars = append(myPars, chartInfo.ChartInfoId)
-					myList, err := data_manage.GetMyChartByCondition(myCond, myPars)
+			if redisData, err1 := utils.Rc.RedisBytes(key); err1 == nil {
+				err := json.Unmarshal(redisData, &resp)
+				if err != nil || resp == nil {
+					return
+				}
+				// 这里跟当前用户相关的信息重新查询写入resp, 不使用缓存中的
+				var myCond string
+				var myPars []interface{}
+				myCond += ` AND a.admin_id=? `
+				myPars = append(myPars, adminId)
+				myCond += ` AND a.chart_info_id=? `
+				myPars = append(myPars, chartInfo.ChartInfoId)
+				myList, err := data_manage.GetMyChartByCondition(myCond, myPars)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					msg = "获取失败"
+					errMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
+					return
+				}
+				resp.ChartInfo.IsAdd = false
+				resp.ChartInfo.MyChartId = 0
+				resp.ChartInfo.MyChartClassifyId = ""
+				if myList != nil && len(myList) > 0 {
+					resp.ChartInfo.IsAdd = true
+					resp.ChartInfo.MyChartId = myList[0].MyChartId
+					resp.ChartInfo.MyChartClassifyId = myList[0].MyChartClassifyId
+				}
+
+				resp.ChartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassify.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+
+				//判断是否加入我的图库
+				{
+					var myChartCondition string
+					var myChartPars []interface{}
+					myChartCondition += ` AND a.admin_id=? `
+					myChartPars = append(myChartPars, adminId)
+					myChartCondition += ` AND a.chart_info_id=? `
+					myChartPars = append(myChartPars, chartInfo.ChartInfoId)
+
+					myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
 					if err != nil && err.Error() != utils.ErrNoRow() {
 						msg = "获取失败"
 						errMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
 						return
 					}
-					resp.ChartInfo.IsAdd = false
-					resp.ChartInfo.MyChartId = 0
-					resp.ChartInfo.MyChartClassifyId = ""
-					if myList != nil && len(myList) > 0 {
-						resp.ChartInfo.IsAdd = true
-						resp.ChartInfo.MyChartId = myList[0].MyChartId
-						resp.ChartInfo.MyChartClassifyId = myList[0].MyChartClassifyId
+					if myChartList != nil && len(myChartList) > 0 {
+						chartInfo.IsAdd = true
+						chartInfo.MyChartId = myChartList[0].MyChartId
+						chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
 					}
+				}
 
-					isOk = true
-					fmt.Println("source redis")
-					return
+				//图表操作权限
+				chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, resp.ChartInfo.HaveOperaAuth)
+				chartInfo.Button = data_manage.ChartViewButton{
+					IsEdit:    chartInfo.IsEdit,
+					IsEnChart: chartInfo.IsEnChart,
+					IsAdd:     chartInfo.IsAdd,
+					IsCopy:    true,
+					IsSetName: chartInfo.IsSetName,
 				}
+
+				isOk = true
+				fmt.Println("source redis")
+				return
 			}
 		}
 	}
@@ -2150,46 +2253,15 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 		ChartClassify     []*ChartClassifyView
 	*/
 
-	chartClassify, _ := data_manage.GetChartClassifyViewById(chartInfo.ChartClassifyId)
-	if chartClassify != nil {
+	chartViewClassify, _ := data_manage.GetChartClassifyViewById(chartInfo.ChartClassifyId)
+	if chartViewClassify != nil {
 		chartClassifyParent, _ := data_manage.GetChartClassifyViewById(chartClassify.ParentId)
 		chartInfo.ChartClassify = append(chartInfo.ChartClassify, chartClassifyParent)
 	}
-	chartInfo.ChartClassify = append(chartInfo.ChartClassify, chartClassify)
+	chartInfo.ChartClassify = append(chartInfo.ChartClassify, chartViewClassify)
 	resp.EdbInfoList = edbList
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
-	//判断是否加入我的图库
-	{
-		var myChartCondition string
-		var myChartPars []interface{}
-		myChartCondition += ` AND a.admin_id=? `
-		myChartPars = append(myChartPars, adminId)
-		myChartCondition += ` AND a.chart_info_id=? `
-		myChartPars = append(myChartPars, chartInfo.ChartInfoId)
-
-		myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			msg = "获取失败"
-			errMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
-			return
-		}
-		if myChartList != nil && len(myChartList) > 0 {
-			chartInfo.IsAdd = true
-			chartInfo.MyChartId = myChartList[0].MyChartId
-			chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
-		}
-	}
-
-	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
-	chartInfo.Button = data_manage.ChartViewButton{
-		IsEdit:    chartInfo.IsEdit,
-		IsEnChart: chartInfo.IsEnChart,
-		IsAdd:     chartInfo.IsAdd,
-		IsCopy:    true,
-		IsSetName: chartInfo.IsSetName,
-	}
 
 	// 图表的指标来源
 	sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
@@ -2748,7 +2820,7 @@ func (this *ChartInfoController) PreviewBarChartInfo() {
 	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
 	chartInfo.Button = data_manage.ChartViewButton{
@@ -2838,7 +2910,7 @@ func (this *ChartInfoController) PreviewSectionScatterChartInfo() {
 	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
 	chartInfo.Button = data_manage.ChartViewButton{
@@ -3247,7 +3319,7 @@ func (this *ChartInfoController) PreviewRadarChartInfo() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
 	chartInfo.Button = data_manage.ChartViewButton{
@@ -3327,8 +3399,12 @@ func (this *ChartInfoController) ChartInfoConvertDetail() {
 	convertUnit := this.GetString("ConvertUnit")
 	convertEnUnit := this.GetString("ConvertEnUnit")
 
+	resp := new(data_manage.ChartInfoDetailResp)
 	var err error
 	chartInfo := new(data_manage.ChartInfoView)
+	chartInfo.HaveOperaAuth = true
+
+	// 通过id获取详情
 	if chartInfoId > 0 {
 		chartInfo, err = data_manage.GetChartInfoViewById(chartInfoId)
 		if err != nil {
@@ -3353,154 +3429,177 @@ func (this *ChartInfoController) ChartInfoConvertDetail() {
 		}
 		chartInfo.ChartThemeStyle = chartTheme.Config
 		chartInfo.ChartThemeId = chartTheme.ChartThemeId
-	}
 
-	mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
-	if chartInfoId > 0 {
-		mappingList, err = data_manage.GetChartEdbMappingList(chartInfoId)
-		if err != nil {
-			br.Msg = "获取失败"
-			br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
-			return
-		}
-	} else {
-		if edbInfoId != "" {
-			mappingList, err = data_manage.GetChartEdbMappingListByEdbInfoId(edbInfoId)
+		// 图表数据权限
+		{
+			// 图表分类
+			chartClassify, err := data_manage.GetChartClassifyById(chartInfo.ChartClassifyId)
 			if err != nil {
 				br.Msg = "获取失败"
-				br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+				br.ErrMsg = "获取图表分类信息失败,Err:" + err.Error()
 				return
 			}
-			if isConvert == 1 && len(mappingList) > 0 {
-				for i, _ := range mappingList {
-					mappingList[i].IsConvert = 1
-					mappingList[i].ConvertType = convertType
-					mappingList[i].ConvertValue = convertValue
-					mappingList[i].ConvertUnit = convertUnit
-					mappingList[i].ConvertEnUnit = convertEnUnit
-				}
+
+			// 已授权分类id
+			permissionChartIdList, permissionClassifyIdList, err := data_manage_permission.GetUserChartAndClassifyPermissionList(this.SysUser.AdminId, chartInfo.ChartInfoId, chartInfo.ChartClassifyId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取已授权分类id数据失败,Err:" + err.Error()
+				return
 			}
+			chartInfo.HaveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartInfo.IsJoinPermission, chartClassify.IsJoinPermission, chartInfo.ChartInfoId, chartInfo.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
 		}
-	}
 
-	// 图表额外数据参数
-	extraConfigStr := chartInfo.ExtraConfig
-	// 柱方图的一些配置
-	var barConfig data_manage.BarChartInfoReq
-	if chartInfo != nil && chartInfo.ChartType == 7 {
-		if chartInfo.BarConfig == `` {
-			br.Msg = "柱方图未配置"
-			br.ErrMsg = "柱方图未配置"
-			return
-		}
-		err := json.Unmarshal([]byte(chartInfo.BarConfig), &barConfig)
-		if err != nil {
-			br.Msg = "柱方图配置异常"
-			br.ErrMsg = "柱方图配置异常"
-			return
+		//图表操作权限
+		chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+		chartInfo.Button = data_manage.ChartViewButton{
+			IsEdit:    chartInfo.IsEdit,
+			IsEnChart: chartInfo.IsEnChart,
+			IsAdd:     chartInfo.IsAdd,
+			IsCopy:    true,
+			IsSetName: chartInfo.IsSetName,
 		}
-		extraConfigStr = chartInfo.BarConfig
 	}
-	yearMax := 0
-	if dateType == utils.DateTypeNYears {
-		for _, v := range mappingList {
-			if v.LatestDate != "" {
-				lastDateT, tErr := time.Parse(utils.FormatDate, v.LatestDate)
-				if tErr != nil {
+
+	// 有数据权限的话,获取图表的数据
+	if chartInfo.HaveOperaAuth {
+		mappingList := make([]*data_manage.ChartEdbInfoMapping, 0)
+		if chartInfoId > 0 {
+			mappingList, err = data_manage.GetChartEdbMappingList(chartInfoId)
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+				return
+			}
+		} else {
+			if edbInfoId != "" {
+				mappingList, err = data_manage.GetChartEdbMappingListByEdbInfoId(edbInfoId)
+				if err != nil {
 					br.Msg = "获取失败"
-					br.ErrMsg = "获取图表日期信息失败,Err:" + tErr.Error()
+					br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
 					return
 				}
-				if lastDateT.Year() > yearMax {
-					yearMax = lastDateT.Year()
+				if isConvert == 1 && len(mappingList) > 0 {
+					for i, _ := range mappingList {
+						mappingList[i].IsConvert = 1
+						mappingList[i].ConvertType = convertType
+						mappingList[i].ConvertValue = convertValue
+						mappingList[i].ConvertUnit = convertUnit
+						mappingList[i].ConvertEnUnit = convertEnUnit
+					}
 				}
 			}
 		}
-	}
-	// 开始/结束日期
-	startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
 
-	// 获取图表中的指标数据
-	edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartConvertEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
-	if err != nil {
-		br.Msg = "获取失败"
-		if errMsg != `` {
-			br.Msg = errMsg
-		}
-		br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
-		return
-	}
-	// 单位
-	if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
-		chartInfo.Unit = yDataList[0].Unit
-		chartInfo.UnitEn = yDataList[0].UnitEn
-	}
-	warnEdbList := make([]string, 0)
-	for _, v := range edbList {
-		if v.IsNullData {
-			warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
-		}
-	}
-	if len(warnEdbList) > 0 {
-		chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
-	}
-	if chartInfoId > 0 && chartInfo != nil {
-		//判断是否加入我的图库
-		{
-			var myChartCondition string
-			var myChartPars []interface{}
-			myChartCondition += ` AND a.admin_id=? `
-			myChartPars = append(myChartPars, sysUser.AdminId)
-			myChartCondition += ` AND a.chart_info_id=? `
-			myChartPars = append(myChartPars, chartInfo.ChartInfoId)
-
-			myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
-			if err != nil && err.Error() != utils.ErrNoRow() {
-				br.Msg = "获取失败"
-				br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
+		// 图表额外数据参数
+		extraConfigStr := chartInfo.ExtraConfig
+		// 柱方图的一些配置
+		var barConfig data_manage.BarChartInfoReq
+		if chartInfo != nil && chartInfo.ChartType == 7 {
+			if chartInfo.BarConfig == `` {
+				br.Msg = "柱方图未配置"
+				br.ErrMsg = "柱方图未配置"
+				return
+			}
+			err := json.Unmarshal([]byte(chartInfo.BarConfig), &barConfig)
+			if err != nil {
+				br.Msg = "柱方图配置异常"
+				br.ErrMsg = "柱方图配置异常"
 				return
 			}
-			if myChartList != nil && len(myChartList) > 0 {
-				chartInfo.IsAdd = true
-				chartInfo.MyChartId = myChartList[0].MyChartId
-				chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+			extraConfigStr = chartInfo.BarConfig
+		}
+		yearMax := 0
+		if dateType == utils.DateTypeNYears {
+			for _, v := range mappingList {
+				if v.LatestDate != "" {
+					lastDateT, tErr := time.Parse(utils.FormatDate, v.LatestDate)
+					if tErr != nil {
+						br.Msg = "获取失败"
+						br.ErrMsg = "获取图表日期信息失败,Err:" + tErr.Error()
+						return
+					}
+					if lastDateT.Year() > yearMax {
+						yearMax = lastDateT.Year()
+					}
+				}
 			}
 		}
-		if chartInfo.ChartType == 2 {
-			if chartInfo.SeasonStartDate != "" {
-				chartInfo.StartDate = chartInfo.SeasonStartDate
-				chartInfo.EndDate = chartInfo.SeasonEndDate
-				if chartInfo.DateType == 3 {
-					chartInfo.DateType = 5
+		// 开始/结束日期
+		startDate, endDate = utils.GetDateByDateTypeV2(dateType, startDate, endDate, startYear, yearMax)
+
+		// 获取图表中的指标数据
+		edbList, xEdbIdValue, yDataList, dataResp, err, errMsg := data.GetChartConvertEdbData(chartInfoId, chartType, calendar, startDate, endDate, mappingList, extraConfigStr, chartInfo.SeasonExtraConfig)
+		if err != nil {
+			br.Msg = "获取失败"
+			if errMsg != `` {
+				br.Msg = errMsg
+			}
+			br.ErrMsg = "获取图表,指标信息失败,Err:" + err.Error()
+			return
+		}
+		// 单位
+		if chartType == utils.CHART_TYPE_BAR && len(yDataList) > 0 {
+			chartInfo.Unit = yDataList[0].Unit
+			chartInfo.UnitEn = yDataList[0].UnitEn
+		}
+		warnEdbList := make([]string, 0)
+		for _, v := range edbList {
+			if v.IsNullData {
+				warnEdbList = append(warnEdbList, v.EdbName+"("+v.EdbCode+")")
+			}
+		}
+		if len(warnEdbList) > 0 {
+			chartInfo.WarnMsg = `图表引用指标异常,异常指标:` + strings.Join(warnEdbList, ",")
+		}
+		if chartInfoId > 0 && chartInfo != nil {
+			//判断是否加入我的图库
+			{
+				var myChartCondition string
+				var myChartPars []interface{}
+				myChartCondition += ` AND a.admin_id=? `
+				myChartPars = append(myChartPars, sysUser.AdminId)
+				myChartCondition += ` AND a.chart_info_id=? `
+				myChartPars = append(myChartPars, chartInfo.ChartInfoId)
+
+				myChartList, err := data_manage.GetMyChartByCondition(myChartCondition, myChartPars)
+				if err != nil && err.Error() != utils.ErrNoRow() {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取我的图表信息失败,GetMyChartByCondition,Err:" + err.Error()
+					return
+				}
+				if myChartList != nil && len(myChartList) > 0 {
+					chartInfo.IsAdd = true
+					chartInfo.MyChartId = myChartList[0].MyChartId
+					chartInfo.MyChartClassifyId = myChartList[0].MyChartClassifyId
+				}
+			}
+			if chartInfo.ChartType == 2 {
+				if chartInfo.SeasonStartDate != "" {
+					chartInfo.StartDate = chartInfo.SeasonStartDate
+					chartInfo.EndDate = chartInfo.SeasonEndDate
+					if chartInfo.DateType == 3 {
+						chartInfo.DateType = 5
+					}
 				}
 			}
 		}
-	}
 
-	// 图表的指标来源
-	sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
-	chartInfo.ChartSource = strings.Join(sourceNameList, ",")
-	chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
+		// 图表的指标来源
+		sourceNameList, sourceNameEnList := data.GetEdbSourceByEdbInfoIdList(edbList)
+		chartInfo.ChartSource = strings.Join(sourceNameList, ",")
+		chartInfo.ChartSourceEn = strings.Join(sourceNameEnList, ",")
+		//判断是否需要展示英文标识
+		chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
 
-	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
-	//判断是否需要展示英文标识
-	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
-	chartInfo.Button = data_manage.ChartViewButton{
-		IsEdit:    chartInfo.IsEdit,
-		IsEnChart: chartInfo.IsEnChart,
-		IsAdd:     chartInfo.IsAdd,
-		IsCopy:    true,
-		IsSetName: chartInfo.IsSetName,
+		resp.EdbInfoList = edbList
+		resp.XEdbIdValue = xEdbIdValue
+		resp.YDataList = yDataList
+		resp.DataResp = dataResp
+		resp.BarChartInfo = barConfig
 	}
 
-	resp := new(data_manage.ChartInfoDetailResp)
 	resp.ChartInfo = chartInfo
-	resp.EdbInfoList = edbList
-	resp.XEdbIdValue = xEdbIdValue
-	resp.YDataList = yDataList
-	resp.BarChartInfo = barConfig
-	resp.DataResp = dataResp
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"

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

@@ -475,7 +475,7 @@ func (this *CorrelationChartClassifyController) DeleteChartClassify() {
 			return
 		}
 		//图表操作权限
-		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 		if !ok {
 			br.Msg = "没有该图表的操作权限"
 			br.ErrMsg = "没有该图表的操作权限"

+ 2 - 2
controllers/data_manage/correlation/correlation_chart_info.go

@@ -777,7 +777,7 @@ func (this *CorrelationChartInfoController) Detail() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
 	chartInfo.UnitEn = edbInfoMappingA.UnitEn
@@ -1272,7 +1272,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
 	chartInfo.UnitEn = edbInfoMappingA.UnitEn

+ 3 - 3
controllers/data_manage/cross_variety/chart_info.go

@@ -578,7 +578,7 @@ func (c *ChartInfoController) Detail() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	////判断是否需要展示英文标识
 	//chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
 	//chartInfo.UnitEn = edbInfoMappingA.UnitEn
@@ -1221,7 +1221,7 @@ func (c *ChartInfoController) DeleteChart() {
 		return
 	}
 	//图表操作权限
-	ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	if !ok {
 		br.Msg = "没有该图表的操作权限"
 		br.ErrMsg = "没有该图表的操作权限"
@@ -1553,7 +1553,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	//chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList[0:1], chartInfo.Source, chartInfo.ChartType)
 	//chartInfo.UnitEn = edbInfoMappingA.UnitEn

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

@@ -315,7 +315,7 @@ func (c *ClassifyController) DeleteChartClassify() {
 			return
 		}
 		//图表操作权限
-		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 		if !ok {
 			br.Msg = "没有该图表的操作权限"
 			br.ErrMsg = "没有该图表的操作权限"

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

@@ -450,7 +450,7 @@ func (this *FutureGoodChartClassifyController) DeleteChartClassify() {
 			return
 		}
 		//图表操作权限
-		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 		if !ok {
 			br.Msg = "没有该图表的操作权限"
 			br.ErrMsg = "没有该图表的操作权限"

+ 5 - 5
controllers/data_manage/future_good/future_good_chart_info.go

@@ -653,7 +653,7 @@ func (this *FutureGoodChartInfoController) ChartInfoEdit() {
 	}
 
 	//图表操作权限
-	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId, true)
 	if !ok {
 		br.Msg = "没有该图表的操作权限"
 		br.ErrMsg = "没有该图表的操作权限"
@@ -1397,7 +1397,7 @@ func getFutureGoodChartInfo(chartInfo *data_manage.ChartInfoView, chartType, dat
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	chartInfo.Button.IsEdit = chartInfo.IsEdit
 	chartInfo.Button.IsCopy = true
 	//判断是否需要展示英文标识
@@ -1646,7 +1646,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	chartInfo.Button.IsEdit = chartInfo.IsEdit
 	chartInfo.Button.IsCopy = true
 	//判断是否需要展示英文标识
@@ -2099,7 +2099,7 @@ func (this *FutureGoodChartInfoController) BaseChartInfoDetailFromUniqueCode() {
 		}
 
 		//图表操作权限
-		chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+		chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 		chartInfo.Button.IsEdit = chartInfo.IsEdit
 		chartInfo.Button.IsCopy = true
 		//判断是否需要展示英文标识
@@ -2905,7 +2905,7 @@ func (this *FutureGoodChartInfoController) PreviewBarChartInfo() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	chartInfo.Button.IsEdit = chartInfo.IsEdit
 	chartInfo.Button.IsCopy = true
 	//判断是否需要展示英文标识

+ 4 - 4
controllers/data_manage/future_good/future_good_profit_chart_info.go

@@ -412,7 +412,7 @@ func (this *FutureGoodChartInfoController) ProfitChartInfoEdit() {
 	}
 
 	//图表操作权限
-	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId, true)
 	if !ok {
 		br.Msg = "没有该图表的操作权限"
 		br.ErrMsg = "没有该图表的操作权限"
@@ -957,7 +957,7 @@ func (this *FutureGoodChartInfoController) PreviewProfitChartInfo() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	chartInfo.Button.IsEdit = chartInfo.IsEdit
 	chartInfo.Button.IsCopy = true
 	//判断是否需要展示英文标识
@@ -1073,7 +1073,7 @@ func getFutureGoodProfitChartInfo(chartInfo *data_manage.ChartInfoView, sysUser
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	chartInfo.Button.IsEdit = chartInfo.IsEdit
 	chartInfo.Button.IsCopy = true
 	//判断是否需要展示英文标识
@@ -1248,7 +1248,7 @@ func GetFutureGoodProfitChartInfoDetailFromUniqueCode(chartInfo *data_manage.Cha
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	chartInfo.Button.IsEdit = chartInfo.IsEdit
 	chartInfo.Button.IsCopy = true
 	//判断是否需要展示英文标识

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

@@ -457,7 +457,7 @@ func (this *LineEquationChartClassifyController) DeleteChartClassify() {
 			return
 		}
 		//图表操作权限
-		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 		if !ok {
 			br.Msg = "没有该图表的操作权限"
 			br.ErrMsg = "没有该图表的操作权限"

+ 2 - 2
controllers/data_manage/line_equation/line_chart_info.go

@@ -829,7 +829,7 @@ func (this *LineEquationChartInfoController) Detail() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, chartInfo.Source, chartInfo.ChartType)
 	//chartInfo.UnitEn = edbInfoMappingA.UnitEn
@@ -1263,7 +1263,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, chartInfo.Source, chartInfo.ChartType)
 	//chartInfo.UnitEn = edbInfoMappingA.UnitEn

+ 2 - 2
controllers/data_manage/line_feature/chart_info.go

@@ -1920,7 +1920,7 @@ func (this *LineFeaturesChartInfoController) Detail() {
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, chartInfo.Source, chartInfo.ChartType)
 	//chartInfo.UnitEn = edbInfoMappingA.UnitEn
@@ -2395,7 +2395,7 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 	}
 
 	//图表操作权限
-	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, []*data_manage.ChartEdbInfoMapping{}, chartInfo.Source, chartInfo.ChartType)
 	//chartInfo.UnitEn = edbInfoMappingA.UnitEn

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

@@ -457,7 +457,7 @@ func (this *LineFeaturesChartClassifyController) DeleteChartClassify() {
 			return
 		}
 		//图表操作权限
-		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId)
+		ok := data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
 		if !ok {
 			br.Msg = "没有该图表的操作权限"
 			br.ErrMsg = "没有该图表的操作权限"

+ 23 - 2
services/data/chart_info.go

@@ -8,6 +8,7 @@ import (
 	"eta/eta_api/models/data_manage"
 	"eta/eta_api/models/system"
 	"eta/eta_api/services/alarm_msg"
+	"eta/eta_api/services/data/data_manage_permission"
 	"eta/eta_api/utils"
 	"fmt"
 	"github.com/shopspring/decimal"
@@ -273,7 +274,11 @@ func GetChartInfoDataKey(chartInfoId int) string {
 }
 
 // CheckOpChartPermission 判断图表操作权限
-func CheckOpChartPermission(sysUser *system.Admin, createUserId int) (ok bool) {
+func CheckOpChartPermission(sysUser *system.Admin, createUserId int, haveOperaAuth bool) (ok bool) {
+	// 没有数据权限,那么直接返回
+	if !haveOperaAuth {
+		return
+	}
 	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_ADMIN || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN {
 		ok = true
 	}
@@ -2427,8 +2432,24 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 	}
 	req.ExtraConfig = extraConfig
 
+	// 权限
+	var haveOperaAuth bool
+	{
+		// 已授权分类id
+		permissionChartIdList, permissionClassifyIdList, tmpErr := data_manage_permission.GetUserChartAndClassifyPermissionList(sysUser.AdminId, chartItem.ChartInfoId, chartItem.ChartClassifyId)
+		if tmpErr != nil {
+			if errMsg == `` {
+				errMsg = "获取失败!"
+			}
+			err = errors.New("获取已授权分类id数据失败,Err:" + tmpErr.Error())
+			return
+		}
+		haveOperaAuth = data_manage_permission.CheckChartPermissionByPermissionIdList(chartItem.IsJoinPermission, chartClassify.IsJoinPermission, chartItem.ChartInfoId, chartItem.ChartClassifyId, permissionChartIdList, permissionClassifyIdList)
+
+	}
+
 	//图表操作权限
-	ok := CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	ok := CheckOpChartPermission(sysUser, chartItem.SysUserId, haveOperaAuth)
 	if !ok {
 		errMsg = "没有该图表的操作权限"
 		err = errors.New(errMsg)

+ 1 - 1
services/data/correlation/chart_info.go

@@ -1003,7 +1003,7 @@ func EditChartInfo(req data_manage.EditChartInfoReq, sysUser *system.Admin) (cha
 	}
 
 	// 图表操作权限
-	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId, true)
 	if !ok {
 		errMsg = "没有该图表的操作权限"
 		err = errors.New(errMsg)

+ 1 - 1
services/data/cross_variety/chart.go

@@ -852,7 +852,7 @@ func EditChartInfo(req request.EditChartReq, sysUser *system.Admin) (chartItem *
 	}
 
 	// 图表操作权限
-	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId, true)
 	if !ok {
 		errMsg = "没有该图表的操作权限"
 		err = errors.New(errMsg)

+ 1 - 1
services/data/line_feature/chart_info.go

@@ -575,7 +575,7 @@ func EditChartInfo(req data_manage.EditChartInfoReq, edbInfoMapping *data_manage
 	}
 
 	// 图表操作权限
-	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId)
+	ok := data.CheckOpChartPermission(sysUser, chartItem.SysUserId, true)
 	if !ok {
 		errMsg = "没有该图表的操作权限"
 		err = errors.New(errMsg)