From ef5197f03455a0ee823dbadb685bf979c5fa3443 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期四, 01 七月 2021 18:01:22 +0800 Subject: [PATCH] 用户管理新增分配角色功能 --- src/main/java/com/ruoyi/project/system/service/ISysUserService.java | 8 ++++ src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java | 38 +++++++++++++++++++ src/main/java/com/ruoyi/project/system/controller/SysUserController.java | 27 +++++++++++++ src/main/java/com/ruoyi/project/system/service/ISysRoleService.java | 10 ++++ src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java | 25 ++++++++++++ 5 files changed, 107 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/ruoyi/project/system/controller/SysUserController.java b/src/main/java/com/ruoyi/project/system/controller/SysUserController.java index ae66a5d..052a117 100644 --- a/src/main/java/com/ruoyi/project/system/controller/SysUserController.java +++ b/src/main/java/com/ruoyi/project/system/controller/SysUserController.java @@ -202,4 +202,31 @@ user.setUpdateBy(SecurityUtils.getUsername()); return toAjax(userService.updateUserStatus(user)); } + + /** + * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鎺堟潈瑙掕壊 + */ + @PreAuthorize("@ss.hasPermi('system:user:query')") + @GetMapping("/authRole/{userId}") + public AjaxResult authRole(@PathVariable("userId") Long userId) + { + AjaxResult ajax = AjaxResult.success(); + SysUser user = userService.selectUserById(userId); + List<SysRole> roles = roleService.selectRolesByUserId(userId); + ajax.put("user", user); + ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); + return ajax; + } + + /** + * 鐢ㄦ埛鎺堟潈瑙掕壊 + */ + @PreAuthorize("@ss.hasPermi('system:user:edit')") + @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.GRANT) + @PutMapping("/authRole") + public AjaxResult insertAuthRole(Long userId, Long[] roleIds) + { + userService.insertUserAuth(userId, roleIds); + return success(); + } } \ No newline at end of file diff --git a/src/main/java/com/ruoyi/project/system/service/ISysRoleService.java b/src/main/java/com/ruoyi/project/system/service/ISysRoleService.java index fbd5617..7ffac4b 100644 --- a/src/main/java/com/ruoyi/project/system/service/ISysRoleService.java +++ b/src/main/java/com/ruoyi/project/system/service/ISysRoleService.java @@ -20,7 +20,15 @@ public List<SysRole> selectRoleList(SysRole role); /** - * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鍒楄〃 + * + * @param userId 鐢ㄦ埛ID + * @return 瑙掕壊鍒楄〃 + */ + public List<SysRole> selectRolesByUserId(Long userId); + + /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊鏉冮檺 * * @param userId 鐢ㄦ埛ID * @return 鏉冮檺鍒楄〃 diff --git a/src/main/java/com/ruoyi/project/system/service/ISysUserService.java b/src/main/java/com/ruoyi/project/system/service/ISysUserService.java index 3b79a1d..7b3aa3c 100644 --- a/src/main/java/com/ruoyi/project/system/service/ISysUserService.java +++ b/src/main/java/com/ruoyi/project/system/service/ISysUserService.java @@ -96,6 +96,14 @@ * @return 缁撴灉 */ public int updateUser(SysUser user); + + /** + * 鐢ㄦ埛鎺堟潈瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @param roleIds 瑙掕壊缁� + */ + public void insertUserAuth(Long userId, Long[] roleIds); /** * 淇敼鐢ㄦ埛鐘舵�� diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java index 2dea15d..22a8578 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysRoleServiceImpl.java @@ -56,6 +56,31 @@ } /** + * 鏍规嵁鐢ㄦ埛ID鏌ヨ瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @return 瑙掕壊鍒楄〃 + */ + @Override + public List<SysRole> selectRolesByUserId(Long userId) + { + List<SysRole> userRoles = roleMapper.selectRolePermissionByUserId(userId); + List<SysRole> roles = selectRoleAll(); + for (SysRole role : roles) + { + for (SysRole userRole : userRoles) + { + if (role.getRoleId().longValue() == userRole.getRoleId().longValue()) + { + role.setFlag(true); + break; + } + } + } + return roles; + } + + /** * 鏍规嵁鐢ㄦ埛ID鏌ヨ鏉冮檺 * * @param userId 鐢ㄦ埛ID 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 54f9a4f..65114a3 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 @@ -243,6 +243,18 @@ } /** + * 鐢ㄦ埛鎺堟潈瑙掕壊 + * + * @param userId 鐢ㄦ埛ID + * @param roleIds 瑙掕壊缁� + */ + public void insertUserAuth(Long userId, Long[] roleIds) + { + userRoleMapper.deleteUserRoleByUserId(userId); + insertUserRole(userId, roleIds); + } + + /** * 淇敼鐢ㄦ埛鐘舵�� * * @param user 鐢ㄦ埛淇℃伅 @@ -357,6 +369,32 @@ } /** + * 鏂板鐢ㄦ埛瑙掕壊淇℃伅 + * + * @param userId 鐢ㄦ埛ID + * @param roleIds 瑙掕壊缁� + */ + public void insertUserRole(Long userId, Long[] roleIds) + { + if (StringUtils.isNotNull(roleIds)) + { + // 鏂板鐢ㄦ埛涓庤鑹茬鐞� + List<SysUserRole> list = new ArrayList<SysUserRole>(); + for (Long roleId : roleIds) + { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + list.add(ur); + } + if (list.size() > 0) + { + userRoleMapper.batchUserRole(list); + } + } + } + + /** * 閫氳繃鐢ㄦ埛ID鍒犻櫎鐢ㄦ埛 * * @param userId 鐢ㄦ埛ID -- Gitblit v1.9.3