From 9086d32bee89a0614271002c9b691357e695057a Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 13 一月 2025 18:52:52 +0800
Subject: [PATCH] fix 修复 多角色未拆分问题
---
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java | 61 +++++++++++++++++++++++++-----
1 files changed, 50 insertions(+), 11 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
index eef0a1a..e1e868a 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
@@ -6,12 +6,14 @@
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
-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.encrypt.annotation.ApiEncrypt;
import org.dromara.common.excel.core.ExcelResult;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.log.annotation.Log;
@@ -22,6 +24,8 @@
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.SysDeptBo;
+import org.dromara.system.domain.bo.SysPostBo;
+import org.dromara.system.domain.bo.SysRoleBo;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.*;
import org.dromara.system.listener.SysUserImportListener;
@@ -67,9 +71,8 @@
@SaCheckPermission("system:user:export")
@PostMapping("/export")
public void export(SysUserBo user, HttpServletResponse response) {
- List<SysUserVo> list = userService.selectUserList(user);
- List<SysUserExportVo> listVo = MapstructUtils.convert(list, SysUserExportVo.class);
- ExcelUtil.exportExcel(listVo, "鐢ㄦ埛鏁版嵁", SysUserExportVo.class, response);
+ List<SysUserExportVo> list = userService.selectUserExportList(user);
+ ExcelUtil.exportExcel(list, "鐢ㄦ埛鏁版嵁", SysUserExportVo.class, response);
}
/**
@@ -108,6 +111,9 @@
TenantHelper.clearDynamic();
}
SysUserVo user = userService.selectUserById(loginUser.getUserId());
+ if (ObjectUtil.isNull(user)) {
+ return R.fail("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁!");
+ }
userInfoVo.setUser(user);
userInfoVo.setPermissions(loginUser.getMenuPermission());
userInfoVo.setRoles(loginUser.getRolePermission());
@@ -122,17 +128,24 @@
@SaCheckPermission("system:user:query")
@GetMapping(value = {"/", "/{userId}"})
public R<SysUserInfoVo> getInfo(@PathVariable(value = "userId", required = false) Long userId) {
- userService.checkUserDataScope(userId);
SysUserInfoVo userInfoVo = new SysUserInfoVo();
- List<SysRoleVo> roles = roleService.selectRoleAll();
- userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));
- userInfoVo.setPosts(postService.selectPostAll());
if (ObjectUtil.isNotNull(userId)) {
+ userService.checkUserDataScope(userId);
SysUserVo sysUser = userService.selectUserById(userId);
userInfoVo.setUser(sysUser);
- userInfoVo.setRoleIds(StreamUtils.toList(sysUser.getRoles(), SysRoleVo::getRoleId));
- userInfoVo.setPostIds(postService.selectPostListByUserId(userId));
+ userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId));
+ Long deptId = sysUser.getDeptId();
+ if (ObjectUtil.isNotNull(deptId)) {
+ SysPostBo postBo = new SysPostBo();
+ postBo.setDeptId(deptId);
+ userInfoVo.setPosts(postService.selectPostList(postBo));
+ userInfoVo.setPostIds(postService.selectPostListByUserId(userId));
+ }
}
+ SysRoleBo roleBo = new SysRoleBo();
+ roleBo.setStatus(SystemConstants.NORMAL);
+ List<SysRoleVo> roles = roleService.selectRoleList(roleBo);
+ userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));
return R.ok(userInfoVo);
}
@@ -143,6 +156,7 @@
@Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody SysUserBo user) {
+ deptService.checkDeptDataScope(user.getDeptId());
if (!userService.checkUserNameUnique(user)) {
return R.fail("鏂板鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
@@ -168,6 +182,7 @@
public R<Void> edit(@Validated @RequestBody SysUserBo user) {
userService.checkUserAllowed(user.getUserId());
userService.checkUserDataScope(user.getUserId());
+ deptService.checkDeptDataScope(user.getDeptId());
if (!userService.checkUserNameUnique(user)) {
return R.fail("淇敼鐢ㄦ埛'" + user.getUserName() + "'澶辫触锛岀櫥褰曡处鍙峰凡瀛樺湪");
} else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
@@ -194,8 +209,22 @@
}
/**
+ * 鏍规嵁鐢ㄦ埛ID涓叉壒閲忚幏鍙栫敤鎴峰熀纭�淇℃伅
+ *
+ * @param userIds 鐢ㄦ埛ID涓�
+ * @param deptId 閮ㄩ棬ID
+ */
+ @SaCheckPermission("system:user:query")
+ @GetMapping("/optionselect")
+ public R<List<SysUserVo>> optionselect(@RequestParam(required = false) Long[] userIds,
+ @RequestParam(required = false) Long deptId) {
+ return R.ok(userService.selectUserByIds(ArrayUtil.isEmpty(userIds) ? null : List.of(userIds), deptId));
+ }
+
+ /**
* 閲嶇疆瀵嗙爜
*/
+ @ApiEncrypt
@SaCheckPermission("system:user:resetPwd")
@Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE)
@PutMapping("/resetPwd")
@@ -226,8 +255,9 @@
@SaCheckPermission("system:user:query")
@GetMapping("/authRole/{userId}")
public R<SysUserInfoVo> authRole(@PathVariable Long userId) {
+ userService.checkUserDataScope(userId);
SysUserVo user = userService.selectUserById(userId);
- List<SysRoleVo> roles = roleService.selectRolesByUserId(userId);
+ List<SysRoleVo> roles = roleService.selectRolesAuthByUserId(userId);
SysUserInfoVo userInfoVo = new SysUserInfoVo();
userInfoVo.setUser(user);
userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin()));
@@ -258,4 +288,13 @@
return R.ok(deptService.selectDeptTreeList(dept));
}
+ /**
+ * 鑾峰彇閮ㄩ棬涓嬬殑鎵�鏈夌敤鎴蜂俊鎭�
+ */
+ @SaCheckPermission("system:user:list")
+ @GetMapping("/list/dept/{deptId}")
+ public R<List<SysUserVo>> listByDept(@PathVariable @NotNull Long deptId) {
+ return R.ok(userService.selectUserListByDept(deptId));
+ }
+
}
--
Gitblit v1.9.3