【7.2.5】【menu】增加角色绑定操作权限的全选接口

pull/37/head
fengshuonan 2022-09-29 11:03:07 +08:00
parent 5bd415155a
commit 154086c7fc
5 changed files with 99 additions and 16 deletions

View File

@ -126,4 +126,13 @@ public interface MenuServiceApi {
*/
List<Long> getTotalMenuIdList(AntdvFrontTypeEnum antdvFrontTypeEnum);
/**
* id
*
* @param antdvFrontTypeEnum
* @author fengshuonan
* @date 2022/9/29 9:56
*/
List<Long> getTotalMenuButtonIdList(AntdvFrontTypeEnum antdvFrontTypeEnum);
}

View File

@ -525,6 +525,25 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return sysMenuList.stream().map(SysMenu::getMenuId).collect(Collectors.toList());
}
@Override
public List<Long> getTotalMenuButtonIdList(AntdvFrontTypeEnum antdvFrontTypeEnum) {
List<Long> totalMenuIdList = this.getTotalMenuIdList(antdvFrontTypeEnum);
if (ObjectUtil.isEmpty(totalMenuIdList)) {
return new ArrayList<>();
}
// 获取所有按钮id集合
LambdaQueryWrapper<SysMenuButton> wrapper = new LambdaQueryWrapper<>();
wrapper.select(SysMenuButton::getButtonId);
wrapper.eq(SysMenuButton::getDelFlag, YesOrNotEnum.N.getCode());
wrapper.in(SysMenuButton::getMenuId, totalMenuIdList);
List<SysMenuButton> list = this.sysMenuButtonService.list(wrapper);
return list.stream().map(SysMenuButton::getButtonId).collect(Collectors.toList());
}
@Override
public List<SysMenu> getCurrentUserMenus(List<String> appCodeList, Boolean layuiVisibleFlag, Integer antdvFrontType) {

View File

@ -274,4 +274,15 @@ public class SysRoleController {
return new SuccessResponseData<>(sysRoleService.grantRoleMenusGrantAll(sysRoleRequest));
}
/**
*
*
* @author fengshuonan
* @date 2022/9/28 20:28
*/
@PostResource(name = "角色权限界面:角色绑定操作权限(全选操作)", path = "/sysRole/grantButton/grantAll")
public ResponseData<List<MenuAndButtonTreeResponse>> grantButtonGrantAll(@RequestBody @Validated(SysRoleRequest.grantAll.class) SysRoleRequest sysRoleRequest) {
return new SuccessResponseData<>(sysRoleService.grantButtonGrantAll(sysRoleRequest));
}
}

View File

@ -184,4 +184,12 @@ public interface SysRoleService extends IService<SysRole>, RoleServiceApi {
*/
List<MenuAndButtonTreeResponse> grantRoleMenusGrantAll(SysRoleRequest sysRoleRequest);
/**
*
*
* @author fengshuonan
* @date 2022/9/29 10:46
*/
List<MenuAndButtonTreeResponse> grantButtonGrantAll(SysRoleRequest sysRoleRequest);
}

View File

@ -483,25 +483,61 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
wrapper.eq(SysRoleMenu::getRoleId, sysRoleRequest.getRoleId());
this.roleMenuService.remove(wrapper);
// 如果是全部选中
if (sysRoleRequest.getTotalSelectFlag()) {
// 获取当前角色分配的菜单权限
List<MenuAndButtonTreeResponse> roleBindMenuList = menuServiceApi.getRoleBindMenuList(sysRoleRequest);
// 获取所有前台菜单id
List<Long> totalMenuIdList = this.menuServiceApi.getTotalMenuIdList(AntdvFrontTypeEnum.FRONT);
// 批量保存绑定的菜单集合
List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
for (Long menuId : totalMenuIdList) {
SysRoleMenu item = new SysRoleMenu();
item.setRoleId(sysRoleRequest.getRoleId());
item.setMenuId(menuId);
sysRoleMenus.add(item);
}
this.roleMenuService.saveBatch(sysRoleMenus);
// 如果是取消权限,则直接返回
if (!sysRoleRequest.getTotalSelectFlag()) {
return roleBindMenuList;
}
// 获取当前角色分配的菜单权限
return menuServiceApi.getRoleBindMenuList(sysRoleRequest);
// 获取所有前台菜单id
List<Long> totalMenuIdList = this.menuServiceApi.getTotalMenuIdList(AntdvFrontTypeEnum.FRONT);
// 批量保存绑定的菜单集合
List<SysRoleMenu> sysRoleMenus = new ArrayList<>();
for (Long menuId : totalMenuIdList) {
SysRoleMenu item = new SysRoleMenu();
item.setRoleId(sysRoleRequest.getRoleId());
item.setMenuId(menuId);
sysRoleMenus.add(item);
}
this.roleMenuService.saveBatch(sysRoleMenus);
return roleBindMenuList;
}
@Override
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_UNCOMMITTED)
public List<MenuAndButtonTreeResponse> grantButtonGrantAll(SysRoleRequest sysRoleRequest) {
// 删除角色绑定的所有按钮权限
LambdaUpdateWrapper<SysRoleMenuButton> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(SysRoleMenuButton::getRoleId, sysRoleRequest.getRoleId());
this.sysRoleMenuButtonService.remove(wrapper);
// 获取当前角色分配的操作权限
List<MenuAndButtonTreeResponse> roleBindOperateList = menuServiceApi.getRoleBindOperateList(sysRoleRequest);
// 如果是取消权限,则直接返回
if (!sysRoleRequest.getTotalSelectFlag()) {
return roleBindOperateList;
}
// 获取所有前台按钮集合
List<Long> totalButtonIds = this.menuServiceApi.getTotalMenuButtonIdList(AntdvFrontTypeEnum.FRONT);
// 批量保存绑定的按钮集合
List<SysRoleMenuButton> sysRoleMenuButtons = new ArrayList<>();
for (Long buttonId : totalButtonIds) {
SysRoleMenuButton item = new SysRoleMenuButton();
item.setRoleId(sysRoleRequest.getRoleId());
item.setButtonId(buttonId);
sysRoleMenuButtons.add(item);
}
this.sysRoleMenuButtonService.saveBatch(sysRoleMenuButtons);
return roleBindOperateList;
}
@Override