Procházet zdrojové kódy

fix:添加单个资产的权限设置接口

Roc před 11 měsíci
rodič
revize
dcda821d9b

+ 67 - 4
controllers/data_manage/data_manage_permission.go

@@ -15,11 +15,11 @@ type DataMangePermissionController struct {
 }
 
 // SetPermissionEdbChart
-// @Title 指标/图表创建人变更接口
-// @Description 指标/图表创建人变更接口
-// @Param	request	body data_manage.MoveEdbChartReq true "type json string"
+// @Title 指标/图表权限设置接口
+// @Description 指标/图表权限设置接口
+// @Param	request	body data_manage.SetPermissionEdbChartReq true "type json string"
 // @Success 200 {object} data_manage.ChartListResp
-// @router /edb_chart/change_user [post]
+// @router /edb_chart/permission/set [post]
 func (c *DataMangePermissionController) SetPermissionEdbChart() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
@@ -76,3 +76,66 @@ func (c *DataMangePermissionController) SetPermissionEdbChart() {
 	br.Success = true
 	br.Msg = "修改成功"
 }
+
+// SetPermissionEdbChartClassifyIsPermission
+// @Title 指标/图表分类权限设置接口
+// @Description 指标/图表分类权限设置接口
+// @Param	request	body data_manage.MoveEdbChartReq true "type json string"
+// @Success 200 {object} data_manage.ChartListResp
+// @router /edb_chart/permission/classify [post]
+func (c *DataMangePermissionController) SetPermissionEdbChartClassifyIsPermission() {
+	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.SetPermissionEdbChartReq
+	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 !req.IsSelectAll && len(req.DataIdList) <= 0 {
+		br.Msg = "请勾选数据项"
+		br.IsSendEmail = false
+		return
+	}
+
+	err, errMsg := data.SetPermissionEdbChart(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 = "移动失败"
+		if errMsg != `` {
+			br.Msg = errMsg
+		}
+		br.ErrMsg = "移动失败,Err:" + err.Error()
+		return
+	}
+	br.Ret = 200
+	br.IsAddLog = true
+	br.Success = true
+	br.Msg = "修改成功"
+}

+ 1 - 0
controllers/data_manage/edb_info.go

@@ -3970,6 +3970,7 @@ func (this *EdbInfoController) MoveEdbChartList() {
 	br.Ret = 200
 	br.Success = true
 	br.Msg = "获取成功"
+	br.IsAddLog = false
 	br.Data = resp
 }
 

+ 33 - 14
models/data_manage/data_manage_permission.go

@@ -68,29 +68,22 @@ func SetPermissionEdbChartByEdbIdList(edbIdList []string, userIdList []int) (err
 		edbInfoPermissionMap[fmt.Sprint(v.EdbInfoId, "_", v.SysUserId)] = v
 	}
 
