mirror of https://gitee.com/stylefeng/roses
【7.6.0】【sys】【permission】【角色绑定权限】完善全选的逻辑
parent
a16b82cc92
commit
a20af872dd
|
@ -1,10 +1,21 @@
|
||||||
package cn.stylefeng.roses.kernel.sys.modular.role.service.impl;
|
package cn.stylefeng.roses.kernel.sys.modular.role.service.impl;
|
||||||
|
|
||||||
|
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.action.RoleAssignOperateAction;
|
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.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.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;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,6 +26,18 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
public class RoleBindTotalImpl implements RoleAssignOperateAction {
|
public class RoleBindTotalImpl implements RoleAssignOperateAction {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysMenuService sysMenuService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysMenuOptionsService sysMenuOptionsService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleMenuService sysRoleMenuService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleMenuOptionsService sysRoleMenuOptionsService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PermissionNodeTypeEnum getNodeType() {
|
public PermissionNodeTypeEnum getNodeType() {
|
||||||
return PermissionNodeTypeEnum.TOTAL;
|
return PermissionNodeTypeEnum.TOTAL;
|
||||||
|
@ -22,7 +45,59 @@ public class RoleBindTotalImpl implements RoleAssignOperateAction {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
public List<RoleBindPermissionItem> doOperateAction(RoleBindPermissionRequest roleBindPermissionRequest) {
|
||||||
return null;
|
|
||||||
|
Long roleId = roleBindPermissionRequest.getRoleId();
|
||||||
|
|
||||||
|
// 清空用户绑定的所有菜单和功能
|
||||||
|
LambdaQueryWrapper<SysRoleMenu> sysRoleMenuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
sysRoleMenuLambdaQueryWrapper.eq(SysRoleMenu::getRoleId, roleId);
|
||||||
|
this.sysRoleMenuService.remove(sysRoleMenuLambdaQueryWrapper);
|
||||||
|
|
||||||
|
LambdaQueryWrapper<SysRoleMenuOptions> sysRoleMenuOptionsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
sysRoleMenuOptionsLambdaQueryWrapper.eq(SysRoleMenuOptions::getRoleId, roleId);
|
||||||
|
this.sysRoleMenuOptionsService.remove(sysRoleMenuOptionsLambdaQueryWrapper);
|
||||||
|
|
||||||
|
// 如果是选中状态,则从新绑定所有的选项
|
||||||
|
if (roleBindPermissionRequest.getChecked()) {
|
||||||
|
|
||||||
|
// 获取所有的菜单
|
||||||
|
LambdaQueryWrapper<SysMenu> menuLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
menuLambdaQueryWrapper.select(SysMenu::getMenuId, SysMenu::getMenuName, SysMenu::getMenuParentId, SysMenu::getAppId);
|
||||||
|
menuLambdaQueryWrapper.orderByAsc(SysMenu::getMenuSort);
|
||||||
|
List<SysMenu> totalMenus = this.sysMenuService.list(menuLambdaQueryWrapper);
|
||||||
|
|
||||||
|
// 绑定角色的所有菜单
|
||||||
|
List<SysRoleMenu> sysRoleMenuList = new ArrayList<>();
|
||||||
|
for (SysMenu menuItem : totalMenus) {
|
||||||
|
SysRoleMenu sysRoleMenu = new SysRoleMenu();
|
||||||
|
sysRoleMenu.setRoleId(roleId);
|
||||||
|
sysRoleMenu.setAppId(menuItem.getAppId());
|
||||||
|
sysRoleMenu.setMenuId(menuItem.getMenuId());
|
||||||
|
sysRoleMenuList.add(sysRoleMenu);
|
||||||
|
}
|
||||||
|
this.sysRoleMenuService.saveBatch(sysRoleMenuList);
|
||||||
|
|
||||||
|
// 获取所有的功能
|
||||||
|
LambdaQueryWrapper<SysMenuOptions> optionsLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
optionsLambdaQueryWrapper.select(SysMenuOptions::getAppId, SysMenuOptions::getMenuId, SysMenuOptions::getMenuOptionId,
|
||||||
|
SysMenuOptions::getOptionName);
|
||||||
|
List<SysMenuOptions> sysMenuOptionsList = sysMenuOptionsService.list(optionsLambdaQueryWrapper);
|
||||||
|
|
||||||
|
// 绑定角色的所有功能
|
||||||
|
List<SysRoleMenuOptions> sysRoleMenuOptionsList = new ArrayList<>();
|
||||||
|
for (SysMenuOptions menuOptionItem : sysMenuOptionsList) {
|
||||||
|
SysRoleMenuOptions sysRoleMenuOptions = new SysRoleMenuOptions();
|
||||||
|
sysRoleMenuOptions.setRoleId(roleId);
|
||||||
|
sysRoleMenuOptions.setAppId(menuOptionItem.getAppId());
|
||||||
|
sysRoleMenuOptions.setMenuId(menuOptionItem.getMenuId());
|
||||||
|
sysRoleMenuOptions.setMenuOptionId(menuOptionItem.getMenuOptionId());
|
||||||
|
sysRoleMenuOptionsList.add(sysRoleMenuOptions);
|
||||||
|
}
|
||||||
|
this.sysRoleMenuOptionsService.saveBatch(sysRoleMenuOptionsList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 返回空数组,前端处理渲染逻辑
|
||||||
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue