应用集成平台服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

103 lines
3.5 KiB

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
}