Przeglądaj źródła

fix:修复菜单权限列表

zqbao 9 miesięcy temu
rodzic
commit
19bfcead9a

+ 60 - 0
controllers/sys_menu.go

@@ -0,0 +1,60 @@
+package controllers
+
+import (
+	"eta/eta_mini_crm/models"
+	"eta/eta_mini_crm/services"
+)
+
+type SysMenuController struct {
+	BaseAuthController
+}
+
+// @Title 获取用户权限菜单
+// @Description 获取用户权限菜单接口
+// @Success 200 {object} system.MenuListResp
+// @router /list [get]
+func (this *SysMenuController) 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.SysRoleId
+	if roleId <= 0 {
+		br.Msg = "参数错误"
+		return
+	}
+	list, err := models.GetMenuListByRoleIds(roleId)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,Err:" + err.Error()
+		return
+	}
+	items := make([]*models.SysMenuItem, 0)
+	for _, v := range list {
+		t := &models.SysMenuItem{
+			SysMenuId:  v.SysMenuId,
+			ParentId:   v.ParentId,
+			Name:       v.Name,
+			Sort:       v.Sort,
+			Path:       v.Path,
+			IconPath:   v.IconPath,
+			ButtonCode: v.ButtonCode,
+			Children:   make([]*models.SysMenuItem, 0),
+		}
+		items = append(items, t)
+	}
+	// 递归返回树形结构
+	items = services.GetMenuTreeRecursive(items, 0)
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = items
+}

+ 6 - 1
controllers/sys_role.go

@@ -270,10 +270,15 @@ func (this *SysRoleController) ButtonList() {
 
 	buttonList := make([]*response.SysMenuButtonResp, 0)
 	for _, v := range list {
+		// 把菜单过滤
+		if v.MenuType == 1 {
+			continue
+		}
 		tmp := new(response.SysMenuButtonResp)
 		tmp.SysMenuId = v.SysMenuId
 		tmp.ParentId = v.ParentId
 		tmp.Name = v.Name
+		tmp.MenuType = v.MenuType
 		tmp.ButtonCode = v.ButtonCode
 		buttonList = append(buttonList, tmp)
 	}
@@ -397,7 +402,7 @@ func (this *SysRoleController) SysRoleMenuAuthList() {
 	items := make([]*models.SysMenuItem, 0)
 	for _, v := range list {
 		t := &models.SysMenuItem{
-			MenuId:     v.SysMenuId,
+			SysMenuId:  v.SysMenuId,
 			ParentId:   v.ParentId,
 			Name:       v.Name,
 			Sort:       v.Sort,

+ 15 - 2
models/sys_menu.go

@@ -17,6 +17,7 @@ type SysMenu struct {
 	Path       string    `description:"路径"`
 	IconPath   string    `description:"图标路径"`
 	Level      int       `description:"层级"`
+	MenuType   int       `description:"菜单类型,1:菜单,2:按钮"`
 	CreateTime time.Time `description:"创建时间"`
 	ModifyTime time.Time `description:"修改时间"`
 }
@@ -30,7 +31,7 @@ type SysRoleMenuMapping struct {
 
 // SysMenuItem 角色菜单
 type SysMenuItem struct {
-	MenuId     int
+	SysMenuId  int
 	ParentId   int            `description:"父级菜单ID"`
 	Name       string         `description:"菜单名称或者按钮名称"`
 	Sort       int            `description:"排序"`
@@ -46,7 +47,7 @@ func GetMenuButtonsByRoleId(roleId int) (items []*SysMenu, err error) {
 				r.*
 			FROM
 				sys_menu AS r
-			JOIN sys_role_menu_mapping AS rm ON r.sys_menu_id = rm.sys_menu_id AND rm.type = 0
+			JOIN sys_role_menu_mapping AS rm ON r.sys_menu_id = rm.sys_menu_id 
 			WHERE
 				rm.sys_role_id = ? 
 			ORDER BY
@@ -57,6 +58,18 @@ func GetMenuButtonsByRoleId(roleId int) (items []*SysMenu, err error) {
 	return
 }
 
+// GetMenuListByRoleIds 根据管理员角色id查询菜单
+func GetMenuListByRoleIds(roleId int) (items []*SysMenuItem, err error) {
+	o := orm.NewOrmUsingDB("master")
+	sql := `SELECT  a.* 
+			FROM sys_menu AS a
+			LEFT JOIN sys_role_menu_mapping AS b ON a.sys_menu_id=b.sys_menu_id 
+			WHERE b.sys_role_id = ? AND a.menu_type = 1
+            ORDER BY sort ASC `
+	_, err = o.Raw(sql, roleId).QueryRows(&items)
+	return
+}
+
 // GetSysMenuItemsByCondition 获取菜单列表
 func GetSysMenuItemsByCondition(condition string, pars []interface{}, fieldArr []string, orderRule string) (items []*SysMenu, err error) {
 	o := orm.NewOrmUsingDB("master")

+ 9 - 0
routers/commentsRouter.go

@@ -70,6 +70,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SysMenuController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SysMenuController"],
+        beego.ControllerComments{
+            Method: "SysMenuList",
+            Router: `/list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SysMessageReportController"] = append(beego.GlobalControllerRouter["eta/eta_mini_crm/controllers:SysMessageReportController"],
         beego.ControllerComments{
             Method: "List",

+ 5 - 0
routers/router.go

@@ -52,6 +52,11 @@ func init() {
 				&controllers.SellerController{},
 			),
 		),
+		beego.NSNamespace("/menu",
+			beego.NSInclude(
+				&controllers.SysMenuController{},
+			),
+		),
 	)
 	beego.AddNamespace(ns)
 }

+ 1 - 1
services/sys_menu.go

@@ -7,7 +7,7 @@ func GetMenuTreeRecursive(list []*models.SysMenuItem, parentId int) []*models.Sy
 	res := make([]*models.SysMenuItem, 0)
 	for _, v := range list {
 		if v.ParentId == parentId {
-			v.Children = GetMenuTreeRecursive(list, v.MenuId)
+			v.Children = GetMenuTreeRecursive(list, v.SysMenuId)
 			res = append(res, v)
 		}
 	}