From 0e12886b869c41af1fdc3a380bf53c8b040bac0c Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Wed, 17 Jan 2024 17:29:41 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.1.0=E3=80=91=E3=80=90role=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E8=BF=87=E7=A8=8B=E4=B8=AD=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E7=9A=84=E7=B1=BB=E5=9E=8B=E5=92=8C=E5=85=AC?= =?UTF-8?q?=E5=8F=B8id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/sys/api/pojo/role/SysRoleDTO.java | 6 +++ .../service/impl/SysUserRoleServiceImpl.java | 43 +++++++++++++++---- .../role/service/impl/SysRoleServiceImpl.java | 2 +- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/role/SysRoleDTO.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/role/SysRoleDTO.java index 87b504e62..222f63728 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/role/SysRoleDTO.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/pojo/role/SysRoleDTO.java @@ -60,4 +60,10 @@ public class SysRoleDTO { @ChineseDescription("角色类型:10-系统角色,20-公司角色") private Integer roleType; + /** + * 角色所属公司id,当角色类型为20时传此值 + */ + @ChineseDescription("角色所属公司id,当角色类型为20时传此值") + private Long roleCompanyId; + } diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java index 814c101ea..9c256c093 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserRoleServiceImpl.java @@ -67,15 +67,12 @@ public class SysUserRoleServiceImpl extends ServiceImpl roleIdList = sysUserRoleRequest.getRoleIdList(); - ArrayList newUserRoles = new ArrayList<>(); - for (Long newRoleId : roleIdList) { - SysUserRole sysUserRole = new SysUserRole(); - sysUserRole.setUserId(sysUserRoleRequest.getUserId()); - sysUserRole.setRoleId(newRoleId); - newUserRoles.add(sysUserRole); - } + List sysRoleDTOList = sysRoleServiceApi.getRolesByIds(new ArrayList<>(roleIdList)); + + // 重新绑定用户角色信息 + List newUserRoles = this.createUserRoleBinds(sysUserRoleRequest, roleIdList, sysRoleDTOList); this.saveBatch(newUserRoles); // 发布修改用户绑定角色的事件 @@ -294,4 +291,34 @@ public class SysUserRoleServiceImpl extends ServiceImpl createUserRoleBinds(SysUserRoleRequest sysUserRoleRequest, Set roleIdList, List sysRoleDTOList) { + List newUserRoles = new ArrayList<>(); + for (Long newRoleId : roleIdList) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(sysUserRoleRequest.getUserId()); + sysUserRole.setRoleId(newRoleId); + + // 填充角色的类型和所属公司 + for (SysRoleDTO sysRoleDTO : sysRoleDTOList) { + if (sysRoleDTO.getRoleId().equals(newRoleId)) { + sysUserRole.setRoleType(sysRoleDTO.getRoleType()); + sysUserRole.setRoleCompanyId(sysRoleDTO.getRoleCompanyId()); + break; + } + } + + newUserRoles.add(sysUserRole); + } + return newUserRoles; + } + } \ No newline at end of file diff --git a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java index a06425643..a11f03937 100644 --- a/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java +++ b/kernel-s-system/system-business-permission/src/main/java/cn/stylefeng/roses/kernel/sys/modular/role/service/impl/SysRoleServiceImpl.java @@ -332,7 +332,7 @@ public class SysRoleServiceImpl extends ServiceImpl impl LambdaQueryWrapper sysRoleLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysRoleLambdaQueryWrapper.in(SysRole::getRoleId, roleIds); - sysRoleLambdaQueryWrapper.select(SysRole::getRoleName, SysRole::getRoleId, SysRole::getRoleCode); + sysRoleLambdaQueryWrapper.select(SysRole::getRoleName, SysRole::getRoleId, SysRole::getRoleCode, SysRole::getRoleType, SysRole::getRoleCompanyId); List sysRoleList = this.list(sysRoleLambdaQueryWrapper); if (ObjectUtil.isEmpty(sysRoleList)) {