From 4b699cd34c729f36a6ad4bb9ddcc0520c4bf3e61 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期三, 29 五月 2024 14:39:46 +0800 Subject: [PATCH] 限制用户操作数据权限范围 --- src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java | 96 +++++++++++++++++++++--------------------------- 1 files changed, 42 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java index 8a7c3e2..fcb1784 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java @@ -2,15 +2,19 @@ import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import javax.validation.Validator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.bean.BeanValidators; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.aspectj.lang.annotation.DataScope; import com.ruoyi.project.system.domain.SysPost; @@ -24,6 +28,7 @@ import com.ruoyi.project.system.mapper.SysUserPostMapper; import com.ruoyi.project.system.mapper.SysUserRoleMapper; import com.ruoyi.project.system.service.ISysConfigService; +import com.ruoyi.project.system.service.ISysDeptService; import com.ruoyi.project.system.service.ISysUserService; /** @@ -53,6 +58,12 @@ @Autowired private ISysConfigService configService; + + @Autowired + private ISysDeptService deptService; + + @Autowired + protected Validator validator; /** * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃 @@ -127,16 +138,11 @@ public String selectUserRoleGroup(String userName) { List<SysRole> list = roleMapper.selectRolesByUserName(userName); - StringBuffer idsStr = new StringBuffer(); - for (SysRole role : list) + if (CollectionUtils.isEmpty(list)) { - idsStr.append(role.getRoleName()).append(","); + return StringUtils.EMPTY; } - if (StringUtils.isNotEmpty(idsStr.toString())) - { - return idsStr.substring(0, idsStr.length() - 1); - } - return idsStr.toString(); + return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); } /** @@ -149,29 +155,25 @@ public String selectUserPostGroup(String userName) { List<SysPost> list = postMapper.selectPostsByUserName(userName); - StringBuffer idsStr = new StringBuffer(); - for (SysPost post : list) + if (CollectionUtils.isEmpty(list)) { - idsStr.append(post.getPostName()).append(","); + return StringUtils.EMPTY; } - if (StringUtils.isNotEmpty(idsStr.toString())) - { - return idsStr.substring(0, idsStr.length() - 1); - } - return idsStr.toString(); + return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); } /** * 鏍¢獙鐢ㄦ埛鍚嶇О鏄惁鍞竴 * - * @param userName 鐢ㄦ埛鍚嶇О + * @param user 鐢ㄦ埛淇℃伅 * @return 缁撴灉 */ @Override - public String checkUserNameUnique(String userName) + public boolean checkUserNameUnique(SysUser user) { - int count = userMapper.checkUserNameUnique(userName); - if (count > 0) + Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); + SysUser info = userMapper.checkUserNameUnique(user.getUserName()); + if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { return UserConstants.NOT_UNIQUE; } @@ -185,7 +187,7 @@ * @return */ @Override - public String checkPhoneUnique(SysUser user) + public boolean checkPhoneUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); @@ -203,7 +205,7 @@ * @return */ @Override - public String checkEmailUnique(SysUser user) + public boolean checkEmailUnique(SysUser user) { Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); SysUser info = userMapper.checkEmailUnique(user.getEmail()); @@ -384,23 +386,7 @@ */ public void insertUserRole(SysUser user) { - Long[] roles = user.getRoleIds(); - if (StringUtils.isNotNull(roles)) - { - // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - List<SysUserRole> list = new ArrayList<SysUserRole>(); - for (Long roleId : roles) - { - SysUserRole ur = new SysUserRole(); - ur.setUserId(user.getUserId()); - ur.setRoleId(roleId); - list.add(ur); - } - if (list.size() > 0) - { - userRoleMapper.batchUserRole(list); - } - } + this.insertUserRole(user.getUserId(), user.getRoleIds()); } /** @@ -411,10 +397,10 @@ public void insertUserPost(SysUser user) { Long[] posts = user.getPostIds(); - if (StringUtils.isNotNull(posts)) + if (StringUtils.isNotEmpty(posts)) { // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞� - List<SysUserPost> list = new ArrayList<SysUserPost>(); + List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length); for (Long postId : posts) { SysUserPost up = new SysUserPost(); @@ -422,10 +408,7 @@ up.setPostId(postId); list.add(up); } - if (list.size() > 0) - { - userPostMapper.batchUserPost(list); - } + userPostMapper.batchUserPost(list); } } @@ -437,10 +420,10 @@ */ public void insertUserRole(Long userId, Long[] roleIds) { - if (StringUtils.isNotNull(roleIds)) + if (StringUtils.isNotEmpty(roleIds)) { // 鏂板鐢ㄦ埛涓庤鑹茬鐞� - List<SysUserRole> list = new ArrayList<SysUserRole>(); + List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length); for (Long roleId : roleIds) { SysUserRole ur = new SysUserRole(); @@ -448,10 +431,7 @@ ur.setRoleId(roleId); list.add(ur); } - if (list.size() > 0) - { - userRoleMapper.batchUserRole(list); - } + userRoleMapper.batchUserRole(list); } } @@ -485,6 +465,7 @@ for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); + checkUserDataScope(userId); } // 鍒犻櫎鐢ㄦ埛涓庤鑹插叧鑱� userRoleMapper.deleteUserRole(userIds); @@ -512,7 +493,6 @@ int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); - String password = configService.selectConfigByKey("sys.user.initPassword"); for (SysUser user : userList) { try @@ -521,16 +501,24 @@ SysUser u = userMapper.selectUserByUserName(user.getUserName()); if (StringUtils.isNull(u)) { + BeanValidators.validateWithException(validator, user); + deptService.checkDeptDataScope(user.getDeptId()); + String password = configService.selectConfigByKey("sys.user.initPassword"); user.setPassword(SecurityUtils.encryptPassword(password)); user.setCreateBy(operName); - this.insertUser(user); + userMapper.insertUser(user); successNum++; successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 瀵煎叆鎴愬姛"); } else if (isUpdateSupport) { + BeanValidators.validateWithException(validator, user); + checkUserAllowed(u); + checkUserDataScope(u.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + user.setUserId(u.getUserId()); user.setUpdateBy(operName); - this.updateUser(user); + userMapper.updateUser(user); successNum++; successMsg.append("<br/>" + successNum + "銆佽处鍙� " + user.getUserName() + " 鏇存柊鎴愬姛"); } -- Gitblit v1.9.3