【更新】升级角色功能,业务管理员可以授权给个人全局角色啦

pull/150/head
xiaonuobase 2023-08-11 19:11:01 +08:00
parent b584c17d58
commit 67bf454e66
6 changed files with 68 additions and 7 deletions

View File

@ -39,7 +39,7 @@ public interface SysRoleApi {
* @author xuyuxiang * @author xuyuxiang
* @date 2022/7/22 14:49 * @date 2022/7/22 14:49
**/ **/
Page<JSONObject> roleSelector(String orgId, String category, String searchKey, List<String> dataScopeList); Page<JSONObject> roleSelector(String orgId, String category, String searchKey, List<String> dataScopeList, boolean excludeSuperAdmin);
/** /**
* *

View File

@ -0,0 +1,45 @@
/*
* Copyright [2022] [https://www.xiaonuo.vip]
*
* SnowyAPACHE LICENSE 2.0使
*
* 1.LICENSE
* 2.Snowy
* 3.使使
* 4. https://www.xiaonuo.vip
* 5.xiaonuobase@qq.com
* 6.Snowy https://www.xiaonuo.vip
*/
package vip.xiaonuo.biz.modular.user.enums;
import lombok.Getter;
import vip.xiaonuo.common.exception.CommonException;
/**
*
*
* @author xuyuxiang
* @date 2022/4/21 19:56
**/
@Getter
public enum BizRoleCategoryEnum {
/** 全局 */
GLOBAL("GLOBAL"),
/** 组织 */
ORG("ORG");
private final String value;
BizRoleCategoryEnum(String value) {
this.value = value;
}
public static void validate(String value) {
boolean flag = GLOBAL.getValue().equals(value) || ORG.getValue().equals(value);
if(!flag) {
throw new CommonException("不支持的角色分类:{}", value);
}
}
}

View File

@ -59,6 +59,7 @@ import vip.xiaonuo.biz.modular.org.service.BizOrgService;
import vip.xiaonuo.biz.modular.position.entity.BizPosition; import vip.xiaonuo.biz.modular.position.entity.BizPosition;
import vip.xiaonuo.biz.modular.position.service.BizPositionService; import vip.xiaonuo.biz.modular.position.service.BizPositionService;
import vip.xiaonuo.biz.modular.user.entity.BizUser; import vip.xiaonuo.biz.modular.user.entity.BizUser;
import vip.xiaonuo.biz.modular.user.enums.BizRoleCategoryEnum;
import vip.xiaonuo.biz.modular.user.enums.BizUserStatusEnum; import vip.xiaonuo.biz.modular.user.enums.BizUserStatusEnum;
import vip.xiaonuo.biz.modular.user.mapper.BizUserMapper; import vip.xiaonuo.biz.modular.user.mapper.BizUserMapper;
import vip.xiaonuo.biz.modular.user.param.*; import vip.xiaonuo.biz.modular.user.param.*;
@ -685,13 +686,19 @@ public class BizUserServiceImpl extends ServiceImpl<BizUserMapper, BizUser> impl
if(ObjectUtil.isNotEmpty(bizUserSelectorRoleParam.getOrgId())) { if(ObjectUtil.isNotEmpty(bizUserSelectorRoleParam.getOrgId())) {
if(loginUserDataScope.contains(bizUserSelectorRoleParam.getOrgId())) { if(loginUserDataScope.contains(bizUserSelectorRoleParam.getOrgId())) {
return BeanUtil.toBean(sysRoleApi.roleSelector(bizUserSelectorRoleParam.getOrgId(), bizUserSelectorRoleParam.getCategory(), return BeanUtil.toBean(sysRoleApi.roleSelector(bizUserSelectorRoleParam.getOrgId(), bizUserSelectorRoleParam.getCategory(),
bizUserSelectorRoleParam.getSearchKey(), loginUserDataScope), Page.class); bizUserSelectorRoleParam.getSearchKey(), loginUserDataScope, true), Page.class);
} else { } else {
return new Page<>(); return new Page<>();
} }
} else { } else {
return BeanUtil.toBean(sysRoleApi.roleSelector(bizUserSelectorRoleParam.getOrgId(), bizUserSelectorRoleParam.getCategory(), if (ObjectUtil.isNotEmpty(bizUserSelectorRoleParam.getCategory()) & BizRoleCategoryEnum.GLOBAL.getValue().equals(bizUserSelectorRoleParam.getCategory())) {
bizUserSelectorRoleParam.getSearchKey(), loginUserDataScope), Page.class); // 查询系统级别的
return BeanUtil.toBean(sysRoleApi.roleSelector(null, bizUserSelectorRoleParam.getCategory(),
bizUserSelectorRoleParam.getSearchKey(), null, true), Page.class);
} else {
return BeanUtil.toBean(sysRoleApi.roleSelector(null, bizUserSelectorRoleParam.getCategory(),
bizUserSelectorRoleParam.getSearchKey(), loginUserDataScope, true), Page.class);
}
} }
} else { } else {
return new Page<>(); return new Page<>();

View File

@ -52,4 +52,8 @@ public class SysRoleSelectorRoleParam {
/** 数据范围信息 */ /** 数据范围信息 */
@ApiModelProperty(value = "数据范围信息") @ApiModelProperty(value = "数据范围信息")
private List<String> dataScopeList; private List<String> dataScopeList;
/** 是否排除超管 */
@ApiModelProperty(value = "是否排除超管")
private boolean excludeSuperAdmin = false;
} }

View File

@ -69,20 +69,21 @@ public class SysRoleApiProvider implements SysRoleApi {
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
@Override @Override
public Page<JSONObject> roleSelector(String orgId, String category, String searchKey, List<String> dataScopeList) { public Page<JSONObject> roleSelector(String orgId, String category, String searchKey, List<String> dataScopeList, boolean excludeSuperAdmin) {
SysRoleSelectorRoleParam sysRoleSelectorRoleParam = new SysRoleSelectorRoleParam(); SysRoleSelectorRoleParam sysRoleSelectorRoleParam = new SysRoleSelectorRoleParam();
sysRoleSelectorRoleParam.setOrgId(orgId); sysRoleSelectorRoleParam.setOrgId(orgId);
sysRoleSelectorRoleParam.setCategory(category); sysRoleSelectorRoleParam.setCategory(category);
sysRoleSelectorRoleParam.setSearchKey(searchKey); sysRoleSelectorRoleParam.setSearchKey(searchKey);
sysRoleSelectorRoleParam.setDataScopeList(dataScopeList); sysRoleSelectorRoleParam.setDataScopeList(dataScopeList);
sysRoleSelectorRoleParam.setExcludeSuperAdmin(excludeSuperAdmin);
return BeanUtil.toBean(sysRoleService.roleSelector(sysRoleSelectorRoleParam), Page.class); return BeanUtil.toBean(sysRoleService.roleSelector(sysRoleSelectorRoleParam), Page.class);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void grantForGenMenuAndButton(String menuId) { public void grantForGenMenuAndButton(String menuId) {
String superAdminRoleId = sysRoleService.getOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getCode, SysBuildInEnum.BUILD_IN_ROLE_CODE.getValue()) String superAdminRoleId = sysRoleService.getOne(new LambdaQueryWrapper<SysRole>()
.eq(SysRole::getCategory, SysRoleCategoryEnum.GLOBAL.getValue())).getId(); .eq(SysRole::getCode, SysBuildInEnum.BUILD_IN_ROLE_CODE.getValue())).getId();
SysRoleGrantResourceParam sysRoleGrantResourceParam = new SysRoleGrantResourceParam(); SysRoleGrantResourceParam sysRoleGrantResourceParam = new SysRoleGrantResourceParam();
sysRoleGrantResourceParam.setId(superAdminRoleId); sysRoleGrantResourceParam.setId(superAdminRoleId);
SysMenu sysMenu = sysMenuService.queryEntity(menuId); SysMenu sysMenu = sysMenuService.queryEntity(menuId);

View File

@ -451,6 +451,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
if(ObjectUtil.isNotEmpty(sysRoleSelectorRoleParam.getDataScopeList())) { if(ObjectUtil.isNotEmpty(sysRoleSelectorRoleParam.getDataScopeList())) {
lambdaQueryWrapper.in(SysRole::getOrgId, sysRoleSelectorRoleParam.getDataScopeList()); lambdaQueryWrapper.in(SysRole::getOrgId, sysRoleSelectorRoleParam.getDataScopeList());
} }
// 排除超管角色
if(sysRoleSelectorRoleParam.isExcludeSuperAdmin()) {
lambdaQueryWrapper.ne(SysRole::getCode, SysBuildInEnum.BUILD_IN_ROLE_CODE.getValue());
}
lambdaQueryWrapper.orderByAsc(SysRole::getSortCode); lambdaQueryWrapper.orderByAsc(SysRole::getSortCode);
return this.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper); return this.page(CommonPageRequest.defaultPage(), lambdaQueryWrapper);
} }