Browse Source

feat:新增根据资产id获取其分类没有权限的用户id列表接口

Roc 11 months ago
parent
commit
ab8d8662fc

+ 61 - 16
controllers/data_manage/data_manage_permission/data_manage_permission.go

@@ -238,21 +238,6 @@ func (c *DataMangePermissionController) GetEdbChartPermission() {
 	}
 
 	dataId, _ := c.GetInt("DataId")
-
-	// 来源判断
-	if source <= 0 || source > 6 {
-		br.Msg = "错误的来源"
-		br.IsSendEmail = false
-		return
-	}
-
-	// 子来源(目前作用于ETA表格,2024-3-26 14:12:09)
-	if source == 6 && (subSource <= utils.EXCEL_DEFAULT || subSource > utils.CUSTOM_ANALYSIS_TABLE) {
-		br.Msg = "错误的子来源"
-		br.IsSendEmail = false
-		return
-	}
-
 	// 用户判断
 	if dataId <= 0 {
 		br.Msg = "请选择数据"
@@ -261,7 +246,7 @@ func (c *DataMangePermissionController) GetEdbChartPermission() {
 	}
 
 	// 获取已经配置了的资产id列表
-	idList, err := data_manage_permission.GetEdbChartIdListPermissionByDataId(source, subSource, dataId)
+	idList, err := data_manage_permission.GetUserIdListPermissionByDataId(source, subSource, dataId)
 	if err != nil {
 		//br.Success = true
 		br.Msg = "获取失败"
@@ -347,3 +332,63 @@ func (c *DataMangePermissionController) GetEdbChartClassifyPermission() {
 	br.Msg = "获取成功"
 	br.Data = idList
 }
+
+// GetEdbChartNoPermission
+// @Title 根据资产id获取其分类没有权限的用户id列表接口
+// @Description 根据资产id获取其分类没有权限的用户id列表接口
+// @Param   Source   query   int  false       "来源 :1:手工数据指标 2:钢联化工数据库 3:ETA指标库 4:ETA预测指标 5:图库 6:ETA表格"
+// @Param   SubSource   query   int  false       "子来源 :目前作用于ETA表格,2024-3-26 14:12:09"
+// @Param   DataId   query   int  false       "资产id"
+// @Success 200 {object} data_manage.ChartListResp
+// @router /edb_chart/no_classify_permission/show_by_data [get]
+func (c *DataMangePermissionController) GetEdbChartNoPermission() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		c.Data["json"] = br
+		c.ServeJSON()
+	}()
+	sysUser := c.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	source, _ := c.GetInt("Source")
+	if source <= 0 || source > 6 {
+		br.Msg = "错误的来源"
+		br.IsSendEmail = false
+		return
+	}
+
+	// 子来源(目前作用于ETA表格,2024-3-26 14:12:09)
+	subSource, _ := c.GetInt("SubSource")
+	if source == 6 && (subSource <= utils.EXCEL_DEFAULT || subSource > utils.CUSTOM_ANALYSIS_TABLE) {
+		br.Msg = "错误的子来源"
+		br.IsSendEmail = false
+		return
+	}
+
+	dataId, _ := c.GetInt("DataId")
+
+	// 用户判断
+	if dataId <= 0 {
+		br.Msg = "请选择数据"
+		br.IsSendEmail = false
+		return
+	}
+
+	// 获取已经配置了的资产id列表
+	idList, err := data_manage_permission.GetUserIdListNoPermissionByDataId(source, subSource, dataId)
+	if err != nil {
+		//br.Success = true
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = idList
+}

+ 20 - 4
models/data_manage/data_manage_permission/chart.go

@@ -301,18 +301,34 @@ func GetPermissionChartClassifyIdListByUserId(userId int, classifyType int) (cha
 	return
 }
 
-// GetPermissionChartIdListByDataId
-// @Description: 根据资产(图表、图表、表格)ID获取已经配置的用户id列表
+// GetPermissionUserIdListByChartId
+// @Description: 根据图表ID获取已经配置的用户id列表
 // @author: Roc
 // @datetime 2024-03-29 16:24:46
 // @param dataId int
 // @param source int
 // @return chartIdList []int
 // @return err error
-func GetPermissionChartIdListByDataId(dataId int, source int) (chartIdList []int, err error) {
+func GetPermissionUserIdListByChartId(dataId int, source int) (userIdList []int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT sys_user_id FROM chart_info_permission WHERE source = ? AND chart_info_id= ? `
-	_, err = o.Raw(sql, source, dataId).QueryRows(&chartIdList)
+	_, err = o.Raw(sql, source, dataId).QueryRows(&userIdList)
+
+	return
+}
+
+// GetPermissionUserIdListByChartClassifyId
+// @Description: 根据图表分类ID获取已经配置的用户id列表
+// @author: Roc
+// @datetime 2024-03-29 16:24:46
+// @param classifyId int
+// @param source int
+// @return userIdList []int
+// @return err error
+func GetPermissionUserIdListByChartClassifyId(classifyId int, source int) (userIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT sys_user_id FROM chart_classify_permission WHERE source = ? AND chart_classify_id= ? `
+	_, err = o.Raw(sql, source, classifyId).QueryRows(&userIdList)
 
 	return
 }

+ 21 - 5
models/data_manage/data_manage_permission/edb.go

@@ -299,18 +299,34 @@ func GetPermissionEdbClassifyIdListByUserId(userId int, classifyType int) (edbCl
 	return
 }
 
-// GetPermissionEdbIdListByDataId
-// @Description: 根据资产(指标、图表、表格)ID获取已经配置的用户id列表
+// GetPermissionUserIdListByEdbId
+// @Description: 根据指标ID获取已经配置的用户id列表
 // @author: Roc
 // @datetime 2024-03-29 16:24:46
 // @param dataId int
 // @param edbInfoType int
-// @return edbIdList []int
+// @return userIdList []int
 // @return err error
-func GetPermissionEdbIdListByDataId(dataId int, edbInfoType int) (edbIdList []int, err error) {
+func GetPermissionUserIdListByEdbId(dataId int, edbInfoType int) (userIdList []int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT sys_user_id FROM edb_info_permission WHERE edb_info_type = ? AND edb_info_id= ? `
-	_, err = o.Raw(sql, edbInfoType, dataId).QueryRows(&edbIdList)
+	_, err = o.Raw(sql, edbInfoType, dataId).QueryRows(&userIdList)
+
+	return
+}
+
+// GetPermissionUserIdListByEdbClassifyId
+// @Description: 根据指标分类ID获取已经配置的用户id列表
+// @author: Roc
+// @datetime 2024-03-29 16:24:46
+// @param classifyId int
+// @param edbClassifyType int
+// @return userIdList []int
+// @return err error
+func GetPermissionUserIdListByEdbClassifyId(classifyId int, edbClassifyType int) (userIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT sys_user_id FROM edb_classify_permission WHERE edb_classify_type = ? AND edb_classify_id= ? `
+	_, err = o.Raw(sql, edbClassifyType, classifyId).QueryRows(&userIdList)
 
 	return
 }

+ 21 - 5
models/data_manage/data_manage_permission/excel.go

@@ -297,18 +297,34 @@ func GetPermissionExcelClassifyIdListByUserId(userId int, classifyType int) (exc
 	return
 }
 
-// GetPermissionExcelIdListByDataId
-// @Description: 根据资产(表格、表格、表格)ID获取已经配置的用户id列表
+// GetPermissionUserIdListByExcelId
+// @Description: 根据表格ID获取已经配置的用户id列表
 // @author: Roc
 // @datetime 2024-03-29 16:24:46
 // @param dataId int
 // @param source int
-// @return excelIdList []int
+// @return userIdList []int
 // @return err error
-func GetPermissionExcelIdListByDataId(dataId int, source int) (excelIdList []int, err error) {
+func GetPermissionUserIdListByExcelId(dataId int, source int) (userIdList []int, err error) {
 	o := orm.NewOrmUsingDB("data")
 	sql := `SELECT sys_user_id FROM excel_info_permission WHERE source = ? AND excel_info_id= ? `
-	_, err = o.Raw(sql, source, dataId).QueryRows(&excelIdList)
+	_, err = o.Raw(sql, source, dataId).QueryRows(&userIdList)
+
+	return
+}
+
+// GetPermissionUserIdListByExcelClassifyId
+// @Description: 根据表格分类ID获取已经配置的用户id列表
+// @author: Roc
+// @datetime 2024-03-29 16:24:46
+// @param classifyId int
+// @param source int
+// @return userIdList []int
+// @return err error
+func GetPermissionUserIdListByExcelClassifyId(classifyId int, source int) (userIdList []int, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := `SELECT sys_user_id FROM excel_classify_permission WHERE source = ? AND excel_classify_id= ? `
+	_, err = o.Raw(sql, source, classifyId).QueryRows(&userIdList)
 
 	return
 }

+ 9 - 0
models/data_manage/excel/excel_info.go

@@ -390,6 +390,15 @@ func GetNoContentExcelInfoByUniqueCode(uniqueCode string) (item *MyExcelInfoList
 	return
 }
 
+// GetNoContentExcelInfoByExcelId 根据表格id来获取excel表格详情
+func GetNoContentExcelInfoByExcelId(excelInfoId int) (item *MyExcelInfoList, err error) {
+	o := orm.NewOrmUsingDB("data")
+	sql := ` SELECT excel_info_id,source,excel_type,excel_name,unique_code,excel_classify_id,sys_user_id,sys_user_real_name,excel_image,file_url,sort,create_time,modify_time,is_join_permission 
+ FROM excel_info WHERE excel_info_id=? AND is_delete=0 `
+	err = o.Raw(sql, excelInfoId).QueryRow(&item)
+	return
+}
+
 // AddExcelInfoAndSheet 新增excel
 func AddExcelInfoAndSheet(excelInfo *ExcelInfo, sheetParamsList []AddExcelSheetParams) (err error) {
 	o, err := orm.NewOrmUsingDB("data").Begin()

+ 9 - 0
routers/commentsRouter.go

@@ -592,6 +592,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"],
+        beego.ControllerComments{
+            Method: "GetEdbChartNoPermission",
+            Router: `/edb_chart/no_classify_permission/show_by_data`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage/data_manage_permission:DataMangePermissionController"],
         beego.ControllerComments{
             Method: "SetEdbChartPermission",

+ 122 - 15
services/data/data_manage_permission/edb_permission.go

@@ -483,8 +483,8 @@ func GetEdbChartClassifyIdListPermissionByUserId(source, subSource, userId int)
 	return
 }
 
-// GetEdbChartIdListPermissionByDataId
-// @Description: 根据用户id获取已经配置的资产(指标、图表、表格)id列表
+// GetUserIdListPermissionByDataId
+// @Description: 根据资产(指标、图表、表格)id获取已经配置的用户id
 // @author: Roc
 // @datetime 2024-03-29 16:26:10
 // @param source int
@@ -492,31 +492,138 @@ func GetEdbChartClassifyIdListPermissionByUserId(source, subSource, userId int)
 // @param dataId int
 // @return idList []int
 // @return err error
-func GetEdbChartIdListPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
+func GetUserIdListPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
 	switch source {
-	case 3, 4: //ETA指标库、ETA预测指标
-		//tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
-		//if tmpErr != nil {
-		//	err = tmpErr
-		//	return
-		//}
-		//if len(tmpList) > 0 {
-		//}
+	case 3, 4:
+		// ETA指标库、ETA预测指标
 		edbInfoType := 0
 		if source == 4 {
 			edbInfoType = 1
 		}
-		idList, err = data_manage_permission.GetPermissionEdbIdListByDataId(dataId, edbInfoType)
+		idList, err = data_manage_permission.GetPermissionUserIdListByEdbId(dataId, edbInfoType)
 	case 5:
-		//图库
+		// 图库
+		chartClassifySource := utils.CHART_SOURCE_DEFAULT
+		idList, err = data_manage_permission.GetPermissionUserIdListByChartId(dataId, chartClassifySource)
+	case 6:
+		// ETA表格
+		idList, err = data_manage_permission.GetPermissionUserIdListByExcelId(dataId, subSource)
+	default:
+		return
+	}
+	return
+}
+
+// GetUserIdListNoPermissionByDataId
+// @Description: 根据资产(指标、图表、表格)id获取没有该资产分类权限的用户id
+// @author: Roc
+// @datetime 2024-03-29 16:26:10
+// @param source int
+// @param subSource int
+// @param dataId int
+// @return idList []int
+// @return err error
+func GetUserIdListNoPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
+	// 已经授权的用户map
+	authIdList := make([]int, 0)
+
+	switch source {
+	case 3, 4:
+		// ETA指标库、ETA预测指标
+		edbInfoType := 0
+		if source == 4 {
+			edbInfoType = 1
+		}
+
+		// 获取指标
+		edbInfoItem, tmpErr := data_manage.GetEdbInfoById(dataId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		// 获取分类
+		classifyItem, tmpErr := data_manage.GetEdbClassifyById(edbInfoItem.ClassifyId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		// 判断分类是否涉密,不涉密就直接返回
+		if classifyItem.IsJoinPermission == 0 {
+			return
+		}
+
+		// 获取已经配置分类权限的用户ID列表
+		authIdList, err = data_manage_permission.GetPermissionUserIdListByEdbClassifyId(dataId, edbInfoType)
+	case 5:
+		// 图库
+
+		// 获取图表
+		chartInfoItem, tmpErr := data_manage.GetChartInfoById(dataId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		// 获取分类
+		classifyItem, tmpErr := data_manage.GetChartClassifyById(chartInfoItem.ChartClassifyId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		// 判断分类是否涉密,不涉密就直接返回
+		if classifyItem.IsJoinPermission == 0 {
+			return
+		}
+
 		chartClassifySource := utils.CHART_SOURCE_DEFAULT
-		idList, err = data_manage_permission.GetPermissionChartIdListByDataId(dataId, chartClassifySource)
+		authIdList, err = data_manage_permission.GetPermissionUserIdListByChartClassifyId(dataId, chartClassifySource)
 	case 6:
 		// ETA表格
-		idList, err = data_manage_permission.GetPermissionExcelIdListByDataId(dataId, subSource)
+
+		// 获取图表
+		excelInfoItem, tmpErr := excel.GetNoContentExcelInfoByExcelId(dataId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+
+		// 获取分类
+		classifyItem, tmpErr := excel.GetExcelClassifyById(excelInfoItem.ExcelClassifyId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		// 判断分类是否涉密,不涉密就直接返回
+		if classifyItem.IsJoinPermission == 0 {
+			return
+		}
+
+		authIdList, err = data_manage_permission.GetPermissionUserIdListByExcelClassifyId(dataId, subSource)
 	default:
 		return
 	}
+
+	// 已经授权的用户map
+	authUserIdMap := make(map[int]int)
+	for _, v := range authIdList {
+		authUserIdMap[v] = v
+	}
+
+	// 获取所有在用的用户
+	cond := ` AND enabled = 1`
+	pars := make([]interface{}, 0)
+
+	adminList, authRecordErr := system.GetSysAdminList(cond, pars, []string{}, "")
+	if authRecordErr != nil {
+		return
+	}
+
+	for _, v := range adminList {
+		if _, ok := authUserIdMap[v.AdminId]; !ok {
+			idList = append(idList, v.AdminId)
+		}
+	}
+
 	return
 }