Sfoglia il codice sorgente

fix:菜单列表

Roc 2 giorni fa
parent
commit
96988ca5ab
2 ha cambiato i file con 110 aggiunte e 11 eliminazioni
  1. 2 2
      controllers/base_auth.go
  2. 108 9
      controllers/sys_menu.go

+ 2 - 2
controllers/base_auth.go

@@ -570,8 +570,8 @@ func (c *BaseAuthController) Prepare() {
 
 	//接口权限校验
 	roleId := admin.RoleId
-	// 单点登录逻辑
-	token := c.Ctx.GetCookie("token")
+	// 国能单点登录逻辑
+	token := c.Ctx.GetCookie("gn_token")
 	c.GnToken = token
 	list, e := services.GetMenuList(token, roleId)
 	if e != nil {

+ 108 - 9
controllers/sys_menu.go

@@ -3,6 +3,7 @@ package controllers
 import (
 	"eta_gn/eta_api/models"
 	"eta_gn/eta_api/models/system"
+	"eta_gn/eta_api/services"
 	"strconv"
 )
 
@@ -55,17 +56,45 @@ func (this *SysRoleController) SysMenuList() {
 	//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
+}
+
+// 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 {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
 
 	rootList, err := system.GetMenuListByRoleIds(roleIds)
 	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取失败,Err:" + err.Error()
 		return
 	}
 
@@ -97,10 +126,80 @@ func (this *SysRoleController) SysMenuList() {
 			firstMenus.Children = secondMenus
 		}
 	}
-	resp := new(system.MenuListResp)
 	resp.List = rootList
-	br.Ret = 200
-	br.Success = true
-	br.Msg = "获取成功"
-	br.Data = resp
+
+	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 {
+		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
 }