mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【permission】完善获取角色绑定的所有权限功能
parent
a7441100f3
commit
f0adb5846a
|
@ -3,6 +3,8 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色权限绑定业务
|
* 角色权限绑定业务
|
||||||
*
|
*
|
||||||
|
@ -30,4 +32,12 @@ public interface PermissionAssignService {
|
||||||
*/
|
*/
|
||||||
RoleBindPermissionResponse createSelectTreeStructure();
|
RoleBindPermissionResponse createSelectTreeStructure();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取角色绑定的菜单和菜单功能,直接返回菜单和菜单功能组成的id集合
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @since 2023/6/13 18:11
|
||||||
|
*/
|
||||||
|
Set<Long> getRoleBindMenusAndOptions(Long roleId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,19 @@ import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenu;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.entity.SysMenuOptions;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuOptionsService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
import cn.stylefeng.roses.kernel.sys.modular.menu.service.SysMenuService;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenu;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenuOptions;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignFactory;
|
import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignFactory;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.RoleBindPermissionRequest;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.service.PermissionAssignService;
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.PermissionAssignService;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService;
|
||||||
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
@ -35,6 +40,12 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
@Resource
|
@Resource
|
||||||
private SysMenuOptionsService sysMenuOptionsService;
|
private SysMenuOptionsService sysMenuOptionsService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleMenuOptionsService sysRoleMenuOptionsService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleMenuService sysRoleMenuService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
|
|
||||||
|
@ -42,10 +53,11 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
RoleBindPermissionResponse selectTreeStructure = this.createSelectTreeStructure();
|
RoleBindPermissionResponse selectTreeStructure = this.createSelectTreeStructure();
|
||||||
|
|
||||||
// 2. 获取角色绑定的应用,菜单,功能列表
|
// 2. 获取角色绑定的应用,菜单,功能列表
|
||||||
|
Set<Long> roleBindMenusAndOptions = this.getRoleBindMenusAndOptions(roleBindPermissionRequest.getRoleId());
|
||||||
|
|
||||||
// 3. 组合结构树和角色绑定的信息,填充选择状态,封装返回结果
|
// 3. 组合结构树和角色绑定的信息,填充选择状态,封装返回结果
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,4 +98,28 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
return PermissionAssignFactory.composeSelectStructure(totalResultApps, totalResultMenus, totalResultOptions);
|
return PermissionAssignFactory.composeSelectStructure(totalResultApps, totalResultMenus, totalResultOptions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<Long> getRoleBindMenusAndOptions(Long roleId) {
|
||||||
|
|
||||||
|
HashSet<Long> resultPermissions = new HashSet<>();
|
||||||
|
|
||||||
|
// 获取角色绑定的菜单
|
||||||
|
LambdaQueryWrapper<SysRoleMenu> sysRoleMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
sysRoleMenuLambdaQueryWrapper.select(SysRoleMenu::getMenuId);
|
||||||
|
sysRoleMenuLambdaQueryWrapper.eq(SysRoleMenu::getRoleId, roleId);
|
||||||
|
List<SysRoleMenu> sysRoleMenuList = this.sysRoleMenuService.list(sysRoleMenuLambdaQueryWrapper);
|
||||||
|
Set<Long> menuIdSet = sysRoleMenuList.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toSet());
|
||||||
|
resultPermissions.addAll(menuIdSet);
|
||||||
|
|
||||||
|
// 获取角色绑定的功能
|
||||||
|
LambdaQueryWrapper<SysRoleMenuOptions> sysRoleMenuOptionsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
sysRoleMenuOptionsLambdaQueryWrapper.select(SysRoleMenuOptions::getMenuOptionId);
|
||||||
|
sysRoleMenuOptionsLambdaQueryWrapper.eq(SysRoleMenuOptions::getRoleId, roleId);
|
||||||
|
List<SysRoleMenuOptions> sysRoleMenuOptionsList = this.sysRoleMenuOptionsService.list(sysRoleMenuOptionsLambdaQueryWrapper);
|
||||||
|
Set<Long> optionsIds = sysRoleMenuOptionsList.stream().map(SysRoleMenuOptions::getMenuOptionId).collect(Collectors.toSet());
|
||||||
|
resultPermissions.addAll(optionsIds);
|
||||||
|
|
||||||
|
return resultPermissions;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue