Prechádzať zdrojové kódy

fix:共享编辑图表,被共享人无编辑权限bug修复

Roc 1 deň pred
rodič
commit
deeb8bafd2

+ 90 - 0
controllers/data_manage/chart_info.go

@@ -1163,6 +1163,16 @@ func (this *ChartInfoController) ChartInfoDetail() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -1365,8 +1375,18 @@ func (this *ChartInfoController) PreviewChartInfoDetail() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -1716,6 +1736,16 @@ func (this *ChartInfoController) ChartInfoDetailV2() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -2592,6 +2622,16 @@ func GetChartInfoDetailFromUniqueCode(chartInfo *data_manage.ChartInfoView, isCa
 				}
 				//图表操作权限
 				chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, resp.ChartInfo.HaveOperaAuth)
+				// 如果没有操作权限,那么去获取共享用户的编辑权限
+				if !chartInfo.IsEdit {
+					chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+					if err != nil {
+						msg = "获取失败"
+						errMsg = "获取图表分享情况信息失败,GetAllUserIdListByChartInfoId,Err:" + err.Error()
+						return
+					}
+				}
+
 				chartInfo.Button = data_manage.ChartViewButton{
 					IsEdit:    chartInfo.IsEdit,
 					IsEnChart: chartInfo.IsEnChart,
@@ -3384,8 +3424,18 @@ func (this *ChartInfoController) PreviewBarChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, chartInfo.Source, chartInfo.ChartType)
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -3532,8 +3582,18 @@ func (this *ChartInfoController) PreviewSectionScatterChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
+
 	chartInfo.Button = data_manage.ChartViewButton{
 		IsEdit:    chartInfo.IsEdit,
 		IsEnChart: chartInfo.IsEnChart,
@@ -3673,6 +3733,16 @@ func (this *ChartInfoController) PreviewRadarChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
 	chartInfo.Button = data_manage.ChartViewButton{
@@ -3807,6 +3877,16 @@ func (this *ChartInfoController) ChartInfoConvertDetail() {
 
 		//图表操作权限
 		chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, chartInfo.HaveOperaAuth)
+		// 如果没有操作权限,那么去获取共享用户的编辑权限
+		if !chartInfo.IsEdit {
+			chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+			if err != nil {
+				br.Msg = `获取失败`
+				br.ErrMsg = `获取失败:` + err.Error()
+				return
+			}
+		}
+
 		chartInfo.Button = data_manage.ChartViewButton{
 			IsEdit:    chartInfo.IsEdit,
 			IsEnChart: chartInfo.IsEnChart,
@@ -4179,6 +4259,16 @@ func (this *ChartInfoController) PreviewSeasonChartInfo() {
 
 	//图表操作权限
 	chartInfo.IsEdit = data.CheckOpChartPermission(sysUser, chartInfo.SysUserId, true)
+	// 如果没有操作权限,那么去获取共享用户的编辑权限
+	if !chartInfo.IsEdit {
+		chartInfo.IsEdit, err = data.CheckChartInfoEditPermission(chartInfo.ChartInfoId, sysUser.AdminId)
+		if err != nil {
+			br.Msg = `获取失败`
+			br.ErrMsg = `获取失败:` + err.Error()
+			return
+		}
+	}
+
 	//判断是否需要展示英文标识
 	chartInfo.IsEnChart = data.CheckIsEnChart(chartInfo.ChartNameEn, edbList, utils.CHART_SOURCE_DEFAULT, chartType)
 	chartInfo.Button = data_manage.ChartViewButton{

+ 16 - 0
models/data_manage/chart_info_share.go

@@ -199,6 +199,22 @@ func (m ChartInfoShare) GetAllUserIdListByChartInfoIdAndNoShareType(chartInfoId
 	return
 }
 
+// GetAllUserIdListByChartInfoIdAndShareType
+// @Description: 根据图表id和共享类型,获取所有用户id
+// @author: Roc
+// @receiver m
+// @datetime 2024-12-27 15:33:16
+// @param chartInfoId int
+// @param shareType int8
+// @return list []int
+// @return err error
+func (m ChartInfoShare) GetAllUserIdListByChartInfoIdAndShareType(chartInfoId int, shareType int8) (list []int, err error) {
+	sql := `SELECT a.sys_user_id  FROM chart_info_share AS a 
+	  WHERE 1=1 AND a.chart_info_id = ? AND a.share_type = ? GROUP BY a.sys_user_id `
+	err = global.DmSQL["data"].Raw(sql, chartInfoId, shareType).Scan(&list).Error
+	return
+}
+
 // GetAllEditSharedChartInfoIdListByReceivedUserId
 // @Description: 获取所有我收到的共享的、可以编辑的图表id列表
 // @author: Roc

+ 1 - 0
services/data/chart_info.go

@@ -66,6 +66,7 @@ func CheckOpChartPermission(sysUser *system.Admin, createUserId int, haveOperaAu
 	if ok == false && sysUser.ChartPermission == 1 {
 		ok = true
 	}
+
 	return
 }
 

+ 26 - 0
services/data/chart_info_share.go

@@ -2,6 +2,7 @@ package data
 
 import (
 	"eta_gn/eta_api/models/data_manage"
+	"eta_gn/eta_api/utils"
 	"strconv"
 	"strings"
 )
@@ -187,3 +188,28 @@ func GetAllEditSharedChartInfoIdMapByReceivedUserIdAndChartInfoIdList(userId int
 
 	return
 }
+
+// CheckChartInfoEditPermission
+// @Description: 检测图表是否有编辑权限
+// @author: Roc
+// @datetime 2025-06-23 10:57:05
+// @param chartInfoId int
+// @param userId int
+// @return isOk bool
+// @return err error
+func CheckChartInfoEditPermission(chartInfoId int, userId int) (isOk bool, err error) {
+	// 共享列表
+	obj := data_manage.ChartInfoShare{}
+	shareUserIdList, err := obj.GetAllUserIdListByChartInfoIdAndShareType(chartInfoId, utils.ShareTypeEdit)
+	if err != nil {
+		return
+	}
+	for _, shareUserId := range shareUserIdList {
+		if shareUserId == userId {
+			isOk = true
+			break
+		}
+	}
+
+	return
+}

+ 2 - 2
utils/constants.go

@@ -481,8 +481,8 @@ const (
 )
 
 const (
-	ShareTypeRead = 1 // 仅查看
-	ShareTypeEdit = 2 // 可编辑
+	ShareTypeRead int8 = 1 // 仅查看
+	ShareTypeEdit int8 = 2 // 可编辑
 )
 
 const (