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.response.RoleBindPermissionResponse;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 角色权限绑定业务
|
||||
*
|
||||
|
@ -30,4 +32,12 @@ public interface PermissionAssignService {
|
|||
*/
|
||||
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.service.SysMenuOptionsService;
|
||||
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.pojo.request.RoleBindPermissionRequest;
|
||||
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.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 javax.annotation.Resource;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -35,6 +40,12 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
|||
@Resource
|
||||
private SysMenuOptionsService sysMenuOptionsService;
|
||||
|
||||
@Resource
|
||||
private SysRoleMenuOptionsService sysRoleMenuOptionsService;
|
||||
|
||||
@Resource
|
||||
private SysRoleMenuService sysRoleMenuService;
|
||||
|
||||
@Override
|
||||
public RoleBindPermissionResponse getRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||
|
||||
|
@ -42,10 +53,11 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
|||
RoleBindPermissionResponse selectTreeStructure = this.createSelectTreeStructure();
|
||||
|
||||
// 2. 获取角色绑定的应用,菜单,功能列表
|
||||
|
||||
Set<Long> roleBindMenusAndOptions = this.getRoleBindMenusAndOptions(roleBindPermissionRequest.getRoleId());
|
||||
|
||||
// 3. 组合结构树和角色绑定的信息,填充选择状态,封装返回结果
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -86,4 +98,28 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
|||
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