【7.6.0】【role】调整角色绑定权限的代码结构

pull/57/head
fengshuonan 2023-07-01 21:26:31 +08:00
parent 47a98889a6
commit 346c6cb3ce
7 changed files with 19 additions and 108 deletions

View File

@ -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.pojo.request.RoleBindPermissionRequest;
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.service.PermissionAssignService;
import cn.stylefeng.roses.kernel.sys.modular.role.service.SysRoleService;
@ -59,7 +58,8 @@ public class PermissionAssignController {
* @since 2023/6/12 21:23
*/
@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);
return new SuccessResponseData<>(roleBindPermission);
}
@ -73,11 +73,10 @@ public class PermissionAssignController {
* @since 2023/6/13 19:45
*/
@PostResource(name = "更新角色绑定权限", path = "/permission/updateRoleBindPermission")
public ResponseData<List<RoleBindPermissionItem>> updateRoleBindPermission(
@RequestBody @Validated(RoleBindPermissionRequest.roleBindPermission.class) RoleBindPermissionRequest roleBindPermissionRequest) {
List<RoleBindPermissionItem> result = permissionAssignService.updateRoleBindPermission(roleBindPermissionRequest);
return new SuccessResponseData<>(result);
public ResponseData<?> updateRoleBindPermission(@RequestBody @Validated(RoleBindPermissionRequest.roleBindPermission.class)
RoleBindPermissionRequest roleBindPermissionRequest) {
permissionAssignService.updateRoleBindPermission(roleBindPermissionRequest);
return new SuccessResponseData<>();
}
}

View File

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

View File

@ -1,10 +1,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.RoleBindPermissionItem;
import cn.stylefeng.roses.kernel.sys.modular.role.pojo.response.RoleBindPermissionResponse;
import java.util.List;
import java.util.Set;
/**
@ -48,6 +46,6 @@ public interface PermissionAssignService {
* @author fengshuonan
* @since 2023/6/13 19:48
*/
List<RoleBindPermissionItem> updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest);
void updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest);
}

View File

@ -21,7 +21,10 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
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;
/**
@ -62,14 +65,14 @@ public class PermissionAssignServiceImpl implements PermissionAssignService {
}
@Override
public List<RoleBindPermissionItem> updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
public void updateRoleBindPermission(RoleBindPermissionRequest roleBindPermissionRequest) {
Map<String, RoleAssignOperateAction> operateActionMap = SpringUtil.getBeansOfType(RoleAssignOperateAction.class);
for (RoleAssignOperateAction roleAssignOperateAction : operateActionMap.values()) {
if (roleAssignOperateAction.getNodeType().getCode().equals(roleBindPermissionRequest.getPermissionNodeType())) {
return roleAssignOperateAction.doOperateAction(roleBindPermissionRequest);
roleAssignOperateAction.doOperateAction(roleBindPermissionRequest);
return;
}
}
return new ArrayList<>();
}
@Override

View File

@ -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.SysRoleMenuOptions;
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.response.RoleBindPermissionItem;
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;
@ -50,7 +48,7 @@ public class RoleBindAppImpl implements RoleAssignOperateAction {
}
@Override
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
Long roleId = roleBindPermissionRequest.getRoleId();
Long appId = roleBindPermissionRequest.getNodeId();
@ -63,7 +61,7 @@ public class RoleBindAppImpl implements RoleAssignOperateAction {
Set<Long> totalMenuIds = totalMenus.stream().map(SysMenu::getMenuId).collect(Collectors.toSet());
if (ObjectUtil.isEmpty(totalMenus)) {
return new ArrayList<>();
return;
}
// 找到所选应用的对应的所有菜单功能
@ -110,9 +108,6 @@ public class RoleBindAppImpl implements RoleAssignOperateAction {
}
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
}
// 组装返回结果
return PermissionAssignResultFactory.createRoleBindAppResult(totalMenus, totalMenuOptions, roleBindPermissionRequest.getChecked());
}
}

View File

@ -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.enums.PermissionNodeTypeEnum;
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.SysRoleMenuService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -46,11 +45,11 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction {
}
@Override
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
Long roleId = roleBindPermissionRequest.getRoleId();
// 清空用户绑定的所有菜单和功能
// 清空角色绑定的所有菜单和功能
LambdaQueryWrapper<SysRoleMenu> sysRoleMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysRoleMenuLambdaQueryWrapper.eq(SysRoleMenu::getRoleId, roleId);
this.sysRoleMenuService.remove(sysRoleMenuLambdaQueryWrapper);
@ -94,9 +93,6 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction {
}
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
}
// 返回空数组,前端处理渲染逻辑
return new ArrayList<>();
}
}

View File

@ -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.pojo.request.RoleBindPermissionRequest;
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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -146,7 +145,7 @@ public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOption
}
@Override
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
public void doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
Long roleId = roleBindPermissionRequest.getRoleId();
Long menuOptionId = roleBindPermissionRequest.getNodeId();
@ -162,8 +161,6 @@ public class SysRoleMenuOptionsServiceImpl extends ServiceImpl<SysRoleMenuOption
wrapper.eq(SysRoleMenuOptions::getMenuOptionId, menuOptionId);
this.remove(wrapper);
}
return null;
}
@Override