应用集成平台服务端
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.

150 lines
4.2 KiB

4 days ago
package setupRoule
import (
"appPlatform/models/modelAppPlatform"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"sort"
"github.com/gin-gonic/gin"
)
// 获取平台授权项目
func (a *ApiMethod) AppPowerUnit(c *gin.Context) {
var requestData GetPowerUnitParameter
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.PowerType == "" {
requestData.PowerType = "org"
}
if requestData.AppSystem == "" {
requestData.AppSystem = "appsystem"
}
if requestData.RoleId == "" {
requestData.RoleId = "0"
}
powerInfo := publicmethod.GetSystemPower(requestData.PowerType, requestData.AppSystem, requestData.RoleId, requestData.PowerType)
var appPowerTrue []AppPowerTree
switch requestData.AppSystem {
default:
appPowerTrue = AppMenuPower(requestData.PowerType, requestData.RoleId, powerInfo)
}
publicmethod.Result(0, appPowerTrue, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2025-11-10 10:02:54
@ 功能: 数通智联平台菜单
*/
func AppMenuPower(powerType, unitId string, powerInfo publicmethod.SendSystemPower) []AppPowerTree {
var menuList []AppPowerInfo
overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.Menus{}).Where("`visible` = 1").Find(&menuList)
sort.Slice(menuList, func(i, j int) bool {
return menuList[i].Sort < menuList[j].Sort
})
var noButMenu []AppPowerInfo
var ButMenu []AppPowerInfo
for _, v := range menuList {
if v.Types != 4 {
noButMenu = append(noButMenu, v)
} else {
ButMenu = append(ButMenu, v)
}
}
butList := MenuPower(MenuButList(noButMenu, ButMenu), powerInfo)
return AppMenuTrue(0, butList)
}
/*
*
@ 作者: 秦东
@ 时间: 2025-11-21 14:20:46
@ 功能: 判断按钮
*/
func JuadgeBut(menuInfo []AppPowerInfo, powerInfo publicmethod.ItemInfo) (butPower []AppPowerInfo) {
for _, v := range menuInfo {
if publicmethod.IsInTrue[int](v.Id, powerInfo.ButPower) {
v.IsTrue = true
} else {
v.IsTrue = false
}
butPower = append(butPower, v)
}
return
}
// 组合菜单按钮
func MenuButList(noButMenu, ButMenu []AppPowerInfo) (menuButList []AppMenuBut) {
// var but []int64
for _, v := range noButMenu {
var menuButInfo AppMenuBut
menuButInfo.Id = v.Id
menuButInfo.Name = v.Name //菜单名称
menuButInfo.Types = v.Types //菜单类型(1-菜单;2-目录;3-外链;4-按钮权限)
menuButInfo.Perm = v.Perm //权限标识
menuButInfo.Sort = v.Sort //排序(数字越小排名越靠前)
menuButInfo.ParentId = v.ParentId //父菜单ID
menuButInfo.IsTrue = v.IsTrue
menuButInfo.AppPowerList = []int64{1}
for _, bv := range ButMenu {
if bv.ParentId == v.Id {
menuButInfo.ButtenPower = append(menuButInfo.ButtenPower, bv)
}
}
menuButList = append(menuButList, menuButInfo)
}
return
}
func AppMenuTrue(parentId int, list []AppMenuBut) []AppPowerTree {
treeList := []AppPowerTree{}
for _, v := range list {
if v.ParentId == parentId {
var treeInfo AppPowerTree
treeInfo.Id = v.Id //
treeInfo.Name = v.Name //菜单名称
treeInfo.Types = v.Types //菜单类型(1-菜单;2-目录;3-外链;4-按钮权限)
treeInfo.Perm = v.Perm //权限标识
treeInfo.Sort = v.Sort //排序(数字越小排名越靠前)
treeInfo.ParentId = v.ParentId //父菜单ID
treeInfo.IsTrue = v.IsTrue //
treeInfo.Visible = v.Visible
treeInfo.ButtenPower = v.ButtenPower
treeInfo.VisibleRange.Types = v.VisibleRange.Types
treeInfo.VisibleRange.Val = v.VisibleRange.Val
if v.Types != 4 {
treeInfo.Children = AppMenuTrue(v.Id, list)
}
treeList = append(treeList, treeInfo)
}
}
return treeList
}
/*
*
@ 作者: 秦东
@ 时间: 2025-11-21 14:12:32
@ 功能: 菜单判断是否选中
*/
func MenuPower(menuInfo []AppMenuBut, powerInfo publicmethod.SendSystemPower) (menuPower []AppMenuBut) {
for _, v := range menuInfo {
for _, pv := range powerInfo.PowerList {
if pv.ItemId == int64(v.Id) {
v.IsTrue = pv.IsPick
v.Visible = pv.VisibleRange
v.VisibleRange.Types = pv.VisibleRange
v.VisibleRange.Val = pv.VisibleOrg
v.ButtenPower = JuadgeBut(v.ButtenPower, pv)
}
}
menuPower = append(menuPower, v)
}
return
}