package grantpowers import ( "appPlatform/models/modelAppPlatform" "appPlatform/models/modelssystempermission" "appPlatform/overall" "appPlatform/overall/publicmethod" "encoding/json" "strconv" "github.com/gin-gonic/gin" ) /* * @ 作者: 秦东 @ 时间: 2025-12-11 11:12:02 @ 功能: 处理自定义应用授权数据 */ func (a *ApiMethod) GainAppEmpowerPower(c *gin.Context) { var requestData GainAppIdAndRoleNew err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == "" { publicmethod.Result(1, err, c, "未知App!不可获取表单列表!") return } appSignCode, _ := strconv.ParseInt(requestData.Id, 10, 64) roleIdInt, _ := strconv.ParseInt(requestData.RoleId, 10, 64) powerInfo, formButPowerList := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppType, requestData.RoleId, requestData.Id) var appMenuList []modelAppPlatform.Appmenus overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Appmenus{}).Where("`isLock` = 2 AND `appkey` = ?", appSignCode).Find(&appMenuList) var sendList []CusterAppTablePower for _, v := range appMenuList { powerInfo, isOk := CallBackAppMenuPower(v, powerInfo.PowerList) if isOk { sendList = append(sendList, powerInfo) } else { var cfInfo modelAppPlatform.CustomerForm cfInfo.GetCont(map[string]interface{}{"`signCode`": v.Id}, "`groupid`", "`listjson`") formPower := GainAppTablePower(roleIdInt, cfInfo.Groupid, v.Id) var sendInfo CusterAppTablePower sendInfo.Id = strconv.FormatInt(v.Id, 10) sendInfo.Name = v.Label sendInfo.SignCode = strconv.FormatInt(v.Id, 10) sendInfo.TablePower = formPower.TablePower sendInfo.ListPower = formPower.ListPower if cfInfo.ListJson != "" { sendInfo.IstIsTrue = true } else { sendInfo.IstIsTrue = false } sendInfo.DatePower.Types = formPower.DatePower.Types sendInfo.DatePower.Attribute = formPower.DatePower.Attribute sendInfo.ParentId = v.Parent sendList = append(sendList, sendInfo) } } outData := publicmethod.MapOut[string]() // outData["list"] = AppMenuTree(appSignCode, sendList) outData["list"] = sendList outData["groupButPower"] = []string{} outData["formButPower"] = formButPowerList //获取app按钮控制 var groupPower modelssystempermission.AuthGroupPower groupPower.GetCont(map[string]interface{}{"`appType`": requestData.AppType, "`orgPowerType`": requestData.PowerType, "`orgOrUserKey`": roleIdInt}) if groupPower.PowerInfo != "" { var butPower []string json.Unmarshal([]byte(groupPower.PowerInfo), &butPower) outData["groupButPower"] = butPower } publicmethod.Result(0, outData, c) } func AppMenuTree(parentId int64, list []CusterAppTablePower) []CusterAppTablePower { treeList := []CusterAppTablePower{} for _, v := range list { if v.ParentId == parentId { var treeInfo CusterAppTablePower treeInfo.Id = v.Id //表单ID treeInfo.Name = v.Name //表单名称 treeInfo.SignCode = v.SignCode //表单识别符 treeInfo.ParentId = v.ParentId //上级 treeInfo.IstIsTrue = v.IstIsTrue treeInfo.TableIsAll = v.TableIsAll treeInfo.TablePower = v.TablePower //表单权限 treeInfo.ListIsAll = v.ListIsAll treeInfo.ListPower = v.ListPower //列表权限 treeInfo.DatePower = v.DatePower //数据权限 treeInfo.AppButPower = v.AppButPower //页面按钮权限 idInt, _ := strconv.ParseInt(v.Id, 10, 64) treeInfo.Children = AppMenuTree(idInt, list) treeList = append(treeList, treeInfo) } } return treeList }