123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- package controllers
- import (
- "eta_gn/eta_api/models"
- "eta_gn/eta_api/models/system"
- "eta_gn/eta_api/services"
- "strconv"
- )
- type SysMenuController struct {
- BaseAuthController
- }
- // @Title 获取用户权限菜单
- // @Description 获取用户权限菜单接口
- // @Success 200 {object} system.MenuListResp
- // @router /menu/list [get]
- func (this *SysRoleController) SysMenuList() {
- br := new(models.BaseResponse).Init()
- defer func() {
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser Is Empty"
- return
- }
- roleId := sysUser.RoleId
- //roleId=1
- if roleId <= 0 {
- br.Msg = "参数错误"
- return
- }
- roleIds := strconv.Itoa(roleId)
- //查询账号绑定的其他角色
- otherRoles, err := system.GetRoleIdsByAdminId(sysUser.AdminId)
- if err != nil {
- br.Msg = "获取其他角色失败"
- br.ErrMsg = "获取其他角色失败,Err:" + err.Error()
- return
- }
- if len(otherRoles) > 0 {
- for _, v := range otherRoles {
- roleIds += "," + strconv.Itoa(v.RoleId)
- }
- }
- // 审批配置
- //confMap, e := models.GetBusinessConf()
- //if e != nil {
- // br.Msg = "获取失败"
- // br.ErrMsg = "获取商家配置失败, Err: " + e.Error()
- // return
- //}
- //openMap := map[string]bool{"false": false, "true": true}
- //openApprove := openMap[confMap[models.BusinessConfIsReportApprove]]
- var resp system.MenuListResp
- if this.GnToken == `` {
- resp, err = getMenuListByRoleIds(roleIds)
- if err != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
- return
- }
- } else {
- resp, err = getMenuListByGnToken(this.GnToken)
- if err != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
- return
- }
- }
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- br.Data = resp
- }
- // @Title 获取顶部菜单
- // @Description 获取顶部菜单
- // @Success 200 {object} []services.TopMenuItemResp
- // @router /menu_top/list [get]
- func (this *SysRoleController) TopMenuList() {
- br := new(models.BaseResponse).Init()
- defer func() {
- this.Data["json"] = br
- this.ServeJSON()
- }()
- sysUser := this.SysUser
- if sysUser == nil {
- br.Msg = "请登录"
- br.ErrMsg = "请登录,SysUser Is Empty"
- return
- }
- var resp []services.TopMenuItemResp
- this.GnToken = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4YWUwODhmNC1mNjhmLTRmZGMtYTBiZS1lZTFmODllZDAzNjgiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLkvIog5YedIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjAwODE1NzEiLCJnaXZlbl9uYW1lIjoi5LyKIiwiZmFtaWx5X25hbWUiOiLlh50ifQ.qE8AjA9Ms-3Ec-Svw4C2EUXwN2a3NufAakW9n06rk5I`
- resp, err := services.GetTopMenuList(this.GnToken)
- if err != nil {
- br.Msg = "获取失败"
- br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
- return
- }
- br.Ret = 200
- br.Success = true
- br.Msg = "获取成功"
- br.Data = resp
- }
- // getMenuListByRoleIds
- // @Description: 根据角色获取菜单
- // @author: Roc
- // @datetime 2025-06-17 10:01:53
- // @param roleIds string
- // @return resp system.MenuListResp
- // @return err error
- func getMenuListByRoleIds(roleIds string) (resp system.MenuListResp, err error) {
- resp = system.MenuListResp{}
- list, err := system.GetMenuListAllByRoleIds(roleIds)
- if err != nil {
- return
- }
- rootList, err := system.GetMenuListByRoleIds(roleIds)
- if err != nil {
- return
- }
- menuMap := make(map[int][]*system.MenuList)
- for _, v := range list {
- if menus, ok := menuMap[v.ParentId]; !ok {
- menus = make([]*system.MenuList, 0)
- menus = append(menus, v)
- menuMap[v.ParentId] = menus
- } else {
- menus = append(menus, v)
- menuMap[v.ParentId] = menus
- }
- }
- //menuList := make([]*system.MenuList, 0)
- for _, firstMenus := range rootList {
- if secondMenus, ok := menuMap[firstMenus.MenuId]; ok {
- for _, sencodMenu := range secondMenus {
- if thirdMenus, ok := menuMap[sencodMenu.MenuId]; ok {
- sencodMenu.Children = thirdMenus
- } else {
- thirdMenuList := make([]*system.MenuList, 0)
- sencodMenu.Children = thirdMenuList
- }
- }
- firstMenus.Children = secondMenus
- }
- }
- resp.List = rootList
- return
- }
- // getMenuListByRoleIds
- // @Description: 根据角色获取菜单
- // @author: Roc
- // @datetime 2025-06-17 10:01:53
- // @param roleIds string
- // @return resp system.MenuListResp
- // @return err error
- func getMenuListByGnToken(gnToken string) (resp system.MenuListResp, err error) {
- resp = system.MenuListResp{}
- menuList, err := services.GetMenuList(gnToken, 0)
- if err != nil {
- return
- }
- list := make([]*system.MenuList, 0)
- rootList := make([]*system.MenuList, 0)
- for _, v := range menuList {
- if v.MenuType != 0 {
- continue
- }
- var hidden bool
- if v.Hidden == 1 {
- hidden = true
- }
- tmpMenuList := &system.MenuList{
- MenuId: v.MenuId,
- IsLevel: v.IsLevel,
- Name: v.Name,
- NameEn: v.NameEn,
- Path: v.Path,
- IconPath: v.IconPath,
- LevelPath: v.LevelPath,
- Component: v.Component,
- Hidden: hidden,
- ParentId: v.ParentId,
- Children: make([]*system.MenuList, 0),
- }
- list = append(list, tmpMenuList)
- if v.ParentId == 2000 {
- rootList = append(rootList, tmpMenuList)
- }
- }
- menuMap := make(map[int][]*system.MenuList)
- for _, v := range list {
- if menus, ok := menuMap[v.ParentId]; !ok {
- menus = make([]*system.MenuList, 0)
- menus = append(menus, v)
- menuMap[v.ParentId] = menus
- } else {
- menus = append(menus, v)
- menuMap[v.ParentId] = menus
- }
- }
- //menuList := make([]*system.MenuList, 0)
- for _, firstMenus := range rootList {
- if secondMenus, ok := menuMap[firstMenus.MenuId]; ok {
- for _, sencodMenu := range secondMenus {
- if thirdMenus, ok := menuMap[sencodMenu.MenuId]; ok {
- sencodMenu.Children = thirdMenus
- } else {
- thirdMenuList := make([]*system.MenuList, 0)
- sencodMenu.Children = thirdMenuList
- }
- }
- firstMenus.Children = secondMenus
- }
- }
- resp.List = rootList
- return
- }
|