sys_menu.go 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package controllers
  2. import (
  3. "eta_gn/eta_api/models"
  4. "eta_gn/eta_api/models/system"
  5. "eta_gn/eta_api/services"
  6. "strconv"
  7. )
  8. type SysMenuController struct {
  9. BaseAuthController
  10. }
  11. // @Title 获取用户权限菜单
  12. // @Description 获取用户权限菜单接口
  13. // @Success 200 {object} system.MenuListResp
  14. // @router /menu/list [get]
  15. func (this *SysRoleController) SysMenuList() {
  16. br := new(models.BaseResponse).Init()
  17. defer func() {
  18. this.Data["json"] = br
  19. this.ServeJSON()
  20. }()
  21. sysUser := this.SysUser
  22. if sysUser == nil {
  23. br.Msg = "请登录"
  24. br.ErrMsg = "请登录,SysUser Is Empty"
  25. return
  26. }
  27. roleId := sysUser.RoleId
  28. //roleId=1
  29. if roleId <= 0 {
  30. br.Msg = "参数错误"
  31. return
  32. }
  33. roleIds := strconv.Itoa(roleId)
  34. //查询账号绑定的其他角色
  35. otherRoles, err := system.GetRoleIdsByAdminId(sysUser.AdminId)
  36. if err != nil {
  37. br.Msg = "获取其他角色失败"
  38. br.ErrMsg = "获取其他角色失败,Err:" + err.Error()
  39. return
  40. }
  41. if len(otherRoles) > 0 {
  42. for _, v := range otherRoles {
  43. roleIds += "," + strconv.Itoa(v.RoleId)
  44. }
  45. }
  46. // 审批配置
  47. //confMap, e := models.GetBusinessConf()
  48. //if e != nil {
  49. // br.Msg = "获取失败"
  50. // br.ErrMsg = "获取商家配置失败, Err: " + e.Error()
  51. // return
  52. //}
  53. //openMap := map[string]bool{"false": false, "true": true}
  54. //openApprove := openMap[confMap[models.BusinessConfIsReportApprove]]
  55. var resp system.MenuListResp
  56. if this.GnToken == `` {
  57. resp, err = getMenuListByRoleIds(roleIds)
  58. if err != nil {
  59. br.Msg = "获取失败"
  60. br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
  61. return
  62. }
  63. } else {
  64. resp, err = getMenuListByGnToken(this.GnToken)
  65. if err != nil {
  66. br.Msg = "获取失败"
  67. br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
  68. return
  69. }
  70. }
  71. br.Ret = 200
  72. br.Success = true
  73. br.Msg = "获取成功"
  74. br.Data = resp
  75. }
  76. // @Title 获取顶部菜单
  77. // @Description 获取顶部菜单
  78. // @Success 200 {object} []services.TopMenuItemResp
  79. // @router /menu_top/list [get]
  80. func (this *SysRoleController) TopMenuList() {
  81. br := new(models.BaseResponse).Init()
  82. defer func() {
  83. this.Data["json"] = br
  84. this.ServeJSON()
  85. }()
  86. sysUser := this.SysUser
  87. if sysUser == nil {
  88. br.Msg = "请登录"
  89. br.ErrMsg = "请登录,SysUser Is Empty"
  90. return
  91. }
  92. var resp []services.TopMenuItemResp
  93. this.GnToken = `eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI4YWUwODhmNC1mNjhmLTRmZGMtYTBiZS1lZTFmODllZDAzNjgiLCJlbWFpbF92ZXJpZmllZCI6ZmFsc2UsIm5hbWUiOiLkvIog5YedIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiMjAwODE1NzEiLCJnaXZlbl9uYW1lIjoi5LyKIiwiZmFtaWx5X25hbWUiOiLlh50ifQ.qE8AjA9Ms-3Ec-Svw4C2EUXwN2a3NufAakW9n06rk5I`
  94. resp, err := services.GetTopMenuList(this.GnToken)
  95. if err != nil {
  96. br.Msg = "获取失败"
  97. br.ErrMsg = "获取商家菜单失败, Err: " + err.Error()
  98. return
  99. }
  100. br.Ret = 200
  101. br.Success = true
  102. br.Msg = "获取成功"
  103. br.Data = resp
  104. }
  105. // getMenuListByRoleIds
  106. // @Description: 根据角色获取菜单
  107. // @author: Roc
  108. // @datetime 2025-06-17 10:01:53
  109. // @param roleIds string
  110. // @return resp system.MenuListResp
  111. // @return err error
  112. func getMenuListByRoleIds(roleIds string) (resp system.MenuListResp, err error) {
  113. resp = system.MenuListResp{}
  114. list, err := system.GetMenuListAllByRoleIds(roleIds)
  115. if err != nil {
  116. return
  117. }
  118. rootList, err := system.GetMenuListByRoleIds(roleIds)
  119. if err != nil {
  120. return
  121. }
  122. menuMap := make(map[int][]*system.MenuList)
  123. for _, v := range list {
  124. if menus, ok := menuMap[v.ParentId]; !ok {
  125. menus = make([]*system.MenuList, 0)
  126. menus = append(menus, v)
  127. menuMap[v.ParentId] = menus
  128. } else {
  129. menus = append(menus, v)
  130. menuMap[v.ParentId] = menus
  131. }
  132. }
  133. //menuList := make([]*system.MenuList, 0)
  134. for _, firstMenus := range rootList {
  135. if secondMenus, ok := menuMap[firstMenus.MenuId]; ok {
  136. for _, sencodMenu := range secondMenus {
  137. if thirdMenus, ok := menuMap[sencodMenu.MenuId]; ok {
  138. sencodMenu.Children = thirdMenus
  139. } else {
  140. thirdMenuList := make([]*system.MenuList, 0)
  141. sencodMenu.Children = thirdMenuList
  142. }
  143. }
  144. firstMenus.Children = secondMenus
  145. }
  146. }
  147. resp.List = rootList
  148. return
  149. }
  150. // getMenuListByRoleIds
  151. // @Description: 根据角色获取菜单
  152. // @author: Roc
  153. // @datetime 2025-06-17 10:01:53
  154. // @param roleIds string
  155. // @return resp system.MenuListResp
  156. // @return err error
  157. func getMenuListByGnToken(gnToken string) (resp system.MenuListResp, err error) {
  158. resp = system.MenuListResp{}
  159. menuList, err := services.GetMenuList(gnToken, 0)
  160. if err != nil {
  161. return
  162. }
  163. list := make([]*system.MenuList, 0)
  164. rootList := make([]*system.MenuList, 0)
  165. for _, v := range menuList {
  166. if v.MenuType != 0 {
  167. continue
  168. }
  169. var hidden bool
  170. if v.Hidden == 1 {
  171. hidden = true
  172. }
  173. tmpMenuList := &system.MenuList{
  174. MenuId: v.MenuId,
  175. IsLevel: v.IsLevel,
  176. Name: v.Name,
  177. NameEn: v.NameEn,
  178. Path: v.Path,
  179. IconPath: v.IconPath,
  180. LevelPath: v.LevelPath,
  181. Component: v.Component,
  182. Hidden: hidden,
  183. ParentId: v.ParentId,
  184. Children: make([]*system.MenuList, 0),
  185. }
  186. list = append(list, tmpMenuList)
  187. if v.ParentId == 2000 {
  188. rootList = append(rootList, tmpMenuList)
  189. }
  190. }
  191. menuMap := make(map[int][]*system.MenuList)
  192. for _, v := range list {
  193. if menus, ok := menuMap[v.ParentId]; !ok {
  194. menus = make([]*system.MenuList, 0)
  195. menus = append(menus, v)
  196. menuMap[v.ParentId] = menus
  197. } else {
  198. menus = append(menus, v)
  199. menuMap[v.ParentId] = menus
  200. }
  201. }
  202. //menuList := make([]*system.MenuList, 0)
  203. for _, firstMenus := range rootList {
  204. if secondMenus, ok := menuMap[firstMenus.MenuId]; ok {
  205. for _, sencodMenu := range secondMenus {
  206. if thirdMenus, ok := menuMap[sencodMenu.MenuId]; ok {
  207. sencodMenu.Children = thirdMenus
  208. } else {
  209. thirdMenuList := make([]*system.MenuList, 0)
  210. sencodMenu.Children = thirdMenuList
  211. }
  212. }
  213. firstMenus.Children = secondMenus
  214. }
  215. }
  216. resp.List = rootList
  217. return
  218. }