diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java index 3e30f3cdc..bdd0a6a59 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/RoleServiceApi.java @@ -153,4 +153,12 @@ public interface RoleServiceApi { */ void del(SysRoleRequest sysRoleRequest); + /** + * 角色绑定所有资源 + * + * @author fengshuonan + * @date 2022/9/29 14:05 + */ + void grantResourceV2GrantAll(SysRoleRequest sysRoleRequest); + } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java index 31c83a2b9..351b6face 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/controller/SysRoleAuthController.java @@ -150,7 +150,7 @@ public class SysRoleAuthController { */ @PostResource(name = "角色绑定所有接口数据", path = "/sysRole/grantResourceV2/grantAll") public ResponseData grantResourceV2GrantAll(@RequestBody @Validated(SysRoleRequest.grantAll.class) SysRoleRequest sysRoleRequest) { - sysRoleResourceService.grantResourceV2GrantAll(sysRoleRequest); + this.sysRoleService.grantResourceV2GrantAll(sysRoleRequest); return new SuccessResponseData<>(); } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java index 82e3a650e..869a6cfbf 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/SysRoleResourceService.java @@ -82,11 +82,11 @@ public interface SysRoleResourceService extends IService { void quickSaveAll(List sysRoleResourceList); /** - * 角色绑定所有资源 + * 批量保存角色和资源的绑定 * * @author fengshuonan - * @date 2022/9/29 14:05 + * @date 2022/9/29 14:34 */ - void grantResourceV2GrantAll(SysRoleRequest sysRoleRequest); + void batchSaveResCodes(Long roleId, List totalResourceCode); } diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java index 3573af066..22aa984ae 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleResourceServiceImpl.java @@ -30,8 +30,6 @@ import cn.stylefeng.roses.kernel.cache.api.CacheOperatorApi; import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext; import cn.stylefeng.roses.kernel.rule.constants.RuleConstants; import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum; -import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; -import cn.stylefeng.roses.kernel.system.api.ResourceServiceApi; import cn.stylefeng.roses.kernel.system.api.pojo.role.request.SysRoleRequest; import cn.stylefeng.roses.kernel.system.modular.role.entity.SysRoleResource; import cn.stylefeng.roses.kernel.system.modular.role.mapper.SysRoleResourceMapper; @@ -59,9 +57,6 @@ public class SysRoleResourceServiceImpl extends ServiceImpl> roleResourceCacheApi; - @Resource - private ResourceServiceApi resourceServiceApi; - @Override @Transactional(rollbackFor = Exception.class) public void grantResource(SysRoleRequest sysRoleRequest) { @@ -157,33 +152,14 @@ public class SysRoleResourceServiceImpl extends ServiceImpl totalResourceCode = resourceServiceApi.getTotalResourceCode(resBizTypeEnum); - this.batchSaveResCodes(sysRoleRequest.getRoleId(), totalResourceCode); - } - /** * 批量保存角色和资源的绑定 * * @author fengshuonan * @date 2022/9/29 14:34 */ - private void batchSaveResCodes(Long roleId, List totalResourceCode) { + @Override + public void batchSaveResCodes(Long roleId, List totalResourceCode) { ArrayList sysRoleResourceList = new ArrayList<>(); if (ObjectUtil.isNotEmpty(totalResourceCode)) { diff --git a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java index 1fa5edbc5..1f2528835 100644 --- a/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-role/src/main/java/cn/stylefeng/roses/kernel/system/modular/role/service/impl/SysRoleServiceImpl.java @@ -37,11 +37,13 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.rule.constants.SymbolConstant; +import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict; import cn.stylefeng.roses.kernel.system.api.MenuServiceApi; +import cn.stylefeng.roses.kernel.system.api.ResourceServiceApi; import cn.stylefeng.roses.kernel.system.api.UserServiceApi; import cn.stylefeng.roses.kernel.system.api.constants.SystemConstants; import cn.stylefeng.roses.kernel.system.api.enums.AntdvFrontTypeEnum; @@ -112,6 +114,9 @@ public class SysRoleServiceImpl extends ServiceImpl impl @Resource(name = "roleDataScopeCacheApi") private CacheOperatorApi> roleDataScopeCacheApi; + @Resource + private ResourceServiceApi resourceServiceApi; + @Override public void add(SysRoleRequest sysRoleRequest) { @@ -165,6 +170,26 @@ public class SysRoleServiceImpl extends ServiceImpl impl roleDataScopeCacheApi.remove(String.valueOf(sysRoleRequest.getRoleId())); } + @Override + public void grantResourceV2GrantAll(SysRoleRequest sysRoleRequest) { + + // 删除角色绑定的所有资源 + this.sysRoleResourceService.deleteRoleResourceListByRoleId(sysRoleRequest.getRoleId()); + + // 获取是全部选中,还是全部取消,如果是全部取消,则直接返回 + if (!sysRoleRequest.getTotalSelectFlag()) { + return; + } + + // 如果是全部选中,则查询一共有多少资源,将角色赋予全部资源 + ResBizTypeEnum resBizTypeEnum = null; + if (ObjectUtil.isNotEmpty(sysRoleRequest.getResourceBizType())) { + resBizTypeEnum = ResBizTypeEnum.DEFAULT.parseToEnum(sysRoleRequest.getResourceBizType().toString()); + } + List totalResourceCode = resourceServiceApi.getTotalResourceCode(resBizTypeEnum); + this.sysRoleResourceService.batchSaveResCodes(sysRoleRequest.getRoleId(), totalResourceCode); + } + @Override @Transactional(rollbackFor = Exception.class) public void edit(SysRoleRequest sysRoleRequest) { @@ -206,7 +231,7 @@ public class SysRoleServiceImpl extends ServiceImpl impl LambdaQueryWrapper wrapper = createWrapper(sysRoleRequest); // 不查询管理员类型的 - wrapper.eq(SysRole::getRoleSystemFlag, YesOrNotEnum.N.getCode()); + wrapper.eq(SysRole::getAdminFlag, YesOrNotEnum.N.getCode()); Page sysRolePage = this.page(PageFactory.defaultPage(), wrapper); return PageResultFactory.createPageResult(sysRolePage); diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java index 9341d7111..ac623c370 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserAdminServiceImpl.java @@ -1,6 +1,7 @@ package cn.stylefeng.roses.kernel.system.modular.user.service.impl; import cn.hutool.core.util.ObjectUtil; +import cn.stylefeng.roses.kernel.rule.enums.ResBizTypeEnum; import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum; import cn.stylefeng.roses.kernel.system.api.RoleServiceApi; import cn.stylefeng.roses.kernel.system.api.pojo.role.dto.SysRoleDTO; @@ -165,6 +166,13 @@ public class SysUserAdminServiceImpl implements SysUserAdminService { temp.setRoleId(sysRoleRequest.getRoleId()); temp.setTotalSelectFlag(true); this.roleServiceApi.grantButtonGrantAll(temp); + + // 添加用户默认的所有后端接口权限 + SysRoleRequest tempResRequest = new SysRoleRequest(); + tempResRequest.setRoleId(sysRoleRequest.getRoleId()); + tempResRequest.setTotalSelectFlag(true); + tempResRequest.setResourceBizType(ResBizTypeEnum.SYSTEM.getCode()); + this.roleServiceApi.grantResourceV2GrantAll(tempResRequest); } }