【8.0】【role】完善绑定权限增加范围筛选,增加绑定菜单的筛选

pull/57/head
fengshuonan 2023-09-08 23:04:59 +08:00
parent 9008401032
commit c1ddd6d62c
1 changed files with 16 additions and 2 deletions

View File

@ -23,6 +23,7 @@ import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -55,7 +56,7 @@ public class RoleBindMenuImpl implements RoleAssignOperateAction, RoleBindLimitA
} }
@Override @Override
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) { public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest, Set<Long> roleLimitMenuIdsAndOptionIds) {
Long roleId = roleBindPermissionRequest.getRoleId(); Long roleId = roleBindPermissionRequest.getRoleId();
Long menuId = roleBindPermissionRequest.getNodeId(); Long menuId = roleBindPermissionRequest.getNodeId();
@ -79,7 +80,7 @@ public class RoleBindMenuImpl implements RoleAssignOperateAction, RoleBindLimitA
} }
// 2.1. 查询菜单下的所有菜单功能 // 2.1. 查询菜单下的所有菜单功能
List<Long> menuOptions = this.getMenuOptions(menuId); List<Long> menuOptions = this.getMenuOptions(menuId, roleLimitMenuIdsAndOptionIds);
// 菜单下没有菜单功能,则直接返回 // 菜单下没有菜单功能,则直接返回
if (ObjectUtil.isEmpty(menuOptions)) { if (ObjectUtil.isEmpty(menuOptions)) {
@ -172,8 +173,21 @@ public class RoleBindMenuImpl implements RoleAssignOperateAction, RoleBindLimitA
* @since 2023/9/8 16:02 * @since 2023/9/8 16:02
*/ */
private List<Long> getMenuOptions(Long menuId) { private List<Long> getMenuOptions(Long menuId) {
return this.getMenuOptions(menuId, null);
}
/**
*
*
* @author fengshuonan
* @since 2023/9/8 16:02
*/
private List<Long> getMenuOptions(Long menuId, Set<Long> roleLimitMenuIdsAndOptionIds) {
LambdaQueryWrapper<SysMenuOptions> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysMenuOptions> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysMenuOptions::getMenuId, menuId); queryWrapper.eq(SysMenuOptions::getMenuId, menuId);
if (ObjectUtil.isNotEmpty(roleLimitMenuIdsAndOptionIds)) {
queryWrapper.in(SysMenuOptions::getMenuOptionId, roleLimitMenuIdsAndOptionIds);
}
queryWrapper.select(SysMenuOptions::getMenuOptionId); queryWrapper.select(SysMenuOptions::getMenuOptionId);
List<SysMenuOptions> list = sysMenuOptionsService.list(queryWrapper); List<SysMenuOptions> list = sysMenuOptionsService.list(queryWrapper);
if (ObjectUtil.isEmpty(list)) { if (ObjectUtil.isEmpty(list)) {