diff --git a/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMapper.java b/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMapper.java index 7922b5f..f53bd9a 100644 --- a/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMapper.java +++ b/service-oa/src/main/java/com/atguigu/auth/mapper/SysRoleMapper.java @@ -15,4 +15,12 @@ public interface SysRoleMapper extends BaseMapper { * @return 角色列表 */ List selectByUserId(Long userId); + + /** + * 根据角色id获取角色权限 + * + * @param roleId 角色Id + * @return 菜单列表Id + */ + List selectByRoleId4MenuId(Long roleId); } diff --git a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java index 68d7cef..f28a41d 100644 --- a/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java +++ b/service-oa/src/main/java/com/atguigu/auth/service/impl/SysMenuServiceImpl.java @@ -1,7 +1,9 @@ package com.atguigu.auth.service.impl; import com.atguigu.auth.mapper.SysMenuMapper; +import com.atguigu.auth.mapper.SysRoleMapper; import com.atguigu.auth.service.SysMenuService; +import com.atguigu.auth.service.SysRoleMenuService; import com.atguigu.common.utlis.MenuHelper; import com.atguigu.constant.MessageConstant; import com.atguigu.exception.BunnyException; @@ -9,6 +11,7 @@ import com.atguigu.model.system.SysMenu; import com.atguigu.vo.system.AssginMenuVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @@ -23,6 +26,10 @@ import java.util.List; */ @Service public class SysMenuServiceImpl extends ServiceImpl implements SysMenuService { + @Autowired + private SysRoleMenuService sysRoleMenuService; + @Autowired + private SysRoleMapper sysRoleMapper; /** * 获取菜单 @@ -63,7 +70,19 @@ public class SysMenuServiceImpl extends ServiceImpl impl */ @Override public List findSysMenuByRoleId(Long roleId) { - return null; + // 查询所有权限列表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysMenu::getStatus, 1); + List allSysMenuList = list(wrapper); + + // 根据角色id获取角色权限 + List menuIdList = sysRoleMapper.selectByRoleId4MenuId(roleId); + + allSysMenuList.forEach(permission -> { + permission.setSelect(menuIdList.contains(permission.getId())); + }); + + return MenuHelper.buildTree(allSysMenuList); } /** diff --git a/service-oa/src/main/resources/mapper/SysRoleMapper.xml b/service-oa/src/main/resources/mapper/SysRoleMapper.xml index 1e21dca..57df5b0 100644 --- a/service-oa/src/main/resources/mapper/SysRoleMapper.xml +++ b/service-oa/src/main/resources/mapper/SysRoleMapper.xml @@ -7,4 +7,11 @@ FROM sys_role WHERE id IN (SELECT role_id FROM sys_user_role WHERE user_id = #{user_id}) + + +