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 }