diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java index 43af8f24..6622f3a2 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/client/TestClient.java @@ -25,7 +25,8 @@ public class TestClient { public static void main(String[] args) throws JsonProcessingException { TestClient testClient = new TestClient(); - testClient.sendUserCreate(); // 创建用户接口测试 +// testClient.sendUserCreate(); // 创建用户接口测试 + testClient.sendUserUpdate(); // 更新用户接口测试 } /** @@ -108,4 +109,34 @@ public class TestClient { System.out.printf("用户创建接口响应:" + response); } + /** + * 用户更新测试 + */ + private void sendUserUpdate() throws JsonProcessingException { + // 封装 IamUserAcceptDto 为用户数据层 + IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto(); + iamUserAcceptDto.setBimUid("1709786346053017601"); // 数据库中取到的ID + iamUserAcceptDto.setSrmsPost("科长"); + iamUserAcceptDto.setSrmsUpdateTime("2023-10-15 10:35:20"); // 测试不发送UpdateTime的情况 + iamUserAcceptDto.setSrmsEntryTime("2020-11-12"); + + iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); + iamUserAcceptDto.setBimRemoteUser("srmsIam"); + iamUserAcceptDto.setBimRemotePwd("srmsIam2023"); + + // 加密数据 + ObjectMapper objectMapper = new ObjectMapper(); + String sendData = objectMapper.writeValueAsString(iamUserAcceptDto); + String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); + + // 封装 AcceptPoSystemPo 为PO层套壳 + AcceptPoSystemPo sendPoDataEntity = handlerPoPackage(encryptData); + String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); + + // 发送数据 + String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserUpdateService"; + String response = HttpUtil.post(url, sendPoDataJson); + System.out.printf("用户创建接口响应:" + response); + } + } 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 565ae926..c43f46f0 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 @@ -169,31 +169,40 @@ public class SyncIamController { @PostMapping({"/OrgCreateService"}) public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo iamOrgInfo) throws JsonProcessingException { - if (iamOrgInfo == null - || iamOrgInfo.getMessageTabels() == null - || iamOrgInfo.getMessageTabels().getHeader() == null - || iamOrgInfo.getMessageTabels().getHeader().getData() == null){ - throw new IamGlobalException(null, "参数传递错误,未收到参数"); + IamOrgAcceptDto orgAcceptDto = null; + try { + if (iamOrgInfo == null + || iamOrgInfo.getMessageTabels() == null + || iamOrgInfo.getMessageTabels().getHeader() == null + || iamOrgInfo.getMessageTabels().getHeader().getData() == null){ + throw new IamGlobalException(null, "参数传递错误,未收到参数"); + } + + // 对核心数据解密 + String bodyParam = iamOrgInfo.getMessageTabels().getHeader().getData(); + String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); + + ObjectMapper objectMapper = new ObjectMapper(); + orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class); + + // 校验身份认证,确保接口正确 必须调用! + this.syncIamService.validateUserAndPwd(orgAcceptDto); + + // 处理业务逻辑,存储组织,返回组织id + IamOrgCreateResponse iamOrgCreateResponse = this.syncIamService.orgCreateService(orgAcceptDto); + + // 处理统一响应PO层,并加密业务字段 + MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader(); + SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamOrgCreateResponse); + return sendPoSystemPo; + } catch (DuplicateKeyException duplicateKeyException) { + log.error("数据库值重复:{}", duplicateKeyException.getMessage()); + if (orgAcceptDto != null) { + throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "数据库值重复,请检查组织编号【" + orgAcceptDto.getSrmsOrgCode() + "】是否异常"); + } else { + throw new IamGlobalException(null, "未知异常,请联系管理员"); + } } - - // 对核心数据解密 - String bodyParam = iamOrgInfo.getMessageTabels().getHeader().getData(); - String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); - - ObjectMapper objectMapper = new ObjectMapper(); - IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class); - - // 校验身份认证,确保接口正确 必须调用! - this.syncIamService.validateUserAndPwd(orgAcceptDto); - - // 处理业务逻辑,存储组织,返回组织id - IamOrgCreateResponse iamOrgCreateResponse = this.syncIamService.orgCreateService(orgAcceptDto); - - // 处理统一响应PO层,并加密业务字段 - MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader(); - SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamOrgCreateResponse); - - return sendPoSystemPo; } @PostMapping({"/OrgUpdateService"}) 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 e30ef7b1..9dba12ad 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 @@ -266,13 +266,10 @@ public class SyncIamService { sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex())); } - if (StrUtil.isNotEmpty(userAcceptDto.getSrmsEmail())){ - sysUser.setEmail(userAcceptDto.getSrmsEmail()); - } - if (StrUtil.isNotEmpty(userAcceptDto.getSrmsPhone())){ - sysUser.setPhone(userAcceptDto.getSrmsPhone()); - } + // 手机号 和 邮箱有加密,需要单独处理 + sysUser.setEmail(userAcceptDto.getSrmsEmail()); + sysUser.setPhone(userAcceptDto.getSrmsPhone()); if (StrUtil.isNotEmpty(userAcceptDto.getSrmsStatus())){ if ("1".equals(userAcceptDto.getSrmsStatus())){