diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java index f1853c3eb..d85dc20b0 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/SysRoleService.java @@ -2,6 +2,7 @@ package cn.stylefeng.roses.kernel.sys.modular.role.service; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.sys.api.SysRoleServiceApi; +import cn.stylefeng.roses.kernel.sys.api.enums.permission.DataScopeTypeEnum; import cn.stylefeng.roses.kernel.sys.modular.role.entity.SysRole; import cn.stylefeng.roses.kernel.sys.modular.role.pojo.request.SysRoleRequest; import com.baomidou.mybatisplus.extension.service.IService; @@ -100,4 +101,12 @@ public interface SysRoleService extends IService, SysRoleServiceApi { */ void updateRoleDataScopeType(Long roleId, Integer dataScopeType); + /** + * 获取角色对应的数据范围,如果是多个角色,则取最大类型的数据范围 + * + * @author fengshuonan + * @since 2023/7/18 23:19 + */ + DataScopeTypeEnum getRoleDataScope(List roleIds); + } \ No newline at end of file diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java index cad0ab625..76648aed8 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java @@ -145,6 +145,27 @@ public class SysRoleServiceImpl extends ServiceImpl impl this.update(sysRoleLambdaUpdateWrapper); } + @Override + public DataScopeTypeEnum getRoleDataScope(List roleIds) { + + LambdaQueryWrapper sysRoleLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysRoleLambdaQueryWrapper.in(SysRole::getRoleId, roleIds); + sysRoleLambdaQueryWrapper.select(SysRole::getDataScopeType); + + // 按数据范围降序排列,50-全部数据最大 + sysRoleLambdaQueryWrapper.orderByDesc(SysRole::getDataScopeType); + + SysRole sysRole = this.getOne(sysRoleLambdaQueryWrapper, false); + if (sysRole != null) { + if (sysRole.getDataScopeType() != null) { + return DataScopeTypeEnum.codeToEnum(sysRole.getDataScopeType()); + } + } + + // 如果是查询不到,则直接返回仅本人数据 + return DataScopeTypeEnum.SELF; + } + @Override public List findList(SysRoleRequest sysRoleRequest) { LambdaQueryWrapper wrapper = this.createWrapper(sysRoleRequest);