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.
149 lines
4.2 KiB
149 lines
4.2 KiB
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
|
|
}
|
|
|