1. 完成 menu 模块的迁移

2. 增加 mybatis plus 的 QueryWrapperX 封装,方便拼接 SQL
This commit is contained in:
YunaiV
2021-01-08 21:36:51 +08:00
parent ea4c9e4981
commit 3e5bd01962
25 changed files with 209 additions and 269 deletions

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}