From f1208474f771a1c233d7425c8ed13fbaa0d521ac Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期三, 12 三月 2025 09:35:13 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/5.X' into 5.X --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java | 112 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 81 insertions(+), 31 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index 2540606..4081170 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -14,17 +14,13 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.core.constant.CacheNames; -import org.dromara.common.core.constant.UserConstants; +import org.dromara.common.core.constant.SystemConstants; import org.dromara.common.core.domain.dto.UserDTO; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.UserService; -import org.dromara.common.core.utils.MapstructUtils; -import org.dromara.common.core.utils.SpringUtils; -import org.dromara.common.core.utils.StreamUtils; -import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.*; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.system.domain.*; import org.dromara.system.domain.bo.SysUserBo; @@ -42,6 +38,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; /** * 鐢ㄦ埛 涓氬姟灞傚鐞� @@ -80,7 +77,7 @@ private Wrapper<SysUser> buildQueryWrapper(SysUserBo user) { Map<String, Object> params = user.getParams(); QueryWrapper<SysUser> wrapper = Wrappers.query(); - wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) + wrapper.eq("u.del_flag", SystemConstants.NORMAL) .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) @@ -88,9 +85,7 @@ .between(params.get("beginTime") != null && params.get("endTime") != null, "u.create_time", params.get("beginTime"), params.get("endTime")) .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { - List<SysDept> deptList = deptMapper.selectList(new LambdaQueryWrapper<SysDept>() - .select(SysDept::getDeptId) - .apply(DataBaseHelper.findInSet(user.getDeptId(), "ancestors"))); + List<SysDept> deptList = deptMapper.selectListByParentId(user.getDeptId()); List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId); ids.add(user.getDeptId()); w.in("u.dept_id", ids); @@ -110,7 +105,7 @@ @Override public TableDataInfo<SysUserVo> selectAllocatedList(SysUserBo user, PageQuery pageQuery) { QueryWrapper<SysUser> wrapper = Wrappers.query(); - wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) + wrapper.eq("u.del_flag", SystemConstants.NORMAL) .eq(ObjectUtil.isNotNull(user.getRoleId()), "r.role_id", user.getRoleId()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) @@ -130,7 +125,7 @@ public TableDataInfo<SysUserVo> selectUnallocatedList(SysUserBo user, PageQuery pageQuery) { List<Long> userIds = userRoleMapper.selectUserIdsByRoleId(user.getRoleId()); QueryWrapper<SysUser> wrapper = Wrappers.query(); - wrapper.eq("u.del_flag", UserConstants.USER_NORMAL) + wrapper.eq("u.del_flag", SystemConstants.NORMAL) .and(w -> w.ne("r.role_id", user.getRoleId()).or().isNull("r.role_id")) .notIn(CollUtil.isNotEmpty(userIds), "u.user_id", userIds) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) @@ -189,7 +184,7 @@ public List<SysUserVo> selectUserByIds(List<Long> userIds, Long deptId) { return baseMapper.selectUserList(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName) - .eq(SysUser::getStatus, UserConstants.USER_NORMAL) + .eq(SysUser::getStatus, SystemConstants.NORMAL) .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); } @@ -472,7 +467,7 @@ if (ArrayUtil.isNotEmpty(roleIds)) { List<Long> roleList = new ArrayList<>(List.of(roleIds)); if (!LoginHelper.isSuperAdmin(userId)) { - roleList.remove(UserConstants.SUPER_ADMIN_ID); + roleList.remove(SystemConstants.SUPER_ADMIN_ID); } // 鍒ゆ柇鏄惁鍏锋湁姝よ鑹茬殑鎿嶄綔鏉冮檺 List<SysRoleVo> roles = roleMapper.selectRoleList( @@ -567,7 +562,7 @@ public String selectUserNameById(Long userId) { SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserName).eq(SysUser::getUserId, userId)); - return ObjectUtil.isNull(sysUser) ? null : sysUser.getUserName(); + return ObjectUtils.notNullGetter(sysUser, SysUser::getUserName); } /** @@ -581,7 +576,7 @@ public String selectNicknameById(Long userId) { SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getNickName).eq(SysUser::getUserId, userId)); - return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName(); + return ObjectUtils.notNullGetter(sysUser, SysUser::getNickName); } /** @@ -612,7 +607,7 @@ public String selectPhonenumberById(Long userId) { SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getPhonenumber).eq(SysUser::getUserId, userId)); - return ObjectUtil.isNull(sysUser) ? null : sysUser.getPhonenumber(); + return ObjectUtils.notNullGetter(sysUser, SysUser::getPhonenumber); } /** @@ -625,9 +620,15 @@ public String selectEmailById(Long userId) { SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>() .select(SysUser::getEmail).eq(SysUser::getUserId, userId)); - return ObjectUtil.isNull(sysUser) ? null : sysUser.getEmail(); + return ObjectUtils.notNullGetter(sysUser, SysUser::getEmail); } + /** + * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃 + * + * @param userIds 鐢ㄦ埛ids + * @return 鐢ㄦ埛鍒楄〃 + */ @Override public List<UserDTO> selectListByIds(List<Long> userIds) { if (CollUtil.isEmpty(userIds)) { @@ -635,29 +636,55 @@ } List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) - .eq(SysUser::getStatus, UserConstants.USER_NORMAL) - .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + .eq(SysUser::getStatus, SystemConstants.NORMAL) + .in(SysUser::getUserId, userIds)); return BeanUtil.copyToList(list, UserDTO.class); } + /** + * 閫氳繃瑙掕壊ID鏌ヨ鐢ㄦ埛ID + * + * @param roleIds 瑙掕壊ids + * @return 鐢ㄦ埛ids + */ @Override public List<Long> selectUserIdsByRoleIds(List<Long> roleIds) { - List<SysUserRole> userRoles = userRoleMapper.selectList( - new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds)); - return StreamUtils.toList(userRoles, SysUserRole::getUserId); - } - - @Override - public List<UserDTO> selectUsersByRoleIds(List<Long> roleIds) { if (CollUtil.isEmpty(roleIds)) { return List.of(); } List<SysUserRole> userRoles = userRoleMapper.selectList( new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds)); - List<Long> userIds = StreamUtils.toList(userRoles, SysUserRole::getUserId); - return selectListByIds(userIds); + return StreamUtils.toList(userRoles, SysUserRole::getUserId); } + /** + * 閫氳繃瑙掕壊ID鏌ヨ鐢ㄦ埛 + * + * @param roleIds 瑙掕壊ids + * @return 鐢ㄦ埛 + */ + @Override + public List<UserDTO> selectUsersByRoleIds(List<Long> roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return List.of(); + } + + // 閫氳繃瑙掕壊ID鑾峰彇鐢ㄦ埛瑙掕壊淇℃伅 + List<SysUserRole> userRoles = userRoleMapper.selectList( + new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds)); + + // 鑾峰彇鐢ㄦ埛ID鍒楄〃 + Set<Long> userIds = StreamUtils.toSet(userRoles, SysUserRole::getUserId); + + return selectListByIds(new ArrayList<>(userIds)); + } + + /** + * 閫氳繃閮ㄩ棬ID鏌ヨ鐢ㄦ埛 + * + * @param deptIds 閮ㄩ棬ids + * @return 鐢ㄦ埛 + */ @Override public List<UserDTO> selectUsersByDeptIds(List<Long> deptIds) { if (CollUtil.isEmpty(deptIds)) { @@ -665,8 +692,31 @@ } List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>() .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) - .eq(SysUser::getStatus, UserConstants.USER_NORMAL) - .in(CollUtil.isNotEmpty(deptIds), SysUser::getDeptId, deptIds)); + .eq(SysUser::getStatus, SystemConstants.NORMAL) + .in(SysUser::getDeptId, deptIds)); return BeanUtil.copyToList(list, UserDTO.class); } + + /** + * 閫氳繃宀椾綅ID鏌ヨ鐢ㄦ埛 + * + * @param postIds 宀椾綅ids + * @return 鐢ㄦ埛 + */ + @Override + public List<UserDTO> selectUsersByPostIds(List<Long> postIds) { + if (CollUtil.isEmpty(postIds)) { + return List.of(); + } + + // 閫氳繃宀椾綅ID鑾峰彇鐢ㄦ埛宀椾綅淇℃伅 + List<SysUserPost> userPosts = userPostMapper.selectList( + new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getPostId, postIds)); + + // 鑾峰彇鐢ㄦ埛ID鍒楄〃 + Set<Long> userIds = StreamUtils.toSet(userPosts, SysUserPost::getUserId); + + return selectListByIds(new ArrayList<>(userIds)); + } + } -- Gitblit v1.9.3