-	// 说明是要给这些指标移除权限管控
+	// 用户不选的情况下,说明是要给这些指标移除权限管控
 	if len(userIdList) <= 0 {
-		// todo 已经添加或者移除的指标需要记录到消息
-		// 先不管三七二十一,给已经选择的分类挪出配置的用户权限
-		sql = `DELETE FROM edb_info_permission WHERE WHERE edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
-		_, err = o.Raw(sql, edbIdList).Exec()
-		if err != nil {
-			return
-		}
-
 		// 标记指标为不纳入权限管控
 		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()
 	}
 
-	// 标记指标为纳入权限管控
-	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()
-
 	// 待添加的配置项
 	addList := make([]*EdbInfoPermission, 0)
+
+	// 遍历待配置的指标和用户,筛选出需要添加的配置项
 	for _, edbInfoIdStr := range edbIdList {
 		edbInfoId, tmpErr := strconv.ParseInt(edbInfoIdStr, 10, 64)
 		if tmpErr != nil {
@@ -115,5 +108,31 @@ func SetPermissionEdbChartByEdbIdList(edbIdList []string, userIdList []int) (err
 		}
 	}
 
+	// 添加待配置项
+	if len(addList) > 0 {
+		_, err = o.InsertMulti(500, addList)
+		if err != nil {
+			return
+		}
+	}
+
+	// 移除废弃的配置项
+	{
+		// 获取移除的配置项
+		deletePermissionIdList := make([]int64, 0)
+		for _, v := range edbInfoPermissionMap {
+			deletePermissionIdList = append(deletePermissionIdList, v.PermissionId)
+		}
+
+		deletePermissionIdNum := len(deletePermissionIdList)
+		if deletePermissionIdNum > 0 {
+			sql = "DELETE FROM edb_info_permission WHERE permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
+			_, err = o.Raw(sql, deletePermissionIdList).Exec()
+			if err != nil {
+				return
+			}
+		}
+	}
+
 	return
 }

+ 1 - 1
models/data_manage/excel/excel_info.go

@@ -190,7 +190,7 @@ func GetExcelInfoCountByCondition(condition string, pars []interface{}) (count i
 
 func GetNoContentExcelInfoListByCondition(condition string, pars []interface{}, startSize, pageSize int) (items []*ExcelClassifyItems, err error) {
 	o := orm.NewOrmUsingDB("data")
-	sql := ` excel_info_id,excel_classify_id,excel_name AS excel_classify_name,
+	sql := `SELECT excel_info_id,excel_classify_id,excel_name AS excel_classify_name,
              unique_code,sys_user_id,sys_user_real_name,sort FROM excel_info WHERE 1=1 `
 	if condition != "" {
 		sql += condition

+ 18 - 0
routers/commentsRouter.go

@@ -2437,6 +2437,24 @@ func init() {
             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: "SetPermissionEdbChartClassifyIsPermission",
+            Router: `/edb_chart/permission/classify`,
+            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: "SetPermissionEdbChart",
+            Router: `/edb_chart/permission/set`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbClassifyController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/data_manage:EdbClassifyController"],
         beego.ControllerComments{
             Method: "AddEdbClassify",

+ 34 - 31
services/data/data_manage_persmission.go

@@ -1,8 +1,27 @@
 package data
 
-// TODO 消息
+import (
+	"eta/eta_api/models/data_manage"
+)
 
+// SetPermissionEdbChart
+// @Description:  单独给资产(指标、图表、ETA表格)设置权限
+// @author: Roc
+// @datetime 2024-03-27 10:52:32
+// @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
+// @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) {
+	// TODO 消息通知
+
 	// 如果勾选全部数据,那么
 	if isSelectAll {
 		// 找出不要的指标ID列表
@@ -30,33 +49,17 @@ func SetPermissionEdbChart(source, subSource, userId int, userList []int, isSele
 		// 说明是取消权限管控
 	}
 
-	//switch source {
-	//case 3, 4: //ETA指标库、ETA预测指标
-	//	tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
-	//	if tmpErr != nil {
-	//		err = tmpErr
-	//		return
-	//	}
-	//	if len(tmpList) > 0 {
-	//		for _, v := range tmpList {
-	//			if v.SysUserId == newUserId {
-	//				errMsg = "新创建人不可和原创建人一致"
-	//				err = errors.New(errMsg)
-	//				return
-	//			}
-	//		}
-	//		// 修改创建人
-	//		err = data_manage.ModifyEdbInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
-	//
-	//		// 移除当前用户的不可操作权限
-	//		{
-	//			obj := data_manage.EdbInfoNoPermissionAdmin{}
-	//			for _, v := range dataId {
-	//				edbInfoId, _ := strconv.Atoi(v)
-	//				go obj.DeleteByEdbInfoIdAndAdminId(edbInfoId, adminInfo.AdminId)
-	//			}
-	//		}
-	//	}
+	switch source {
+	case 3, 4: //ETA指标库、ETA预测指标
+		tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
+		if tmpErr != nil {
+			err = tmpErr
+			return
+		}
+		if len(tmpList) > 0 {
+			// 修改创建人
+			err = data_manage.SetPermissionEdbChartByEdbIdList(dataId, userList)
+		}
 	//case 5: //图库
 	//	tmpList, tmpErr := data_manage.GetChartInfoListGroupByUserId(dataId)
 	//	if tmpErr != nil {
@@ -91,9 +94,9 @@ func SetPermissionEdbChart(source, subSource, userId int, userList []int, isSele
 	//		// 修改创建人
 	//		err = excel.ModifyExcelInfoUserIdByCodeList(dataId, adminInfo.AdminId, adminInfo.RealName)
 	//	}
-	//default:
-	//	return
-	//}
+	default:
+		return
+	}
 
 	return
 }