mirror of https://gitee.com/stylefeng/roses
【7.2.5】【menu】增加角色绑定操作权限的全选接口
parent
5bd415155a
commit
154086c7fc
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue