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 51217f113..4e1c1ee8c 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 @@ -199,6 +199,18 @@ public class SysUserRequest extends BaseRequest { @ChineseDescription("动态表单数据") private ExpandDataInfo expandDataInfo; + /** + * 角色id + */ + @ChineseDescription("角色id") + private Long roleId; + + /** + * 查询条件:账号或姓名 + */ + @ChineseDescription("查询条件:账号或姓名") + private String condition; + /** * 参数校验分组:修改密码 */ diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java index a3c421b25..15cb11d88 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java @@ -301,4 +301,15 @@ public class SysUserController { public ResponseData getTokenByUserId(Long userId) { return new SuccessResponseData<>(sysUserService.getTokenByUserId(userId)); } + + /** + * 根据条件筛选用户 + * + * @author fengshuonan + * @date 2022/6/17 14:46 + */ + @GetResource(name = "根据条件筛选用户", path = "/sysUser/getUserListByConditions") + public ResponseData> getUserListByConditions(SysUserRequest sysUserRequest) { + return new SuccessResponseData<>(sysUserService.getUserListByConditions(sysUserRequest)); + } } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java index 4098756bc..efe848d0c 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java @@ -272,4 +272,13 @@ public interface SysUserService extends IService, UserServiceApi { * @date 2022/1/27 14:29 **/ Integer devopsApiCheck(SysUserRequest sysUserRequest); + + /** + * 根据部门,角色等查询条件,查找用户下拉列表 + * + * @author fengshuonan + * @date 2022/6/17 14:49 + */ + List getUserListByConditions(SysUserRequest sysUserRequest); + } 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 9d2d0ca04..298234551 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 @@ -71,6 +71,7 @@ import cn.stylefeng.roses.kernel.system.api.pojo.user.request.SysUserRequest; import cn.stylefeng.roses.kernel.system.api.util.DataScopeUtil; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserDataScope; +import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserOrg; import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole; import cn.stylefeng.roses.kernel.system.modular.user.factory.OnlineUserCreateFactory; import cn.stylefeng.roses.kernel.system.modular.user.factory.SysUserCreateFactory; @@ -697,6 +698,66 @@ public class SysUserServiceImpl extends ServiceImpl impl return DevopsCheckStatusEnum.SUCCESSFUL.getCode(); } + @Override + public List getUserListByConditions(SysUserRequest sysUserRequest) { + + Long orgId = sysUserRequest.getOrgId(); + Long roleId = sysUserRequest.getRoleId(); + Integer statusFlag = sysUserRequest.getStatusFlag(); + String condition = sysUserRequest.getCondition(); + + // 查询对应组织机构下的用户 + List orgUserIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(orgId)) { + LambdaQueryWrapper sysUserOrgLambdaQueryWrapper = new LambdaQueryWrapper<>(); + sysUserOrgLambdaQueryWrapper.eq(SysUserOrg::getOrgId, orgId); + List list = this.sysUserOrgService.list(sysUserOrgLambdaQueryWrapper); + orgUserIds = list.stream().map(SysUserOrg::getUserId).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(orgUserIds)) { + return new ArrayList<>(); + } + } + + // 查询角色对应的用户id + List roleUserIds = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(roleId)) { + LambdaQueryWrapper roleLambdaQueryWrapper = new LambdaQueryWrapper<>(); + roleLambdaQueryWrapper.eq(SysUserRole::getRoleId, roleId); + List list = this.sysUserRoleService.list(roleLambdaQueryWrapper); + roleUserIds = list.stream().map(SysUserRole::getUserId).collect(Collectors.toList()); + if (ObjectUtil.isEmpty(roleUserIds)) { + return new ArrayList<>(); + } + } + + LambdaQueryWrapper sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); + + // 查询未删除的 + sysUserLambdaQueryWrapper.eq(SysUser::getDelFlag, YesOrNotEnum.N.getCode()); + + // 查询机构下的 + sysUserLambdaQueryWrapper.in(ObjectUtil.isNotEmpty(orgUserIds), SysUser::getUserId, orgUserIds); + + // 查询所属角色的 + sysUserLambdaQueryWrapper.in(ObjectUtil.isNotEmpty(roleUserIds), SysUser::getUserId, roleUserIds); + + // 查询是否在职 + sysUserLambdaQueryWrapper.eq(ObjectUtil.isNotEmpty(statusFlag), SysUser::getStatusFlag, statusFlag); + + // 按条件查询的 + sysUserLambdaQueryWrapper.nested(ObjectUtil.isNotEmpty(condition), i -> i.like(SysUser::getRealName, condition).or(j -> j.like(SysUser::getAccount, condition))); + + List list = this.list(sysUserLambdaQueryWrapper); + ArrayList results = new ArrayList<>(); + for (SysUser sysUser : list) { + SimpleDict simpleDict = new SimpleDict(); + simpleDict.setId(sysUser.getUserId()); + simpleDict.setName(sysUser.getRealName()); + results.add(simpleDict); + } + return results; + } + @Override public UserLoginInfoDTO getUserLoginInfo(String account) {