mirror of https://gitee.com/stylefeng/roses
【7.6.0】【role】调整角色绑定权限的代码结构
parent
47a98889a6
commit
346c6cb3ce
|
@ -9,7 +9,6 @@ import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRole;
|
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRole;
|
||||||
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.request.SysRoleRequest;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleRequest;
|
||||||
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.SysRoleService;
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleService;
|
||||||
|
@ -59,7 +58,8 @@ public class PermissionAssignController {
|
||||||
* @since 2023/6/12 21:23
|
* @since 2023/6/12 21:23
|
||||||
*/
|
*/
|
||||||
@GetResource(name = "获取角色绑定的权限列表", path = "/permission/getRoleBindPermission")
|
@GetResource(name = "获取角色绑定的权限列表", path = "/permission/getRoleBindPermission")
|
||||||
public ResponseData<RoleBindPermissionResponse> getRoleBindPermission(@Validated(BaseRequest.detail.class) RoleBindPermissionRequest roleBindPermissionRequest) {
|
public ResponseData<RoleBindPermissionResponse> getRoleBindPermission(
|
||||||
|
@Validated(BaseRequest.detail.class) RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
RoleBindPermissionResponse roleBindPermission = permissionAssignService.getRoleBindPermission(roleBindPermissionRequest);
|
RoleBindPermissionResponse roleBindPermission = permissionAssignService.getRoleBindPermission(roleBindPermissionRequest);
|
||||||
return new SuccessResponseData<>(roleBindPermission);
|
return new SuccessResponseData<>(roleBindPermission);
|
||||||
}
|
}
|
||||||
|
@ -73,11 +73,10 @@ public class PermissionAssignController {
|
||||||
* @since 2023/6/13 19:45
|
* @since 2023/6/13 19:45
|
||||||
*/
|
*/
|
||||||
@PostResource(name = "更新角色绑定权限", path = "/permission/updateRoleBindPermission")
|
@PostResource(name = "更新角色绑定权限", path = "/permission/updateRoleBindPermission")
|
||||||
public ResponseData<List<RoleBindPermissionItem>> updateRoleBindPermission(
|
public ResponseData<?> updateRoleBindPermission(@RequestBody @Validated(RoleBindPermissionRequest.roleBindPermission.class)
|
||||||
@RequestBody @Validated(RoleBindPermissionRequest.roleBindPermission.class) RoleBindPermissionRequest roleBindPermissionRequest) {
|
RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
List<RoleBindPermissionItem> result = permissionAssignService.updateRoleBindPermission(roleBindPermissionRequest);
|
permissionAssignService.updateRoleBindPermission(roleBindPermissionRequest);
|
||||||
return new SuccessResponseData<>(result);
|
return new SuccessResponseData<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
package cn.stylefeng.roses.kernel.sys.modular.role.factory;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
|
||||||
import cn.stylefeng.roses.kernel.rule.tree.factory.DefaultTreeBuildFactory;
|
|
||||||
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.role.enums.PermissionNodeTypeEnum;
|
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 权限绑定结果的对象创建工厂
|
|
||||||
*
|
|
||||||
* @author fengshuonan
|
|
||||||
* @since 2023/6/13 22:58
|
|
||||||
*/
|
|
||||||
public class PermissionAssignResultFactory {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建角色绑定菜单的相应结果
|
|
||||||
*
|
|
||||||
* @author fengshuonan
|
|
||||||
* @since 2023/6/13 23:03
|
|
||||||
*/
|
|
||||||
public static List<RoleBindPermissionItem> createRoleBindMenuResult(List<SysMenuOptions> menuOptions,
|
|
||||||
Boolean checkedFlag) {
|
|
||||||
|
|
||||||
List<RoleBindPermissionItem> result = new ArrayList<>();
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(menuOptions)) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (SysMenuOptions menuOption : menuOptions) {
|
|
||||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(menuOption.getMenuOptionId(),
|
|
||||||
null, menuOption.getOptionName(), PermissionNodeTypeEnum.OPTIONS.getCode(), checkedFlag);
|
|
||||||
result.add(roleBindPermissionItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建角色绑定应用时候的响应结果
|
|
||||||
*
|
|
||||||
* @author fengshuonan
|
|
||||||
* @since 2023/6/14 14:53
|
|
||||||
*/
|
|
||||||
public static List<RoleBindPermissionItem> createRoleBindAppResult(List<SysMenu> totalMenus,
|
|
||||||
List<SysMenuOptions> totalMenuOptions,
|
|
||||||
Boolean checkedFlag) {
|
|
||||||
|
|
||||||
List<RoleBindPermissionItem> result = new ArrayList<>();
|
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(totalMenus)) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (SysMenu sysMenu : totalMenus) {
|
|
||||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(sysMenu.getMenuId(), null,
|
|
||||||
sysMenu.getMenuName(), PermissionNodeTypeEnum.MENU.getCode(), checkedFlag);
|
|
||||||
result.add(roleBindPermissionItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (SysMenuOptions sysMenuOptions : totalMenuOptions) {
|
|
||||||
RoleBindPermissionItem roleBindPermissionItem = new RoleBindPermissionItem(sysMenuOptions.getMenuOptionId(),
|
|
||||||
sysMenuOptions.getMenuId(), sysMenuOptions.getOptionName(),
|
|
||||||
PermissionNodeTypeEnum.OPTIONS.getCode(), checkedFlag);
|
|
||||||
result.add(roleBindPermissionItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
return new DefaultTreeBuildFactory<RoleBindPermissionItem>().doTreeBuild(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,10 +1,8 @@
|
||||||
package cn.stylefeng.roses.kernel.sys.modular.role.service;
|
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.RoleBindPermissionItem;
|
|
||||||
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.List;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,6 +46,6 @@ public interface PermissionAssignService {
|
||||||
* @author fengshuonan
|
* @author fengshuonan
|
||||||
* @since 2023/6/13 19:48
|
* @since 2023/6/13 19:48
|
||||||
*/
|
*/
|
||||||
List<RoleBindPermissionItem> updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest);
|
void updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,14 +65,14 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoleBindPermissionItem> updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public void updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
Map<String, RoleAssignOperateAction> operateActionMap = SpringUtil.getBeansOfType(RoleAssignOperateAction.class);
|
Map<String, RoleAssignOperateAction> operateActionMap = SpringUtil.getBeansOfType(RoleAssignOperateAction.class);
|
||||||
for (RoleAssignOperateAction roleAssignOperateAction : operateActionMap.values()) {
|
for (RoleAssignOperateAction roleAssignOperateAction : operateActionMap.values()) {
|
||||||
if (roleAssignOperateAction.getNodeType().getCode().equals(roleBindPermissionRequest.getPermissionNodeType())) {
|
if (roleAssignOperateAction.getNodeType().getCode().equals(roleBindPermissionRequest.getPermissionNodeType())) {
|
||||||
return roleAssignOperateAction.doOperateAction(roleBindPermissionRequest);
|
roleAssignOperateAction.doOperateAction(roleBindPermissionRequest);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -9,9 +9,7 @@ import cn.stylefeng.roses.kernel.sys.modular.role.action.RoleAssignOperateAction
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRoleMenu;
|
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.entity.SysRoleMenuOptions;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.factory.PermissionAssignResultFactory;
|
|
||||||
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.service.SysRoleMenuOptionsService;
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuService;
|
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;
|
||||||
|
@ -50,7 +48,7 @@ public class RoleBindAppImpl implements RoleAssignOperateAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
|
|
||||||
Long roleId = roleBindPermissionRequest.getRoleId();
|
Long roleId = roleBindPermissionRequest.getRoleId();
|
||||||
Long appId = roleBindPermissionRequest.getNodeId();
|
Long appId = roleBindPermissionRequest.getNodeId();
|
||||||
|
@ -63,7 +61,7 @@ public class RoleBindAppImpl implements RoleAssignOperateAction {
|
||||||
Set<Long> totalMenuIds = totalMenus.stream().map(SysMenu::getMenuId).collect(Collectors.toSet());
|
Set<Long> totalMenuIds = totalMenus.stream().map(SysMenu::getMenuId).collect(Collectors.toSet());
|
||||||
|
|
||||||
if (ObjectUtil.isEmpty(totalMenus)) {
|
if (ObjectUtil.isEmpty(totalMenus)) {
|
||||||
return new ArrayList<>();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 找到所选应用的对应的所有菜单功能
|
// 找到所选应用的对应的所有菜单功能
|
||||||
|
@ -110,9 +108,6 @@ public class RoleBindAppImpl implements RoleAssignOperateAction {
|
||||||
}
|
}
|
||||||
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
|
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 组装返回结果
|
|
||||||
return PermissionAssignResultFactory.createRoleBindAppResult(totalMenus, totalMenuOptions, roleBindPermissionRequest.getChecked());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,6 @@ 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.entity.SysRoleMenuOptions;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
import cn.stylefeng.roses.kernel.sys.modular.role.enums.PermissionNodeTypeEnum;
|
||||||
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.service.SysRoleMenuOptionsService;
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuService;
|
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;
|
||||||
|
@ -46,11 +45,11 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
|
|
||||||
Long roleId = roleBindPermissionRequest.getRoleId();
|
Long roleId = roleBindPermissionRequest.getRoleId();
|
||||||
|
|
||||||
// 清空用户绑定的所有菜单和功能
|
// 清空角色绑定的所有菜单和功能
|
||||||
LambdaQueryWrapper<SysRoleMenu> sysRoleMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysRoleMenu> sysRoleMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
sysRoleMenuLambdaQueryWrapper.eq(SysRoleMenu::getRoleId, roleId);
|
sysRoleMenuLambdaQueryWrapper.eq(SysRoleMenu::getRoleId, roleId);
|
||||||
this.sysRoleMenuService.remove(sysRoleMenuLambdaQueryWrapper);
|
this.sysRoleMenuService.remove(sysRoleMenuLambdaQueryWrapper);
|
||||||
|
@ -94,9 +93,6 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction {
|
||||||
}
|
}
|
||||||
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
|
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 返回空数组,前端处理渲染逻辑
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ import cn.stylefeng.roses.kernel.sys.modular.role.enums.exception.SysRoleMenuOpt
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMenuOptionsMapper;
|
import cn.stylefeng.roses.kernel.sys.modular.role.mapper.SysRoleMenuOptionsMapper;
|
||||||
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.request.SysRoleMenuOptionsRequest;
|
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleMenuOptionsRequest;
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionItem;
|
|
||||||
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService;
|
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleMenuOptionsService;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
@ -146,7 +145,7 @@ public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOption
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
|
|
||||||
Long roleId = roleBindPermissionRequest.getRoleId();
|
Long roleId = roleBindPermissionRequest.getRoleId();
|
||||||
Long menuOptionId = roleBindPermissionRequest.getNodeId();
|
Long menuOptionId = roleBindPermissionRequest.getNodeId();
|
||||||
|
@ -162,8 +161,6 @@ public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOption
|
||||||
wrapper.eq(SysRoleMenuOptions::getMenuOptionId, menuOptionId);
|
wrapper.eq(SysRoleMenuOptions::getMenuOptionId, menuOptionId);
|
||||||
this.remove(wrapper);
|
this.remove(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue