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 1dcc3fa8..1fabc742 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 @@ -14,6 +14,8 @@ import com.jero.modules.docking.iam.po.encrypt.AcceptEncryptPo; import com.jero.modules.docking.iam.po.MessageHeader; import com.jero.modules.docking.iam.po.encrypt.MessageEncryptTabels; import com.jero.modules.docking.iam.po.encrypt.MessageEncryptTabelsHeader; +import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo; +import com.jero.modules.docking.utils.BamboocloudUtils; import com.jero.modules.docking.utils.DockingConstant; import java.util.Date; @@ -29,6 +31,16 @@ public class TestClient { // testClient.sendUserCreate(); // 创建用户接口测试 testClient.sendUserUpdate(); // 更新用户接口测试 testClient.sendOrgCreate(); // 组织创建接口测试 + testClient.sendQueryAllUserIdsService(); // 查询所有用户ID接口测试 + } + + // 对数据解密 + private void decryptData(String encryptData) throws JsonProcessingException { + ObjectMapper objectMapper = new ObjectMapper(); + SendPoEncryptPo sendPoEncryptPo = objectMapper.readValue(encryptData, SendPoEncryptPo.class); + String decrypt = BamboocloudUtils.getPlaintext(sendPoEncryptPo.getReturns().getData(), DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); + + System.out.println("解密后数据:" + decrypt); } /** @@ -190,4 +202,29 @@ public class TestClient { System.out.println("组织创建接口响应:" + response); } + /** + * 获取全部用户id + */ + private void sendQueryAllUserIdsService() throws JsonProcessingException { + String url = "http://localhost:8184/laws-sinotruk/sync/iam/QueryAllUserIdsService"; + + IamCommonAcceptDto iamCommonAcceptDto = new IamCommonAcceptDto(); + iamCommonAcceptDto.setBimRequestId(UUIDUtils.randomUUID20()); + iamCommonAcceptDto.setBimRemoteUser("srmsIam"); + iamCommonAcceptDto.setBimRemotePwd("srmsIam2023"); + + // 加密数据 + ObjectMapper objectMapper = new ObjectMapper(); + String sendData = objectMapper.writeValueAsString(iamCommonAcceptDto); + String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); + + AcceptEncryptPo sendPoDataEntity = handlerPoPackage(encryptData); + String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity); + + String response = HttpUtil.post(url, sendPoDataJson); + System.out.println("查询全部用的id接口响应:" + response); + + this.decryptData(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 f350f20b..0e274d57 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 @@ -392,4 +392,39 @@ public class SyncIamController { ); } + /** + * 查询全部用的id + * @param iamCommon + * @return + * @throws JsonProcessingException + */ + @PostMapping({"/QueryAllUserIdsService"}) + public SendPoEncryptPo QueryAllUserIdsService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException { + if (iamCommon == null + || iamCommon.getMessageEncryptTabels() == null + || iamCommon.getMessageEncryptTabels().getHeader() == null + || iamCommon.getMessageEncryptTabels().getHeader().getData() == null){ + throw new IamGlobalException(null, this.paramNotGetError); + } + + // 对核心数据解密 + String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData(); + String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); + + ObjectMapper objectMapper = new ObjectMapper(); + IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class); + + // 校验身份认证,确保接口正确 必须调用! + this.syncIamService.validateUserAndPwd(commonAcceptDto); + + // 处理业务逻辑,封装字段 + IamUserIdListResponse userIdListResponse = this.syncIamService.getAllUserIds(commonAcceptDto); + + // 处理统一响应PO层,并加密业务字段 + MessageHeader acceptMessageHeader = iamCommon.getMessageHeader(); + SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, userIdListResponse); + + return sendPoEncryptPo; + } + } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserIdListResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserIdListResponse.java new file mode 100644 index 00000000..b8065fa9 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserIdListResponse.java @@ -0,0 +1,18 @@ +package com.jero.modules.docking.iam.dto.response; + +import lombok.Data; + +import java.util.List; + +/** + * 组织机构创建的响应体 + */ +@Data +public class IamUserIdListResponse extends IamCommonResponseDto{ + + /** + * 用户创建后生成的id + */ + private List userIdList; + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java index 3346f4cb..f0166352 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/po/encrypt/SendEncryptReturnsPo.java @@ -2,11 +2,13 @@ package com.jero.modules.docking.iam.po.encrypt; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; +import lombok.NoArgsConstructor; /** * 返回数据的Return层 */ @Data +@NoArgsConstructor public class SendEncryptReturnsPo { @JsonProperty("data") 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 339f3eb2..bab0f0cf 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 @@ -42,6 +42,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * IAM对接业务处理类 @@ -903,4 +904,23 @@ public class SyncIamService { return BpmcResponseDto.success(); } + /** + * 返回全部用户的id + * @return + */ + public IamUserIdListResponse getAllUserIds(IamCommonAcceptDto commonAcceptDto){ + QueryWrapper userQueryWrapper = new QueryWrapper(); + userQueryWrapper.select("id"); + // 获取全部用户的id,得到一个String的list + List userIds = this.sysUserService.list(userQueryWrapper).stream().map(SysUser::getId).collect(Collectors.toList()); + + IamUserIdListResponse iamUserIdListResponse = new IamUserIdListResponse(); + iamUserIdListResponse.setUserIdList(userIds); + iamUserIdListResponse.setBimRequestId(commonAcceptDto.getBimRequestId()); + iamUserIdListResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamUserIdListResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + return iamUserIdListResponse; + } + }