Browse Source

fix:添加配置指标权限,涉密分类等接口

Roc 11 months ago
parent
commit
0f4cccd13b

+ 79 - 16
controllers/data_manage/data_manage_permission.go

@@ -14,13 +14,13 @@ type DataMangePermissionController struct {
 	controllers.BaseAuthController
 }
 
-// SetPermissionEdbChart
-// @Title 指标/图表权限设置接口
-// @Description 指标/图表权限设置接口
-// @Param	request	body data_manage.SetPermissionEdbChartReq true "type json string"
+// SetEdbChartPermission
+// @Title 指标/图表/表格权限设置接口
+// @Description 指标/图表/表格权限设置接口
+// @Param	request	body data_manage.SetEdbChartPermissionReq true "type json string"
 // @Success 200 {object} data_manage.ChartListResp
 // @router /edb_chart/permission/set [post]
-func (c *DataMangePermissionController) SetPermissionEdbChart() {
+func (c *DataMangePermissionController) SetEdbChartPermission() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		c.Data["json"] = br
@@ -34,7 +34,7 @@ func (c *DataMangePermissionController) SetPermissionEdbChart() {
 		return
 	}
 
-	var req data_manage.SetPermissionEdbChartReq
+	var req data_manage.SetEdbChartPermissionReq
 	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
 	if err != nil {
 		br.Msg = "参数解析异常!"
@@ -61,28 +61,28 @@ func (c *DataMangePermissionController) SetPermissionEdbChart() {
 		return
 	}
 
-	err, errMsg := data.SetPermissionEdbChart(req.Source, req.SubSource, req.UserId, req.UserList, req.IsSelectAll, req.DataIdList, req.NoDataIdList, req.Keyword, req.ClassifyId)
+	err, errMsg := data.SetEdbChartPermission(req.Source, req.SubSource, req.UserId, req.UserList, req.IsSelectAll, req.DataIdList, req.NoDataIdList, req.Keyword, req.ClassifyId)
 	if err != nil {
 		//br.Success = true
-		br.Msg = "移动失败"
+		br.Msg = "设置失败"
 		if errMsg != `` {
 			br.Msg = errMsg
 		}
-		br.ErrMsg = "移动失败,Err:" + err.Error()
+		br.ErrMsg = "设置失败,Err:" + err.Error()
 		return
 	}
 	br.Ret = 200
 	br.IsAddLog = true
 	br.Success = true
-	br.Msg = "修改成功"
+	br.Msg = "设置成功"
 }
 
 // SetPermissionEdbChartClassifyIsPermission
-// @Title 指标/图表分类是否涉密设置接口
-// @Description 指标/图表分类是否涉密设置接口
+// @Title 指标/图表/表格分类是否涉密设置接口
+// @Description 指标/图表/表格分类是否涉密设置接口
 // @Param	request	body data_manage.MoveEdbChartReq true "type json string"
 // @Success 200 {object} data_manage.ChartListResp
-// @router /edb_chart/permission/classify/is_permission/set [post]
+// @router /edb_chart/classify/permission/is_permission/set [post]
 func (c *DataMangePermissionController) SetPermissionEdbChartClassifyIsPermission() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
@@ -121,16 +121,79 @@ func (c *DataMangePermissionController) SetPermissionEdbChartClassifyIsPermissio
 	err, errMsg := data.SetDataIsPermission(req.Source, req.SubSource, req.ClassifyIdList)
 	if err != nil {
 		//br.Success = true
-		br.Msg = "移动失败"
+		br.Msg = "设置失败"
 		if errMsg != `` {
 			br.Msg = errMsg
 		}
-		br.ErrMsg = "移动失败,Err:" + err.Error()
+		br.ErrMsg = "设置失败,Err:" + err.Error()
 		return
 	}
 
 	br.Ret = 200
 	br.IsAddLog = true
 	br.Success = true
-	br.Msg = "修改成功"
+	br.Msg = "设置成功"
+}
+
+// SetEdbChartClassifyPermission
+// @Title 指标/图表/表格分类权限设置接口
+// @Description 指标/图表/表格分类权限设置接口
+// @Param	request	body data_manage.SetEdbChartClassifyPermissionReq true "type json string"
+// @Success 200 {object} data_manage.ChartListResp
+// @router /edb_chart/classify/permission/set [post]
+func (c *DataMangePermissionController) SetEdbChartClassifyPermission() {
+	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
+	}
+
+	var req data_manage.SetEdbChartClassifyPermissionReq
+	err := json.Unmarshal(c.Ctx.Input.RequestBody, &req)
+	if err != nil {
+		br.Msg = "参数解析异常!"
+		br.ErrMsg = "参数解析失败,Err:" + err.Error()
+		return
+	}
+
+	if req.Source <= 0 || req.Source > 6 {
+		br.Msg = "错误的来源"
+		br.IsSendEmail = false
+		return
+	}
+
+	// 子来源(目前作用于ETA表格,2024-3-26 14:12:09)
+	if req.Source == 6 && (req.SubSource <= utils.EXCEL_DEFAULT || req.SubSource > utils.CUSTOM_ANALYSIS_TABLE) {
+		br.Msg = "错误的子来源"
+		br.IsSendEmail = false
+		return
+	}
+
+	if len(req.UserList) <= 0 {
+		br.Msg = "请选择用户"
+		br.IsSendEmail = false
+		return
+	}
+
+	err, errMsg := data.SetEdbChartClassifyPermission(req.Source, req.SubSource, req.UserList, req.ClassifyIdList)
+	if err != nil {
+		//br.Success = true
+		br.Msg = "设置失败"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "设置失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.IsAddLog = true
+	br.Success = true
+	br.Msg = "设置成功"
 }

