From 9c84530593e74c1596f84d42ab1ddc13910954c5 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 26 十二月 2023 00:46:34 +0800 Subject: [PATCH] update 优化 框架整体提高查询性能 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java | 33 +++++++++++++++++++++++++++++---- 1 files changed, 29 insertions(+), 4 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..41319c1 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,15 @@ 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.UserConstants; 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 +25,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; @@ -108,6 +113,10 @@ TenantHelper.clearDynamic(); } SysUserVo user = userService.selectUserById(loginUser.getUserId()); + if (ObjectUtil.isNull(user)) { + return R.fail("娌℃湁鏉冮檺璁块棶鐢ㄦ埛鏁版嵁!"); + } + user.setRoles(roleService.selectRolesByUserId(user.getUserId())); userInfoVo.setUser(user); userInfoVo.setPermissions(loginUser.getMenuPermission()); userInfoVo.setRoles(loginUser.getRolePermission()); @@ -124,13 +133,17 @@ public R<SysUserInfoVo> getInfo(@PathVariable(value = "userId", required = false) Long userId) { userService.checkUserDataScope(userId); SysUserInfoVo userInfoVo = new SysUserInfoVo(); - List<SysRoleVo> roles = roleService.selectRoleAll(); + SysRoleBo roleBo = new SysRoleBo(); + roleBo.setStatus(UserConstants.ROLE_NORMAL); + SysPostBo postBo = new SysPostBo(); + postBo.setStatus(UserConstants.POST_NORMAL); + List<SysRoleVo> roles = roleService.selectRoleList(roleBo); userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin())); - userInfoVo.setPosts(postService.selectPostAll()); + userInfoVo.setPosts(postService.selectPostList(postBo)); if (ObjectUtil.isNotNull(userId)) { SysUserVo sysUser = userService.selectUserById(userId); userInfoVo.setUser(sysUser); - userInfoVo.setRoleIds(StreamUtils.toList(sysUser.getRoles(), SysRoleVo::getRoleId)); + userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId)); userInfoVo.setPostIds(postService.selectPostListByUserId(userId)); } 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)) { @@ -196,6 +211,7 @@ /** * 閲嶇疆瀵嗙爜 */ + @ApiEncrypt @SaCheckPermission("system:user:resetPwd") @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") @@ -226,8 +242,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 +275,12 @@ 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