Commit 140be610032a7b92ac0a7627d10353dca81ac608
1 parent
a5dce6cc
根据用户权限加载菜单数据树形结构
Showing
5 changed files
with
53 additions
and
7 deletions
ruoyi/src/main/java/com/ruoyi/project/system/controller/SysMenuController.java
| ... | ... | @@ -14,8 +14,11 @@ import org.springframework.web.bind.annotation.RequestMapping; |
| 14 | 14 | import org.springframework.web.bind.annotation.RestController; |
| 15 | 15 | import com.ruoyi.common.constant.UserConstants; |
| 16 | 16 | import com.ruoyi.common.utils.SecurityUtils; |
| 17 | +import com.ruoyi.common.utils.ServletUtils; | |
| 17 | 18 | import com.ruoyi.framework.aspectj.lang.annotation.Log; |
| 18 | 19 | import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
| 20 | +import com.ruoyi.framework.security.LoginUser; | |
| 21 | +import com.ruoyi.framework.security.service.TokenService; | |
| 19 | 22 | import com.ruoyi.framework.web.controller.BaseController; |
| 20 | 23 | import com.ruoyi.framework.web.domain.AjaxResult; |
| 21 | 24 | import com.ruoyi.project.system.domain.SysMenu; |
| ... | ... | @@ -33,6 +36,9 @@ public class SysMenuController extends BaseController |
| 33 | 36 | @Autowired |
| 34 | 37 | private ISysMenuService menuService; |
| 35 | 38 | |
| 39 | + @Autowired | |
| 40 | + private TokenService tokenService; | |
| 41 | + | |
| 36 | 42 | /** |
| 37 | 43 | * 获取菜单列表 |
| 38 | 44 | */ |
| ... | ... | @@ -40,7 +46,9 @@ public class SysMenuController extends BaseController |
| 40 | 46 | @GetMapping("/list") |
| 41 | 47 | public AjaxResult list(SysMenu menu) |
| 42 | 48 | { |
| 43 | - List<SysMenu> menus = menuService.selectMenuList(menu); | |
| 49 | + LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | |
| 50 | + Long userId = loginUser.getUser().getUserId(); | |
| 51 | + List<SysMenu> menus = menuService.selectMenuList(menu, userId); | |
| 44 | 52 | return AjaxResult.success(menuService.buildMenuTree(menus)); |
| 45 | 53 | } |
| 46 | 54 | |
| ... | ... | @@ -58,9 +66,11 @@ public class SysMenuController extends BaseController |
| 58 | 66 | * 获取菜单下拉树列表 |
| 59 | 67 | */ |
| 60 | 68 | @GetMapping("/treeselect") |
| 61 | - public AjaxResult treeselect(SysMenu dept) | |
| 69 | + public AjaxResult treeselect(SysMenu menu) | |
| 62 | 70 | { |
| 63 | - List<SysMenu> menus = menuService.selectMenuList(dept); | |
| 71 | + LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | |
| 72 | + Long userId = loginUser.getUser().getUserId(); | |
| 73 | + List<SysMenu> menus = menuService.selectMenuList(menu, userId); | |
| 64 | 74 | return AjaxResult.success(menuService.buildMenuTreeSelect(menus)); |
| 65 | 75 | } |
| 66 | 76 | ... | ... |
ruoyi/src/main/java/com/ruoyi/project/system/mapper/SysMenuMapper.java
| ... | ... | @@ -27,6 +27,14 @@ public interface SysMenuMapper |
| 27 | 27 | public List<String> selectMenuPerms(); |
| 28 | 28 | |
| 29 | 29 | /** |
| 30 | + * 根据用户查询系统菜单列表 | |
| 31 | + * | |
| 32 | + * @param menu 菜单信息 | |
| 33 | + * @return 菜单列表 | |
| 34 | + */ | |
| 35 | + public List<SysMenu> selectMenuListByUserId(SysMenu menu); | |
| 36 | + | |
| 37 | + /** | |
| 30 | 38 | * 根据用户ID查询权限 |
| 31 | 39 | * |
| 32 | 40 | * @param userId 用户ID | ... | ... |
ruoyi/src/main/java/com/ruoyi/project/system/service/ISysMenuService.java
| ... | ... | @@ -14,12 +14,13 @@ import com.ruoyi.project.system.domain.vo.RouterVo; |
| 14 | 14 | public interface ISysMenuService |
| 15 | 15 | { |
| 16 | 16 | /** |
| 17 | - * 查询系统菜单列表 | |
| 17 | + * 根据用户查询系统菜单列表 | |
| 18 | 18 | * |
| 19 | 19 | * @param menu 菜单信息 |
| 20 | + * @param userId 用户ID | |
| 20 | 21 | * @return 菜单列表 |
| 21 | 22 | */ |
| 22 | - public List<SysMenu> selectMenuList(SysMenu menu); | |
| 23 | + public List<SysMenu> selectMenuList(SysMenu menu, Long userId); | |
| 23 | 24 | |
| 24 | 25 | /** |
| 25 | 26 | * 根据用户ID查询权限 | ... | ... |
ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java
| ... | ... | @@ -15,6 +15,7 @@ import com.ruoyi.common.utils.SecurityUtils; |
| 15 | 15 | import com.ruoyi.common.utils.StringUtils; |
| 16 | 16 | import com.ruoyi.framework.web.domain.TreeSelect; |
| 17 | 17 | import com.ruoyi.project.system.domain.SysMenu; |
| 18 | +import com.ruoyi.project.system.domain.SysUser; | |
| 18 | 19 | import com.ruoyi.project.system.domain.vo.MetaVo; |
| 19 | 20 | import com.ruoyi.project.system.domain.vo.RouterVo; |
| 20 | 21 | import com.ruoyi.project.system.mapper.SysMenuMapper; |
| ... | ... | @@ -44,9 +45,19 @@ public class SysMenuServiceImpl implements ISysMenuService |
| 44 | 45 | * @return 菜单列表 |
| 45 | 46 | */ |
| 46 | 47 | @Override |
| 47 | - public List<SysMenu> selectMenuList(SysMenu menu) | |
| 48 | + public List<SysMenu> selectMenuList(SysMenu menu, Long userId) | |
| 48 | 49 | { |
| 49 | - List<SysMenu> menuList = menuMapper.selectMenuList(menu); | |
| 50 | + List<SysMenu> menuList = null; | |
| 51 | + // 管理员显示所有菜单信息 | |
| 52 | + if (SysUser.isAdmin(userId)) | |
| 53 | + { | |
| 54 | + menuList = menuMapper.selectMenuList(menu); | |
| 55 | + } | |
| 56 | + else | |
| 57 | + { | |
| 58 | + menu.getParams().put("userId", userId); | |
| 59 | + menuList = menuMapper.selectMenuListByUserId(menu); | |
| 60 | + } | |
| 50 | 61 | return menuList; |
| 51 | 62 | } |
| 52 | 63 | ... | ... |
ruoyi/src/main/resources/mybatis/system/SysMenuMapper.xml
| ... | ... | @@ -47,6 +47,22 @@ |
| 47 | 47 | from sys_menu m where m.menu_type in ('M', 'C') and m.visible = 0 |
| 48 | 48 | order by m.parent_id, m.order_num |
| 49 | 49 | </select> |
| 50 | + | |
| 51 | + <select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult"> | |
| 52 | + select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, ifnull(m.perms,'') as perms, m.is_frame, m.menu_type, m.icon, m.order_num, m.create_time | |
| 53 | + from sys_menu m | |
| 54 | + left join sys_role_menu rm on m.menu_id = rm.menu_id | |
| 55 | + left join sys_user_role ur on rm.role_id = ur.role_id | |
| 56 | + left join sys_role ro on ur.role_id = ro.role_id | |
| 57 | + where ur.user_id = #{params.userId} | |
| 58 | + <if test="menuName != null and menuName != ''"> | |
| 59 | + AND menu_name like concat('%', #{menuName}, '%') | |
| 60 | + </if> | |
| 61 | + <if test="visible != null and visible != ''"> | |
| 62 | + AND visible = #{visible} | |
| 63 | + </if> | |
| 64 | + order by m.parent_id, m.order_num | |
| 65 | + </select> | |
| 50 | 66 | |
| 51 | 67 | <select id="selectMenuTreeByUserId" parameterType="Long" resultMap="SysMenuResult"> |
| 52 | 68 | select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, ifnull(m.perms,'') as perms, m.is_frame, m.menu_type, m.icon, m.order_num, m.create_time | ... | ... |