From fbfb53b1691fb5847fb0d8cbc4ba63610cd0980c Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期五, 24 三月 2023 14:52:42 +0800
Subject: [PATCH] !308 遗漏动态租户修改内容 Merge pull request !308 from Yjoioooo/5.X
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 176 +++++++++++++++++++++++++++++++++-------------------------
1 files changed, 100 insertions(+), 76 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 9c82ff6..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
@@ -1,6 +1,5 @@
package com.ruoyi.system.service.impl;
-import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -14,6 +13,7 @@
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;
@@ -201,14 +201,11 @@
* @return 缁撴灉
*/
@Override
- public String checkUserNameUnique(SysUserBo 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;
}
/**
@@ -217,14 +214,11 @@
* @param user 鐢ㄦ埛淇℃伅
*/
@Override
- public String checkPhoneUnique(SysUserBo 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;
}
/**
@@ -233,24 +227,21 @@
* @param user 鐢ㄦ埛淇℃伅
*/
@Override
- public String checkEmailUnique(SysUserBo 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(SysUserBo user) {
- if (ObjectUtil.isNotNull(user.getUserId()) && user.isAdmin()) {
+ public void checkUserAllowed(Long userId) {
+ if (ObjectUtil.isNotNull(userId) && LoginHelper.isSuperAdmin(userId)) {
throw new ServiceException("涓嶅厑璁告搷浣滆秴绾х鐞嗗憳鐢ㄦ埛");
}
}
@@ -262,13 +253,14 @@
*/
@Override
public void checkUserDataScope(Long userId) {
- if (!LoginHelper.isAdmin()) {
- SysUserBo user = new SysUserBo();
- user.setUserId(userId);
- List<SysUserVo> 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("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁锛�");
}
}
@@ -281,13 +273,14 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int insertUser(SysUserBo user) {
- SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class);
+ SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
// 鏂板鐢ㄦ埛淇℃伅
int rows = baseMapper.insert(sysUser);
+ user.setUserId(sysUser.getUserId());
// 鏂板鐢ㄦ埛宀椾綅鍏宠仈
- insertUserPost(user);
+ insertUserPost(user, false);
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
- insertUserRole(user);
+ insertUserRole(user, false);
return rows;
}
@@ -298,10 +291,11 @@
* @return 缁撴灉
*/
@Override
- public boolean registerUser(SysUserBo user) {
+ public boolean registerUser(SysUserBo user, String tenantId) {
user.setCreateBy(user.getUserId());
user.setUpdateBy(user.getUserId());
- SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class);
+ SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
+ sysUser.setTenantId(tenantId);
return baseMapper.insert(sysUser) > 0;
}
@@ -314,17 +308,17 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int updateUser(SysUserBo user) {
- Long userId = user.getUserId();
- // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱�
- userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
// 鏂板鐢ㄦ埛涓庤鑹茬鐞�
- insertUserRole(user);
- // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
- userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId));
+ insertUserRole(user, true);
// 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
- insertUserPost(user);
- SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class);
- return baseMapper.updateById(sysUser);
+ 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;
}
/**
@@ -338,19 +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(SysUserBo user) {
- SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class);
- return baseMapper.updateById(sysUser);
+ public int updateUserStatus(Long userId, String status) {
+ return baseMapper.update(null,
+ new LambdaUpdateWrapper<SysUser>()
+ .set(SysUser::getStatus, status)
+ .eq(SysUser::getUserId, userId));
}
/**
@@ -361,69 +358,68 @@
*/
@Override
public int updateUserProfile(SysUserBo user) {
- SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class);
- return baseMapper.updateById(sysUser);
+ 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(SysUserBo user) {
- SysUser sysUser = BeanUtil.copyProperties(user, SysUser.class);
- return baseMapper.updateById(sysUser);
- }
-
- /**
- * 閲嶇疆鐢ㄦ埛瀵嗙爜
- *
- * @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(SysUserBo 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(SysUserBo 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();
@@ -440,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);
@@ -467,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;
}
/**
@@ -480,7 +499,7 @@
@Transactional(rollbackFor = Exception.class)
public int deleteUserByIds(Long[] userIds) {
for (Long userId : userIds) {
- checkUserAllowed(new SysUserBo(userId));
+ checkUserAllowed(userId);
checkUserDataScope(userId);
}
List<Long> ids = List.of(userIds);
@@ -488,7 +507,12 @@
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")
--
Gitblit v1.9.3