From e34161479294691be6259724fbd039762aa7e64d Mon Sep 17 00:00:00 2001 From: zer0Black <694429613@qq.com> Date: Mon, 2 Oct 2023 23:18:43 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B7=BB=E5=8A=A0=E3=80=91=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E8=A7=92=E8=89=B2=E5=85=B3=E8=81=94=E3=80=81=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9D=83=E9=99=90=E5=85=B3=E8=81=94=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=A4=84=E7=90=86=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iam/controller/SyncIamController.java | 16 ++- .../docking/iam/service/SyncIamService.java | 105 ++++++++++++++++-- 2 files changed, 111 insertions(+), 10 deletions(-) diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java index ed10c47f..01f24c27 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamController.java @@ -2,6 +2,7 @@ package com.jero.modules.docking.iam.controller; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.modules.docking.iam.dto.bpmc.*; import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; @@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.List; /** * IAM同步的控制器,提供用户、组织、菜单和权限的同步 @@ -300,13 +302,23 @@ public class SyncIamController { } if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_USER_ROLE)){ - UserRoleDto userRoleDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), UserRoleDto.class); + List userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); // 根据新增/编辑/删除调用不同的业务处理代码 + if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){ + bpmcResponseDto = this.syncIamService.userRoleCreateService(userRoleDtoList); + } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) { + bpmcResponseDto = this.syncIamService.userRoleDeleteService(userRoleDtoList); + } } if (bpmcAcceptDto.getType().equals(DockingConstant.BPMC_TYPE_ROLE_RESOURCE)){ - RoleResourceDto roleResourceDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), RoleResourceDto.class); + List roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {}); // 根据新增/编辑/删除调用不同的业务处理代码 + if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){ + bpmcResponseDto = this.syncIamService.roleResourceCreateService(roleResourceDtoList); + } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) { + bpmcResponseDto = this.syncIamService.roleResourceDeleteService(roleResourceDtoList); + } } return bpmcResponseDto; diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java index 98220d1a..25961769 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/service/SyncIamService.java @@ -4,6 +4,7 @@ import cn.hutool.core.lang.Validator; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.bamboocloud.codec.BamboocloudFacade; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.common.aspect.annotation.Translation; @@ -18,20 +19,16 @@ import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; import com.jero.modules.docking.iam.dto.IamUserAcceptDto; import com.jero.modules.docking.iam.dto.bpmc.ResourceDto; import com.jero.modules.docking.iam.dto.bpmc.RoleDto; +import com.jero.modules.docking.iam.dto.bpmc.RoleResourceDto; +import com.jero.modules.docking.iam.dto.bpmc.UserRoleDto; import com.jero.modules.docking.iam.dto.response.*; import com.jero.modules.docking.iam.exception.IamGlobalException; import com.jero.modules.docking.iam.po.MessageHeader; import com.jero.modules.docking.iam.po.SendPoSystemPo; import com.jero.modules.docking.iam.po.SendReturnsPo; import com.jero.modules.docking.utils.DockingConstant; -import com.jero.modules.system.entity.SysDepart; -import com.jero.modules.system.entity.SysPermission; -import com.jero.modules.system.entity.SysRole; -import com.jero.modules.system.entity.SysUser; -import com.jero.modules.system.service.ISysDepartService; -import com.jero.modules.system.service.ISysPermissionService; -import com.jero.modules.system.service.ISysRoleService; -import com.jero.modules.system.service.ISysUserService; +import com.jero.modules.system.entity.*; +import com.jero.modules.system.service.*; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.parameters.P; @@ -71,6 +68,12 @@ public class SyncIamService { @Resource private ISysPermissionService sysPermissionService; + @Resource + private ISysUserRoleService sysUserRoleService; + + @Resource + private ISysRolePermissionService sysRolePermissionService; + /** * 校验IAM调用时的账号密码是否正确 * 校验通过了正常走后续,不通过直接返回 @@ -810,4 +813,90 @@ public class SyncIamService { return BpmcResponseDto.success(); } + /** + * 用户角色关联 创建(批量) + */ + public BpmcResponseDto userRoleCreateService(List userRoleDtoList){ + try { + List userRoleList = new ArrayList<>(); + + for (UserRoleDto userRoleDto : userRoleDtoList){ + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userRoleDto.getUserId()); + sysUserRole.setRoleId(userRoleDto.getArId()); + + userRoleList.add(sysUserRole); + } + this.sysUserRoleService.saveBatch(userRoleList); + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + + /** + * 用户角色关联 刪除(批量) + */ + public BpmcResponseDto userRoleDeleteService(List userRoleDtoList){ + try { + for (UserRoleDto userRoleDto : userRoleDtoList){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("user_id", userRoleDto.getUserId()); + queryWrapper.eq("role_id", userRoleDto.getArId()); + + this.sysUserRoleService.remove(queryWrapper); + } + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + + /** + * 角色菜单关联 创建(批量) + */ + public BpmcResponseDto roleResourceCreateService(List roleResourceDtoList){ + try { + List sysRolePermissionList = new ArrayList<>(); + + for (RoleResourceDto roleResourceDto : roleResourceDtoList){ + SysRolePermission sysRolePermission = new SysRolePermission(); + sysRolePermission.setPermissionId(roleResourceDto.getAmId()); + sysRolePermission.setRoleId(roleResourceDto.getArId()); + + sysRolePermissionList.add(sysRolePermission); + } + this.sysRolePermissionService.saveBatch(sysRolePermissionList); + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + + /** + * 用户角色关联 刪除(批量) + */ + public BpmcResponseDto roleResourceDeleteService(List roleResourceDtoList){ + try { + for (RoleResourceDto roleResourceDto : roleResourceDtoList){ + QueryWrapper queryWrapper = new QueryWrapper(); + queryWrapper.eq("permission_id", roleResourceDto.getAmId()); + queryWrapper.eq("role_id", roleResourceDto.getArId()); + + this.sysRolePermissionService.remove(queryWrapper); + } + } catch (Exception e){ + e.printStackTrace(); + return BpmcResponseDto.error(e.getMessage()); + } + + return BpmcResponseDto.success(); + } + }