From be77382df122db3d9111b828d20b06cfc8efe8b0 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Sat, 25 Sep 2021 13:00:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.3=E3=80=91=E3=80=90user=E3=80=91?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=8C=83=E5=9B=B4=E7=9A=84=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pojo/user/request/SysUserRequest.java | 11 ++++++ .../user/mapper/mapping/SysUserMapper.xml | 13 +++++++ .../user/service/impl/SysUserServiceImpl.java | 35 +++++++++++++++++++ 3 files changed, 59 insertions(+) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java index b48bf1179..65e854f3d 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/pojo/user/request/SysUserRequest.java @@ -38,6 +38,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; +import java.util.Set; /** * 系统用户参数 @@ -179,6 +180,16 @@ public class SysUserRequest extends BaseRequest { @ChineseDescription("用户id集合(用在批量删除)") private List userIds; + /** + * 部门的数据范围集合 + */ + private Set scopeOrgIds; + + /** + * 用户id的数据范围集合 + */ + private Set userScopeIds; + /** * 参数校验分组:修改密码 */ diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml index c5ea204b5..4e1c372d3 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/mapper/mapping/SysUserMapper.xml @@ -35,6 +35,19 @@ and suorg.org_id in (select org_id from hr_organization where org_pids like CONCAT('%$[',#{sysUserRequest.orgId},'$]%') escape '$' or org_id=#{sysUserRequest.orgId} ) + + and suorg.org_id in + + #{item} + + + + and suser.user_id in + + #{item} + + + and suser.del_flag = 'N' order by suser.create_time desc diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java index d26820616..a2fad04e4 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java @@ -30,6 +30,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; +import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum; import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; @@ -393,6 +394,40 @@ public class SysUserServiceImpl extends ServiceImpl impl @Override public PageResult findPage(SysUserRequest sysUserRequest) { + LoginUser loginUser = LoginContext.me().getLoginUser(); + + // 获取当前用户数据范围的枚举 + Set dataScopeTypeEnums = loginUser.getDataScopeTypeEnums(); + + // 获取当前用户数绑定的组织机构范围 + Set dataScopeOrganizationIds = loginUser.getDataScopeOrganizationIds(); + + // 获取当前用户绑定的用户数据范围 + Set dataScopeUserIds = loginUser.getDataScopeUserIds(); + + // 如果包含了全部数据 + if (dataScopeTypeEnums.contains(DataScopeTypeEnum.ALL)) { + sysUserRequest.setScopeOrgIds(null); + sysUserRequest.setUserScopeIds(null); + } + // 如果是按部门数据划分 + else if (dataScopeTypeEnums.contains(DataScopeTypeEnum.DEPT) + || dataScopeTypeEnums.contains(DataScopeTypeEnum.DEPT_WITH_CHILD) + || dataScopeTypeEnums.contains(DataScopeTypeEnum.DEFINE)) { + sysUserRequest.setScopeOrgIds(null); + sysUserRequest.setUserScopeIds(dataScopeUserIds); + } + // 如果包含了仅有自己的数据 + else if (dataScopeTypeEnums.contains(DataScopeTypeEnum.SELF)) { + sysUserRequest.setScopeOrgIds(dataScopeOrganizationIds); + sysUserRequest.setUserScopeIds(dataScopeUserIds); + } + // 其他情况,没有设置数据范围,则查所有 + else { + sysUserRequest.setScopeOrgIds(null); + sysUserRequest.setUserScopeIds(null); + } + Page userPage = this.baseMapper.findUserPage(PageFactory.defaultPage(), sysUserRequest); return PageResultFactory.createPageResult(userPage);