+ 7 - 7
controllers/data_manage/edb_info.go

@@ -3948,13 +3948,13 @@ func (this *EdbInfoController) MoveEdbChartList() {
 	resp.List = defaultList
 	resp.Paging = page
 	// 没有传入条件,那就默认自动返回
-	if userId <= 0 && keyword == `` && classify == `` {
-		br.Ret = 200
-		br.Success = true
-		br.Msg = "获取成功"
-		br.Data = resp
-		return
-	}
+	//if userId <= 0 && keyword == `` && classify == `` {
+	//	br.Ret = 200
+	//	br.Success = true
+	//	br.Msg = "获取成功"
+	//	br.Data = resp
+	//	return
+	//}
 
 	list, total, err := data.GetMoveEdbChartList(source, subSource, userId, keyword, classify, startSize, pageSize)
 	if err != nil {

+ 63 - 63
models/data_manage/data_manage_permission.go

@@ -50,16 +50,20 @@ func SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList []int) (err error
 	//	edbClassifyMap[v.ClassifyId] = v
 	//}
 
-	// 分类不选的情况下,说明是要给这些分类移除权限管控
-	if len(classifyIdList) <= 0 {
-		// 将所有的分类设置为不涉密
-		sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE is_join_permission = 1 `
-		_, err = o.Raw(sql, 0, 1).Exec()
+	// 先将所有已经设置了涉密的分类设置为不涉密
+	sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE is_join_permission = 1 `
+	_, err = o.Raw(sql, 0).Exec()
+	if err != nil {
 		return
-	} else {
+	}
+
+	if len(classifyIdList) > 0 {
 		// 将对应的分类设置为涉密
-		sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE classify_id in (` + utils.GetOrmInReplace(num) + `) `
+		sql = `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE classify_id in (` + utils.GetOrmInReplace(num) + `) `
 		_, err = o.Raw(sql, 1, classifyIdList).Exec()
+		if err != nil {
+			return
+		}
 	}
 
 	// TODO 判断是否要记录移除的分类,用于发送通知给客户
@@ -67,14 +71,14 @@ func SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList []int) (err error
 	return
 }
 
-// SetPermissionEdbChartReq
+// SetEdbChartPermissionReq
 // @Description: 设置数据权限请求
-type SetPermissionEdbChartReq struct {
+type SetEdbChartPermissionReq struct {
 	Source       int      `description:"来源id"`
 	SubSource    int      `description:"子来源id"`
 	UserId       int      `description:"用户筛选"`
-	DataIdList   []string `description:"指标/图表唯一id列表"`
-	NoDataIdList []string `description:"指标/图表唯一id列表"`
+	DataIdList   []string `description:"指标/图表/表格唯一id列表"`
+	NoDataIdList []string `description:"指标/图表/表格唯一id列表"`
 	UserList     []int    `description:"赋权用户id列表,如果为空,说明要给这些指标移除权限管控"`
 	IsSelectAll  bool     `description:"是否选择所有指标"`
 	ClassifyId   string   `description:"分类id,支持多选,用英文,隔开"`
@@ -137,16 +141,20 @@ func SetPermissionEdbChartByEdbIdList(edbIdList []string, userIdList []int) (err
 		edbInfoPermissionMap[fmt.Sprint(v.EdbInfoId, "_", v.SysUserId)] = v
 	}
 
-	// 用户不选的情况下,说明是要给这些指标移除权限管控
-	if len(userIdList) <= 0 {
-		// 标记指标为不纳入权限管控
-		sql = `UPDATE edb_info SET is_join_permission=?,modify_time=now() WHERE edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
-		_, err = o.Raw(sql, 0, edbIdList).Exec()
-		return
-	} else {
-		// 标记指标为纳入权限管控
+	// 标记指标是否纳入权限管控
+	{
+		// 默认 标记指标为纳入权限管控
+		isJoinPermission := 1
+		// 用户不选的情况下,说明是要给这些指标移除权限管控
+		if len(userIdList) <= 0 {
+			// 标记指标为不纳入权限管控
+			isJoinPermission = 0
+		}
 		sql = `UPDATE edb_info SET is_join_permission=?,modify_time=now() WHERE edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
-		_, err = o.Raw(sql, 1, edbIdList).Exec()
+		_, err = o.Raw(sql, isJoinPermission, edbIdList).Exec()
+		if err != nil {
+			return
+		}
 	}
 
 	// 待添加的配置项
@@ -187,7 +195,7 @@ func SetPermissionEdbChartByEdbIdList(edbIdList []string, userIdList []int) (err
 
 	// 移除废弃的配置项
 	{
-		// 获取移除的配置项
+		// 移除的配置项
 		deletePermissionIdList := make([]int64, 0)
 		for _, v := range edbInfoPermissionMap {
 			deletePermissionIdList = append(deletePermissionIdList, v.PermissionId)
@@ -206,16 +214,25 @@ func SetPermissionEdbChartByEdbIdList(edbIdList []string, userIdList []int) (err
 	return
 }
 
+// SetEdbChartClassifyPermissionReq
+// @Description: 设置数据分类权限请求
+type SetEdbChartClassifyPermissionReq struct {
+	Source         int   `description:"来源id"`
+	SubSource      int   `description:"子来源id"`
+	UserList       []int `description:"赋权用户id列表,如果为空,说明要给这些数据分类移除权限管控"`
+	ClassifyIdList []int `description:"指标/图表/表格分类唯一id列表"`
+}
+
 // SetPermissionEdbChartClassifyIdByClassifyIdList
 // @Description: 根据指标分类ID列表设置分类的用户权限
 // @author: Roc
-// @datetime 2024-03-27 14:03:42
-// @param edbIdList []string
+// @datetime 2024-03-28 14:53:04
+// @param classifyIdList []int
 // @param userIdList []int
 // @return err error
-func SetPermissionEdbChartClassifyIdByClassifyIdList(edbIdList []string, userIdList []int) (err error) {
-	edbNum := len(edbIdList)
-	if edbNum <= 0 {
+func SetPermissionEdbChartClassifyIdByClassifyIdList(classifyIdList []int, userIdList []int) (err error) {
+	userNum := len(userIdList)
+	if userNum <= 0 {
 		return
 	}
 	o, err := orm.NewOrmUsingDB("data").Begin()
@@ -230,53 +247,36 @@ func SetPermissionEdbChartClassifyIdByClassifyIdList(edbIdList []string, userIdL
 		}
 	}()
 
-	// 获取已经配置的指标权限用户
-	edbInfoPermissionList := make([]*EdbInfoPermission, 0)
-	sql := `SELECT * FROM edb_info_permission WHERE edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
-	_, err = o.Raw(sql, edbIdList).QueryRows(&edbInfoPermissionList)
+	// 获取当前选择用户已经配置的指标分类权限
+	classifyPermissionList := make([]*EdbClassifyPermission, 0)
+	sql := `SELECT * FROM edb_classify_permission WHERE sys_user_id in (` + utils.GetOrmInReplace(userNum) + `) `
+	_, err = o.Raw(sql, userIdList).QueryRows(&classifyPermissionList)
 	if err != nil {
 		return
 	}
-	edbInfoPermissionMap := make(map[string]*EdbInfoPermission)
-	for _, v := range edbInfoPermissionList {
-		edbInfoPermissionMap[fmt.Sprint(v.EdbInfoId, "_", v.SysUserId)] = v
-	}
-
-	// 用户不选的情况下,说明是要给这些指标移除权限管控
-	if len(userIdList) <= 0 {
-		// 标记指标为不纳入权限管控
-		sql = `UPDATE edb_info SET is_join_permission=?,modify_time=now() WHERE edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
-		_, err = o.Raw(sql, 0, edbIdList).Exec()
-		return
-	} else {
-		// 标记指标为纳入权限管控
-		sql = `UPDATE edb_info SET is_join_permission=?,modify_time=now() WHERE edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
-		_, err = o.Raw(sql, 1, edbIdList).Exec()
+	classifyPermissionMap := make(map[string]*EdbClassifyPermission)
+	for _, v := range classifyPermissionList {
+		classifyPermissionMap[fmt.Sprint(v.EdbClassifyId, "_", v.SysUserId)] = v
 	}
 
 	// 待添加的配置项
-	addList := make([]*EdbInfoPermission, 0)
+	addList := make([]*EdbClassifyPermission, 0)
 
 	// 遍历待配置的指标和用户,筛选出需要添加的配置项
-	for _, edbInfoIdStr := range edbIdList {
-		edbInfoId, tmpErr := strconv.ParseInt(edbInfoIdStr, 10, 64)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		for _, userId := range userIdList {
-			key := fmt.Sprint(edbInfoId, "_", userId)
-			if _, ok := edbInfoPermissionMap[key]; ok {
+	for _, userId := range userIdList {
+		for _, classifyId := range classifyIdList {
+			key := fmt.Sprint(classifyId, "_", userId)
+			if _, ok := classifyPermissionMap[key]; ok {
 				// 如果存在那么就移除,说明不需要处理了
-				delete(edbInfoPermissionMap, key)
+				delete(classifyPermissionMap, key)
 			} else {
 				// 如果不存在,那么就提那家
-				addList = append(addList, &EdbInfoPermission{
+				addList = append(addList, &EdbClassifyPermission{
 					//PermissionId: 0,
-					EdbInfoId:  int32(edbInfoId),
-					SysUserId:  int32(userId),
-					ModifyTime: time.Now(),
-					CreateTime: time.Now(),
+					EdbClassifyId: int32(classifyId),
+					SysUserId:     int32(userId),
+					ModifyTime:    time.Now(),
+					CreateTime:    time.Now(),
 				})
 			}
 		}
@@ -294,13 +294,13 @@ func SetPermissionEdbChartClassifyIdByClassifyIdList(edbIdList []string, userIdL
 	{
 		// 获取移除的配置项
 		deletePermissionIdList := make([]int64, 0)
-		for _, v := range edbInfoPermissionMap {
+		for _, v := range classifyPermissionMap {
 			deletePermissionIdList = append(deletePermissionIdList, v.PermissionId)
 		}
 
 		deletePermissionIdNum := len(deletePermissionIdList)
 		if deletePermissionIdNum > 0 {
-			sql = "DELETE FROM edb_info_permission WHERE permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
+			sql = "DELETE FROM edb_classify_permission WHERE permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
 			_, err = o.Raw(sql, deletePermissionIdList).Exec()
 			if err != nil {
 				return

+ 11 - 2
routers/commentsRouter.go

@@ -2440,7 +2440,7 @@ func init() {
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:DataMangePermissionController"],
         beego.ControllerComments{
             Method: "SetPermissionEdbChartClassifyIsPermission",
-            Router: `/edb_chart/permission/classify/is_permission/set`,
+            Router: `/edb_chart/classify/permission/is_permission/set`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),
             Filters: nil,
@@ -2448,7 +2448,16 @@ func init() {
 
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:DataMangePermissionController"],
         beego.ControllerComments{
-            Method: "SetPermissionEdbChart",
+            Method: "SetEdbChartClassifyPermission",
+            Router: `/edb_chart/classify/permission/set`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:DataMangePermissionController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:DataMangePermissionController"],
+        beego.ControllerComments{
+            Method: "SetEdbChartPermission",
             Router: `/edb_chart/permission/set`,
             AllowHTTPMethods: []string{"post"},
             MethodParams: param.Make(),

+ 9 - 37
services/data/data_manage_permission.go

@@ -4,7 +4,7 @@ import (
 	"eta/eta_api/models/data_manage"
 )
 
-// SetPermissionEdbChart
+// SetEdbChartPermission
 // @Description:  单独给资产(指标、图表、ETA表格)设置权限
 // @author: Roc
 // @datetime 2024-03-27 10:52:32
@@ -19,7 +19,7 @@ import (
 // @param classify string
 // @return err error
 // @return errMsg string
-func SetPermissionEdbChart(source, subSource, userId int, userList []int, isSelectAll bool, dataId, noDataId []string, keyword, classify string) (err error, errMsg string) {
+func SetEdbChartPermission(source, subSource, userId int, userList []int, isSelectAll bool, dataId, noDataId []string, keyword, classify string) (err error, errMsg string) {
 	// TODO 消息通知
 
 	// 如果勾选全部数据,那么
@@ -135,48 +135,20 @@ func SetDataIsPermission(source, subSource int, classifyIdList []int) (err error
 	return
 }
 
-// SetPermissionEdbChartClassify
-// @Description:  单独给资产(指标、图表、ETA表格)分类设置权限
+// SetEdbChartClassifyPermission
+// @Description: 给用户设置涉密分类的权限
 // @author: Roc
-// @datetime 2024-03-27 10:52:32
+// @datetime 2024-03-28 14:22:30
 // @param source int
 // @param subSource int
-// @param userId int
 // @param userList []int
-// @param isSelectAll bool
-// @param dataId []string
-// @param noDataId []string
-// @param keyword string
-// @param classify string
+// @param classifyIdList []int
 // @return err error
 // @return errMsg string
-func SetPermissionEdbChartClassify(source, subSource, userId int, userList []int, isSelectAll bool, dataId, noDataId []string, keyword, classify string) (err error, errMsg string) {
+func SetEdbChartClassifyPermission(source, subSource int, userList []int, classifyIdList []int) (err error, errMsg string) {
 	// TODO 消息通知
 
-	// 如果勾选全部数据,那么
-	if isSelectAll {
-		// 找出不要的指标ID列表
-		noDataIdMap := make(map[string]string, 0)
-		for _, v := range noDataId {
-			noDataIdMap[v] = v
-		}
-
-		// 需要转义的指标/图表ID列表
-		dataId = make([]string, 0)
-		// 获取所有指标/图表
-		list, _, tmpErr := GetMoveEdbChartList(source, subSource, userId, keyword, classify, 0, 100000)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		for _, v := range list {
-			if _, ok := noDataIdMap[v.DataId]; !ok {
-				dataId = append(dataId, v.DataId)
-			}
-		}
-	}
-
-	if len(userList) <= 0 {
+	if len(classifyIdList) <= 0 {
 		// 说明是取消权限管控
 	}
 
@@ -190,7 +162,7 @@ func SetPermissionEdbChartClassify(source, subSource, userId int, userList []int
 		//if len(tmpList) > 0 {
 		//}
 		// 重新设置权限
-		err = data_manage.SetPermissionEdbChartByEdbIdList(dataId, userList)
+		err = data_manage.SetPermissionEdbChartClassifyIdByClassifyIdList(classifyIdList, userList)
 	//case 5: //图库
 	//	tmpList, tmpErr := data_manage.GetChartInfoListGroupByUserId(dataId)
 	//	if tmpErr != nil {