1. 完成 menu 模块的迁移
2. 增加 mybatis plus 的 QueryWrapperX 封装,方便拼接 SQL
This commit is contained in:
@@ -1,11 +1,6 @@
|
||||
package cn.iocoder.dashboard.modules.system.service.auth;
|
||||
|
||||
import cn.iocoder.dashboard.framework.security.core.service.SecurityFrameworkService;
|
||||
import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthPermissionInfoRespVO;
|
||||
import cn.iocoder.dashboard.modules.system.controller.auth.vo.SysAuthMenuRespVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 认证 Service 接口
|
||||
@@ -18,28 +13,4 @@ public interface SysAuthService extends SecurityFrameworkService {
|
||||
|
||||
String login(String username, String password, String captchaUUID, String captchaCode);
|
||||
|
||||
/**
|
||||
* 获得用户的基本信息
|
||||
*
|
||||
* 这里传输 roleIds 参数的原因,是该参数是从 LoginUser 缓存中获取到的,而我们校验权限时也是从 LoginUser 缓存中获取 roleIds
|
||||
* 通过这样的方式,保持一致
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param roleIds 用户拥有的角色编号数组
|
||||
* @return 用户的信息,包括角色权限和菜单权限
|
||||
*/
|
||||
SysAuthPermissionInfoRespVO getPermissionInfo(Long userId, Set<Long> roleIds);
|
||||
|
||||
/**
|
||||
* 获得用户的菜单 Vue 路由
|
||||
*
|
||||
* 这里传输 roleIds 参数的原因,是该参数是从 LoginUser 缓存中获取到的,而我们校验权限时也是从 LoginUser 缓存中获取 roleIds
|
||||
* 通过这样的方式,保持一致
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @param roleIds 用户拥有的角色编号数组
|
||||
* @return 菜单 Vue 路由
|
||||
*/
|
||||
List<SysAuthMenuRespVO> listMenus(Long userId, Set<Long> roleIds);
|
||||
|
||||
}
|
||||
|
||||
@@ -226,31 +226,4 @@ public class SysAuthServiceImpl implements SysAuthService {
|
||||
loginUserRedisDAO.set(sessionId, loginUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysAuthPermissionInfoRespVO getPermissionInfo(Long userId, Set<Long> roleIds) {
|
||||
// 获得用户信息
|
||||
SysUserDO user = userService.getUser(userId);
|
||||
if (user == null) {
|
||||
return null;
|
||||
}
|
||||
// 获得角色列表
|
||||
List<SysRoleDO> roleList = roleService.listRolesFromCache(roleIds);
|
||||
// 获得菜单列表
|
||||
List<SysMenuDO> menuList = permissionService.listRoleMenusFromCache(roleIds,
|
||||
SetUtils.asSet(MenuTypeEnum.DIR.getType(), MenuTypeEnum.MENU.getType(), MenuTypeEnum.BUTTON.getType()),
|
||||
SetUtils.asSet(CommonStatusEnum.ENABLE.getStatus()));
|
||||
// 拼接结果返回
|
||||
return SysAuthConvert.INSTANCE.convert(user, roleList, menuList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysAuthMenuRespVO> listMenus(Long userId, Set<Long> roleIds) {
|
||||
// 获得用户拥有的菜单列表
|
||||
List<SysMenuDO> menuList = permissionService.listRoleMenusFromCache(roleIds,
|
||||
SetUtils.asSet(MenuTypeEnum.DIR.getType(), MenuTypeEnum.MENU.getType()), // 只要目录和菜单类型
|
||||
SetUtils.asSet(CommonStatusEnum.ENABLE.getStatus())); // 只要开启的
|
||||
// 转换成 Tree 结构返回
|
||||
return SysAuthConvert.INSTANCE.buildMenuTree(menuList);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class SysMenuServiceImpl implements SysMenuService {
|
||||
@Override
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
List<SysMenuDO> menuList = menuMapper.selectList(null);
|
||||
List<SysMenuDO> menuList = menuMapper.selectList();
|
||||
ImmutableMap.Builder<Long, SysMenuDO> menuCacheBuilder = ImmutableMap.builder();
|
||||
ImmutableMultimap.Builder<String, SysMenuDO> permMenuCacheBuilder = ImmutableMultimap.builder();
|
||||
menuList.forEach(menuDO -> {
|
||||
@@ -79,7 +79,7 @@ public class SysMenuServiceImpl implements SysMenuService {
|
||||
|
||||
@Override
|
||||
public List<SysMenuRespVO> listMenus(SysMenuListReqVO reqVO) {
|
||||
List<SysMenuDO> list = menuMapper.selectList(null);
|
||||
List<SysMenuDO> list = menuMapper.selectList(reqVO);
|
||||
// TODO 排序
|
||||
return SysMenuConvert.INSTANCE.convertList(list);
|
||||
}
|
||||
@@ -240,9 +240,10 @@ public class SysMenuServiceImpl implements SysMenuService {
|
||||
if (menu == null) {
|
||||
throw ServiceExceptionUtil.exception(MENU_PARENT_NOT_EXISTS);
|
||||
}
|
||||
// 父菜单必须是目录类型
|
||||
if (!MenuTypeEnum.DIR.getType().equals(menu.getType())) {
|
||||
throw ServiceExceptionUtil.exception(MENU_PARENT_NOT_MENU);
|
||||
// 父菜单必须是目录或者菜单类型
|
||||
if (!MenuTypeEnum.DIR.getType().equals(menu.getType())
|
||||
&& !MenuTypeEnum.MENU.getType().equals(menu.getType())) {
|
||||
throw ServiceExceptionUtil.exception(MENU_PARENT_NOT_DIR_OR_MENU);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user