From 210570c0056c46c35bdd349a2fac558441f86f3b Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期四, 30 三月 2023 17:36:09 +0800
Subject: [PATCH] update 优化 !pr317 代码结构
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 234 +++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 141 insertions(+), 93 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 4e1d63a..e559a0e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -9,19 +9,30 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.constant.CacheNames;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.service.UserService;
+import com.ruoyi.common.core.utils.MapstructUtils;
import com.ruoyi.common.core.utils.StreamUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.mybatis.helper.DataBaseHelper;
import com.ruoyi.common.satoken.utils.LoginHelper;
-import com.ruoyi.system.domain.*;
+import com.ruoyi.system.domain.SysDept;
+import com.ruoyi.system.domain.SysUser;
+import com.ruoyi.system.domain.SysUserPost;
+import com.ruoyi.system.domain.SysUserRole;
+import com.ruoyi.system.domain.bo.SysUserBo;
+import com.ruoyi.system.domain.vo.SysPostVo;
+import com.ruoyi.system.domain.vo.SysRoleVo;
+import com.ruoyi.system.domain.vo.SysUserVo;
import com.ruoyi.system.mapper.*;
import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -36,7 +47,7 @@
@Slf4j
@RequiredArgsConstructor
@Service
-public class SysUserServiceImpl implements ISysUserService {
+public class SysUserServiceImpl implements ISysUserService, UserService {
private final SysUserMapper baseMapper;
private final SysDeptMapper deptMapper;
@@ -46,8 +57,8 @@
private final SysUserPostMapper userPostMapper;
@Override
- public TableDataInfo<SysUser> selectPageUserList(SysUser user, PageQuery pageQuery) {
- Page<SysUser> page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user));
+ public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
+ Page<SysUserVo> page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user));
return TableDataInfo.build(page);
}
@@ -58,11 +69,11 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- public List<SysUser> selectUserList(SysUser user) {
+ public List<SysUserVo> selectUserList(SysUserBo user) {
return baseMapper.selectUserList(this.buildQueryWrapper(user));
}
- private Wrapper<SysUser> buildQueryWrapper(SysUser 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)
@@ -90,14 +101,14 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- public TableDataInfo<SysUser> selectAllocatedList(SysUser user, PageQuery pageQuery) {
+ 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());
- Page<SysUser> page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper);
+ Page<SysUserVo> page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper);
return TableDataInfo.build(page);
}
@@ -108,7 +119,7 @@
* @return 鐢ㄦ埛淇℃伅闆嗗悎淇℃伅
*/
@Override
- public TableDataInfo<SysUser> selectUnallocatedList(SysUser user, PageQuery pageQuery) {
+ 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)
@@ -116,7 +127,7 @@
.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());
- Page<SysUser> page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper);
+ Page<SysUserVo> page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper);
return TableDataInfo.build(page);
}
@@ -127,7 +138,7 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
@Override
- public SysUser selectUserByUserName(String userName) {
+ public SysUserVo selectUserByUserName(String userName) {
return baseMapper.selectUserByUserName(userName);
}
@@ -138,7 +149,7 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
@Override
- public SysUser selectUserByPhonenumber(String phonenumber) {
+ public SysUserVo selectUserByPhonenumber(String phonenumber) {
return baseMapper.selectUserByPhonenumber(phonenumber);
}
@@ -149,7 +160,7 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
@Override
- public SysUser selectUserById(Long userId) {
+ public SysUserVo selectUserById(Long userId) {
return baseMapper.selectUserById(userId);
}
@@ -161,11 +172,11 @@
*/
@Override
public String selectUserRoleGroup(String userName) {
- List<SysRole> list = roleMapper.selectRolesByUserName(userName);
+ List<SysRoleVo> list = roleMapper.selectRolesByUserName(userName);
if (CollUtil.isEmpty(list)) {
return StringUtils.EMPTY;
}
- return StreamUtils.join(list, SysRole::getRoleName);
+ return StreamUtils.join(list, SysRoleVo::getRoleName);
}
/**
@@ -176,11 +187,11 @@
*/
@Override
public String selectUserPostGroup(String userName) {
- List<SysPost> list = postMapper.selectPostsByUserName(userName);
+ List<SysPostVo> list = postMapper.selectPostsByUserName(userName);
if (CollUtil.isEmpty(list)) {
return StringUtils.EMPTY;
}
- return StreamUtils.join(list, SysPost::getPostName);
+ return StreamUtils.join(list, SysPostVo::getPostName);
}
/**
@@ -190,14 +201,11 @@
* @return 缁撴灉
*/
@Override
- public String checkUserNameUnique(SysUser user) {
+ 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()));
- if (exist) {
- return UserConstants.NOT_UNIQUE;
- }
- return UserConstants.UNIQUE;
+ return !exist;
}
/**
@@ -206,14 +214,11 @@
* @param user 鐢ㄦ埛淇℃伅
*/
@Override
- public String checkPhoneUnique(SysUser user) {
+ 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()));
- if (exist) {
- return UserConstants.NOT_UNIQUE;
- }
- return UserConstants.UNIQUE;
+ return !exist;
}
/**
@@ -222,24 +227,21 @@
* @param user 鐢ㄦ埛淇℃伅
*/
@Override
- public String checkEmailUnique(SysUser user) {
+ 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()));
- if (exist) {
- return UserConstants.NOT_UNIQUE;
- }
- return UserConstants.UNIQUE;
+ return !exist;
}
/**
* 鏍¢獙鐢ㄦ埛鏄惁鍏佽鎿嶄綔
*
- * @param user 鐢ㄦ埛淇℃伅
+ * @param userId 鐢ㄦ埛ID
*/
@Override
- public void checkUserAllowed(SysUser user) {
- if (ObjectUtil.isNotNull(user.getUserId()) && user.isAdmin()) {
+ public void checkUserAllowed(Long userId) {
+ if (ObjectUtil.isNotNull(userId) && LoginHelper.isSuperAdmin(userId)) {
throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛");
}
}
@@ -251,13 +253,14 @@
*/
@Override
public void checkUserDataScope(Long userId) {
- if (!LoginHelper.isAdmin()) {
- SysUser user = new SysUser();
- user.setUserId(userId);
- List<SysUser> users = this.selectUserList(user);
- if (CollUtil.isEmpty(users)) {
- throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
- }
+ if (ObjectUtil.isNull(userId)) {
+ return;
+ }
+ if (LoginHelper.isSuperAdmin()) {
+ return;
+ }
+ if (ObjectUtil.isNull(baseMapper.selectUserById(userId))) {
+ throw new ServiceException("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
}
}
@@ -269,13 +272,15 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public int insertUser(SysUser user) {
+ public int insertUser(SysUserBo user) {
+ SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
// 鏂板鐢ㄦ埛淇℃伅
- int rows = baseMapper.insert(user);
+ int rows = baseMapper.insert(sysUser);
+ user.setUserId(sysUser.getUserId());
// 鏂板鐢ㄦ埛宀椾綅鍏宠仈
- insertUserPost(user);
+ insertUserPost(user, false);
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
- insertUserRole(user);
+ insertUserRole(user, false);
return rows;
}
@@ -286,10 +291,12 @@
* @return 缁撴灉
*/
@Override
- public boolean registerUser(SysUser user) {
- user.setCreateBy(user.getUserName());
- user.setUpdateBy(user.getUserName());
- return baseMapper.insert(user) > 0;
+ public boolean registerUser(SysUserBo user, String tenantId) {
+ user.setCreateBy(user.getUserId());
+ user.setUpdateBy(user.getUserId());
+ SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
+ sysUser.setTenantId(tenantId);
+ return baseMapper.insert(sysUser) > 0;
}
/**
@@ -300,17 +307,18 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public int updateUser(SysUser user) {
- Long userId = user.getUserId();
- // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
- userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
+ public int updateUser(SysUserBo user) {
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
- insertUserRole(user);
- // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
- userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId));
+ insertUserRole(user, true);
// 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
- insertUserPost(user);
- return baseMapper.updateById(user);
+ insertUserPost(user, true);
+ SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
+ // 闃叉閿欒鏇存柊鍚庡鑷寸殑鏁版嵁璇垹闄�
+ int flag = baseMapper.updateById(sysUser);
+ if (flag < 1) {
+ throw new ServiceException("淇敼鐢ㄦ埛" + user.getUserName() + "淇℃伅澶辫触");
+ }
+ return flag;
}
/**
@@ -324,18 +332,22 @@
public void insertUserAuth(Long userId, Long[] roleIds) {
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>()
.eq(SysUserRole::getUserId, userId));
- insertUserRole(userId, roleIds);
+ insertUserRole(userId, roleIds, false);
}
/**
* 淇敼鐢ㄦ埛鐘舵��
*
- * @param user 鐢ㄦ埛淇℃伅
+ * @param userId 鐢ㄦ埛ID
+ * @param status 甯愬彿鐘舵��
* @return 缁撴灉
*/
@Override
- public int updateUserStatus(SysUser user) {
- return baseMapper.updateById(user);
+ public int updateUserStatus(Long userId, String status) {
+ return baseMapper.update(null,
+ new LambdaUpdateWrapper<SysUser>()
+ .set(SysUser::getStatus, status)
+ .eq(SysUser::getUserId, userId));
}
/**
@@ -345,68 +357,69 @@
* @return 缁撴灉
*/
@Override
- public int updateUserProfile(SysUser user) {
- return baseMapper.updateById(user);
+ 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()));
}
/**
* 淇敼鐢ㄦ埛澶村儚
*
- * @param userName 鐢ㄦ埛鍚�
- * @param avatar 澶村儚鍦板潃
+ * @param userId 鐢ㄦ埛ID
+ * @param avatar 澶村儚鍦板潃
* @return 缁撴灉
*/
@Override
- public boolean updateUserAvatar(String userName, String avatar) {
+ public boolean updateUserAvatar(Long userId, Long avatar) {
return baseMapper.update(null,
new LambdaUpdateWrapper<SysUser>()
.set(SysUser::getAvatar, avatar)
- .eq(SysUser::getUserName, userName)) > 0;
+ .eq(SysUser::getUserId, userId)) > 0;
}
/**
* 閲嶇疆鐢ㄦ埛瀵嗙爜
*
- * @param user 鐢ㄦ埛淇℃伅
- * @return 缁撴灉
- */
- @Override
- public int resetPwd(SysUser user) {
- return baseMapper.updateById(user);
- }
-
- /**
- * 閲嶇疆鐢ㄦ埛瀵嗙爜
- *
- * @param userName 鐢ㄦ埛鍚�
+ * @param userId 鐢ㄦ埛ID
* @param password 瀵嗙爜
* @return 缁撴灉
*/
@Override
- public int resetUserPwd(String userName, String password) {
+ public int resetUserPwd(Long userId, String password) {
return baseMapper.update(null,
new LambdaUpdateWrapper<SysUser>()
.set(SysUser::getPassword, password)
- .eq(SysUser::getUserName, userName));
+ .eq(SysUser::getUserId, userId));
}
/**
* 鏂板鐢ㄦ埛瑙掕壊淇℃伅
*
- * @param user 鐢ㄦ埛瀵硅薄
+ * @param user 鐢ㄦ埛瀵硅薄
+ * @param clear 娓呴櫎宸插瓨鍦ㄧ殑鍏宠仈鏁版嵁
*/
- public void insertUserRole(SysUser user) {
- this.insertUserRole(user.getUserId(), user.getRoleIds());
+ private void insertUserRole(SysUserBo user, boolean clear) {
+ this.insertUserRole(user.getUserId(), user.getRoleIds(), clear);
}
/**
* 鏂板鐢ㄦ埛宀椾綅淇℃伅
*
- * @param user 鐢ㄦ埛瀵硅薄
+ * @param user 鐢ㄦ埛瀵硅薄
+ * @param clear 娓呴櫎宸插瓨鍦ㄧ殑鍏宠仈鏁版嵁
*/
- public void insertUserPost(SysUser user) {
+ private void insertUserPost(SysUserBo user, boolean clear) {
Long[] posts = user.getPostIds();
if (ArrayUtil.isNotEmpty(posts)) {
+ if (clear) {
+ // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
+ userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, user.getUserId()));
+ }
// 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
List<SysUserPost> list = StreamUtils.toList(List.of(posts), postId -> {
SysUserPost up = new SysUserPost();
@@ -423,11 +436,29 @@
*
* @param userId 鐢ㄦ埛ID
* @param roleIds 瑙掕壊缁�
+ * @param clear 娓呴櫎宸插瓨鍦ㄧ殑鍏宠仈鏁版嵁
*/
- public void insertUserRole(Long userId, Long[] roleIds) {
+ 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);
+ if (!LoginHelper.isSuperAdmin(userId)) {
+ roleList.remove(UserConstants.SUPER_ADMIN_ID);
+ }
+ List<Long> canDoRoleList = StreamUtils.filter(List.of(roleIds), roleList::contains);
+ if (CollUtil.isEmpty(canDoRoleList)) {
+ throw new ServiceException("娌℃湁鏉冮檺璁块棶瑙掕壊鐨勬暟鎹�");
+ }
+ if (clear) {
+ // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
+ userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
+ }
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
- List<SysUserRole> list = StreamUtils.toList(List.of(roleIds), roleId -> {
+ List<SysUserRole> list = StreamUtils.toList(canDoRoleList, roleId -> {
SysUserRole ur = new SysUserRole();
ur.setUserId(userId);
ur.setRoleId(roleId);
@@ -450,7 +481,12 @@
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
// 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId));
- return baseMapper.deleteById(userId);
+ // 闃叉鏇存柊澶辫触瀵艰嚧鐨勬暟鎹垹闄�
+ int flag = baseMapper.deleteById(userId);
+ if (flag < 1) {
+ throw new ServiceException("鍒犻櫎鐢ㄦ埛澶辫触!");
+ }
+ return flag;
}
/**
@@ -463,7 +499,7 @@
@Transactional(rollbackFor = Exception.class)
public int deleteUserByIds(Long[] userIds) {
for (Long userId : userIds) {
- checkUserAllowed(new SysUser(userId));
+ checkUserAllowed(userId);
checkUserDataScope(userId);
}
List<Long> ids = List.of(userIds);
@@ -471,7 +507,19 @@
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids));
// 鍒犻櫎鐢ㄦ埛涓庡矖浣嶈〃
userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, ids));
- return baseMapper.deleteBatchIds(ids);
+ // 闃叉鏇存柊澶辫触瀵艰嚧鐨勬暟鎹垹闄�
+ int flag = baseMapper.deleteBatchIds(ids);
+ if (flag < 1) {
+ throw new ServiceException("鍒犻櫎鐢ㄦ埛澶辫触!");
+ }
+ return flag;
}
+ @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();
+ }
}
--
Gitblit v1.9.3