From 9d8b9fabbea813e980d7f8e67ee633a55d205955 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期四, 16 一月 2025 11:50:19 +0800
Subject: [PATCH] update 优化 ws模块替换session的时候关闭session连接
---
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java | 331 ++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 253 insertions(+), 78 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 bde6244..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
@@ -1,6 +1,8 @@
package org.dromara.system.service.impl;
+import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -12,32 +14,31 @@
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.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.SysDept;
-import org.dromara.system.domain.SysUser;
-import org.dromara.system.domain.SysUserPost;
-import org.dromara.system.domain.SysUserRole;
+import org.dromara.system.domain.*;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysPostVo;
import org.dromara.system.domain.vo.SysRoleVo;
+import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.mapper.*;
import org.dromara.system.service.ISysUserService;
+import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
/**
* 鐢ㄦ埛 涓氬姟灞傚鐞�
@@ -69,28 +70,29 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- public List<SysUserVo> selectUserList(SysUserBo user) {
- return baseMapper.selectUserList(this.buildQueryWrapper(user));
+ public List<SysUserExportVo> selectUserExportList(SysUserBo user) {
+ return baseMapper.selectUserExportList(this.buildQueryWrapper(user));
}
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)
- .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())
- .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
- .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<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
- ids.add(user.getDeptId());
- w.in("u.dept_id", ids);
- }).orderByAsc("u.user_id");
+ 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())
+ .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
+ .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.selectListByParentId(user.getDeptId());
+ List<Long> ids = StreamUtils.toList(deptList, SysDept::getDeptId);
+ ids.add(user.getDeptId());
+ w.in("u.dept_id", ids);
+ }).orderByAsc("u.user_id");
+ if (StringUtils.isNotBlank(user.getExcludeUserIds())) {
+ wrapper.notIn("u.user_id", StringUtils.splitTo(user.getExcludeUserIds(), Convert::toLong));
+ }
return wrapper;
}
@@ -103,12 +105,12 @@
@Override
public TableDataInfo<SysUserVo> selectAllocatedList(SysUserBo user, PageQuery pageQuery) {
QueryWrapper<SysUser> wrapper = Wrappers.query();
- wrapper.eq("u.del_flag", UserConstants.USER_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())
- .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
- .orderByAsc("u.user_id");
+ 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())
+ .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
+ .orderByAsc("u.user_id");
Page<SysUserVo> page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper);
return TableDataInfo.build(page);
}
@@ -123,12 +125,12 @@
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)
- .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())
- .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
- .orderByAsc("u.user_id");
+ 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())
+ .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
+ .orderByAsc("u.user_id");
Page<SysUserVo> page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper);
return TableDataInfo.build(page);
}
@@ -163,7 +165,28 @@
*/
@Override
public SysUserVo selectUserById(Long userId) {
- return baseMapper.selectVoById(userId);
+ SysUserVo user = baseMapper.selectVoById(userId);
+ if (ObjectUtil.isNull(user)) {
+ return user;
+ }
+ user.setRoles(roleMapper.selectRolesByUserId(user.getUserId()));
+ return user;
+ }
+
+ /**
+ * 閫氳繃鐢ㄦ埛ID涓叉煡璇㈢敤鎴�
+ *
+ * @param userIds 鐢ㄦ埛ID涓�
+ * @param deptId 閮ㄩ棬id
+ * @return 鐢ㄦ埛鍒楄〃淇℃伅
+ */
+ @Override
+ 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, SystemConstants.NORMAL)
+ .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId)
+ .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds));
}
/**
@@ -205,8 +228,8 @@
@Override
public boolean checkUserNameUnique(SysUserBo user) {
boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
- .eq(SysUser::getUserName, user.getUserName())
- .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
+ .eq(SysUser::getUserName, user.getUserName())
+ .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
return !exist;
}
@@ -218,8 +241,8 @@
@Override
public boolean checkPhoneUnique(SysUserBo user) {
boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
- .eq(SysUser::getPhonenumber, user.getPhonenumber())
- .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
+ .eq(SysUser::getPhonenumber, user.getPhonenumber())
+ .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
return !exist;
}
@@ -231,8 +254,8 @@
@Override
public boolean checkEmailUnique(SysUserBo user) {
boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysUser>()
- .eq(SysUser::getEmail, user.getEmail())
- .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
+ .eq(SysUser::getEmail, user.getEmail())
+ .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId()));
return !exist;
}
@@ -294,8 +317,8 @@
*/
@Override
public boolean registerUser(SysUserBo user, String tenantId) {
- user.setCreateBy(user.getUserId());
- user.setUpdateBy(user.getUserId());
+ user.setCreateBy(0L);
+ user.setUpdateBy(0L);
SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
sysUser.setTenantId(tenantId);
return baseMapper.insert(sysUser) > 0;
@@ -308,6 +331,7 @@
* @return 缁撴灉
*/
@Override
+ @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId")
@Transactional(rollbackFor = Exception.class)
public int updateUser(SysUserBo user) {
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
@@ -345,9 +369,9 @@
@Override
public int updateUserStatus(Long userId, String status) {
return baseMapper.update(null,
- new LambdaUpdateWrapper<SysUser>()
- .set(SysUser::getStatus, status)
- .eq(SysUser::getUserId, userId));
+ new LambdaUpdateWrapper<SysUser>()
+ .set(SysUser::getStatus, status)
+ .eq(SysUser::getUserId, userId));
}
/**
@@ -356,15 +380,16 @@
* @param user 鐢ㄦ埛淇℃伅
* @return 缁撴灉
*/
+ @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId")
@Override
public int updateUserProfile(SysUserBo user) {
return baseMapper.update(null,
- new LambdaUpdateWrapper<SysUser>()
- .set(ObjectUtil.isNotNull(user.getNickName()), SysUser::getNickName, user.getNickName())
- .set(SysUser::getPhonenumber, user.getPhonenumber())
- .set(SysUser::getEmail, user.getEmail())
- .set(SysUser::getSex, user.getSex())
- .eq(SysUser::getUserId, user.getUserId()));
+ new LambdaUpdateWrapper<SysUser>()
+ .set(ObjectUtil.isNotNull(user.getNickName()), SysUser::getNickName, user.getNickName())
+ .set(SysUser::getPhonenumber, user.getPhonenumber())
+ .set(SysUser::getEmail, user.getEmail())
+ .set(SysUser::getSex, user.getSex())
+ .eq(SysUser::getUserId, user.getUserId()));
}
/**
@@ -377,9 +402,9 @@
@Override
public boolean updateUserAvatar(Long userId, Long avatar) {
return baseMapper.update(null,
- new LambdaUpdateWrapper<SysUser>()
- .set(SysUser::getAvatar, avatar)
- .eq(SysUser::getUserId, userId)) > 0;
+ new LambdaUpdateWrapper<SysUser>()
+ .set(SysUser::getAvatar, avatar)
+ .eq(SysUser::getUserId, userId)) > 0;
}
/**
@@ -392,9 +417,9 @@
@Override
public int resetUserPwd(Long userId, String password) {
return baseMapper.update(null,
- new LambdaUpdateWrapper<SysUser>()
- .set(SysUser::getPassword, password)
- .eq(SysUser::getUserId, userId));
+ new LambdaUpdateWrapper<SysUser>()
+ .set(SysUser::getPassword, password)
+ .eq(SysUser::getUserId, userId));
}
/**
@@ -440,17 +465,14 @@
*/
private void insertUserRole(Long userId, Long[] roleIds, boolean clear) {
if (ArrayUtil.isNotEmpty(roleIds)) {
- // 鍒ゆ柇鏄惁鍏锋湁姝よ鑹茬殑鎿嶄綔鏉冮檺
- List<SysRoleVo> roles = roleMapper.selectRoleList(new LambdaQueryWrapper<>());
- if (CollUtil.isEmpty(roles)) {
- throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鐨勬暟鎹�");
- }
- List<Long> roleList = StreamUtils.toList(roles, SysRoleVo::getRoleId);
+ 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<Long> canDoRoleList = StreamUtils.filter(List.of(roleIds), roleList::contains);
- if (CollUtil.isEmpty(canDoRoleList)) {
+ // 鍒ゆ柇鏄惁鍏锋湁姝よ鑹茬殑鎿嶄綔鏉冮檺
+ List<SysRoleVo> roles = roleMapper.selectRoleList(
+ new QueryWrapper<SysRole>().in("r.role_id", roleList));
+ if (CollUtil.isEmpty(roles)) {
throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鐨勬暟鎹�");
}
if (clear) {
@@ -458,7 +480,7 @@
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
}
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
- List<SysUserRole> list = StreamUtils.toList(canDoRoleList, roleId -> {
+ List<SysUserRole> list = StreamUtils.toList(roleList, roleId -> {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
@@ -508,7 +530,7 @@
// 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, ids));
// 闃叉鏇存柊澶辫触瀵艰嚧鐨勬暟鎹垹闄�
- int flag = baseMapper.deleteBatchIds(ids);
+ int flag = baseMapper.deleteByIds(ids);
if (flag < 1) {
throw new ServiceException("鍒犻櫎鐢ㄦ埛澶辫触!");
}
@@ -518,8 +540,8 @@
/**
* 閫氳繃閮ㄩ棬id鏌ヨ褰撳墠閮ㄩ棬鎵�鏈夌敤鎴�
*
- * @param deptId
- * @return
+ * @param deptId 閮ㄩ棬ID
+ * @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
public List<SysUserVo> selectUserListByDept(Long deptId) {
@@ -529,19 +551,172 @@
return baseMapper.selectVoList(lqw);
}
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛璐︽埛
+ *
+ * @param userId 鐢ㄦ埛ID
+ * @return 鐢ㄦ埛璐︽埛
+ */
@Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
@Override
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();
+ .select(SysUser::getUserName).eq(SysUser::getUserId, userId));
+ return ObjectUtils.notNullGetter(sysUser, SysUser::getUserName);
}
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛璐︽埛
+ *
+ * @param userId 鐢ㄦ埛ID
+ * @return 鐢ㄦ埛璐︽埛
+ */
@Override
@Cacheable(cacheNames = CacheNames.SYS_NICKNAME, key = "#userId")
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);
}
+
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛璐︽埛
+ *
+ * @param userIds 鐢ㄦ埛ID 澶氫釜鐢ㄩ�楀彿闅斿紑
+ * @return 鐢ㄦ埛璐︽埛
+ */
+ @Override
+ public String selectNicknameByIds(String userIds) {
+ List<String> list = new ArrayList<>();
+ for (Long id : StringUtils.splitTo(userIds, Convert::toLong)) {
+ String nickname = SpringUtils.getAopProxy(this).selectNicknameById(id);
+ if (StringUtils.isNotBlank(nickname)) {
+ list.add(nickname);
+ }
+ }
+ return String.join(StringUtils.SEPARATOR, list);
+ }
+
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鎵嬫満鍙�
+ *
+ * @param userId 鐢ㄦ埛id
+ * @return 鐢ㄦ埛鎵嬫満鍙�
+ */
+ @Override
+ public String selectPhonenumberById(Long userId) {
+ SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+ .select(SysUser::getPhonenumber).eq(SysUser::getUserId, userId));
+ return ObjectUtils.notNullGetter(sysUser, SysUser::getPhonenumber);
+ }
+
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛閭
+ *
+ * @param userId 鐢ㄦ埛id
+ * @return 鐢ㄦ埛閭
+ */
+ @Override
+ public String selectEmailById(Long userId) {
+ SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
+ .select(SysUser::getEmail).eq(SysUser::getUserId, userId));
+ return ObjectUtils.notNullGetter(sysUser, SysUser::getEmail);
+ }
+
+ /**
+ * 閫氳繃鐢ㄦ埛ID鏌ヨ鐢ㄦ埛鍒楄〃
+ *
+ * @param userIds 鐢ㄦ埛ids
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ @Override
+ public List<UserDTO> selectListByIds(List<Long> userIds) {
+ if (CollUtil.isEmpty(userIds)) {
+ return List.of();
+ }
+ List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>()
+ .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber)
+ .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) {
+ if (CollUtil.isEmpty(roleIds)) {
+ return List.of();
+ }
+ List<SysUserRole> userRoles = userRoleMapper.selectList(
+ new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
+ 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)) {
+ return List.of();
+ }
+ List<SysUserVo> list = baseMapper.selectVoList(new LambdaQueryWrapper<SysUser>()
+ .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber)
+ .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