From bc6ed508b0f58295800afcfeb6eeb2cdfdada86d Mon Sep 17 00:00:00 2001 From: keke <994305335@qq.com> Date: Mon, 14 Jul 2025 23:47:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A1.=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8E=9F=E6=9C=AC=E7=BB=91=E5=AE=9A=E4=BA=86=E5=B2=97=E4=BD=8D?= =?UTF-8?q?,=E8=8B=A5=E6=83=B3=E8=A6=81=E5=8F=96=E6=B6=88=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=9A=84=E5=B2=97=E4=BD=8D,=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E9=80=BB=E8=BE=91=E5=AE=9E=E7=8E=B0=202.?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8E=9F=E6=9C=AC=E7=BB=91=E5=AE=9A=E4=BA=86?= =?UTF-8?q?=E8=A7=92=E8=89=B2,=E8=8B=A5=E6=83=B3=E8=A6=81=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=89=80=E6=9C=89=E7=9A=84=E8=A7=92=E8=89=B2,?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E8=BF=9B=E8=A1=8C=E9=80=BB=E8=BE=91=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SysUserServiceImpl.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysUserServiceImpl.java index d5b89de5..1d3aeebd 100644 --- a/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules-api/ruoyi-system-api/src/main/java/org/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -450,11 +450,14 @@ public class SysUserServiceImpl implements ISysUserService, UserService { */ private void insertUserPost(SysUserBo user, boolean clear) { Long[] posts = user.getPostIds(); + // 修复:用户原本绑定了岗位,若想要取消所有的岗位,没有进行逻辑实现 + // 原因:当用户取消所有岗位的时候, 传入的posts是空的,所以不进行操作 + // 解决:先进行清空,后再进行处理逻辑 + if (clear) { + // 删除用户与岗位关联 + userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); + } if (ArrayUtil.isNotEmpty(posts)) { - if (clear) { - // 删除用户与岗位关联 - userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); - } // 新增用户与岗位管理 List list = StreamUtils.toList(List.of(posts), postId -> { SysUserPost up = new SysUserPost(); @@ -474,6 +477,13 @@ public class SysUserServiceImpl implements ISysUserService, UserService { * @param clear 清除已存在的关联数据 */ private void insertUserRole(Long userId, Long[] roleIds, boolean clear) { + // 修复:用户原本绑定了角色,若想要取消所有的角色,没有进行逻辑实现 + // 原因:当用户取消所有角色的时候, 传入的roleIds是空的,所以不进行操作 + // 解决:先进行清空,后再进行处理逻辑 + if (clear) { + // 删除用户与角色关联 + userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); + } if (ArrayUtil.isNotEmpty(roleIds)) { // 判断是否具有此角色的操作权限 List roles = roleMapper.selectRoleList(new LambdaQueryWrapper<>()); @@ -488,10 +498,6 @@ public class SysUserServiceImpl implements ISysUserService, UserService { if (CollUtil.isEmpty(canDoRoleList)) { throw new ServiceException("没有权限访问角色的数据"); } - if (clear) { - // 删除用户与角色关联 - userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); - } // 新增用户与角色管理 List list = StreamUtils.toList(canDoRoleList, roleId -> { SysUserRole ur = new SysUserRole();