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 4fc69961..6da8cc1b 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 @@ -462,4 +462,63 @@ public class SyncIamController { return sendPoEncryptPo; } + @PostMapping({"/QueryUserByIdService"}) + public SendPoEncryptPo QueryUserByIdService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { + if (iamUserInfo == null + || iamUserInfo.getMessageEncryptTabels() == null + || iamUserInfo.getMessageEncryptTabels().getHeader() == null + || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ + throw new IamGlobalException(null, "参数传递错误,未收到参数"); + } + + // 对核心数据解密 + String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData(); + String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE); + + ObjectMapper objectMapper = new ObjectMapper(); + IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class); + + // 校验身份认证,确保接口正确 必须调用! + this.syncIamService.validateUserAndPwd(userAcceptDto); + + // 处理业务逻辑,存储用户,返回用户id + IamUserInfoResponse iamUserInfoResponse = this.syncIamService.getUserInfoById(userAcceptDto); + + // 处理统一响应PO层,并加密业务字段 + MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); + SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamUserInfoResponse); + + return sendPoEncryptPo; + } + + @PostMapping({"/QueryOrgByIdService"}) + public SendPoEncryptPo QueryOrgByIdService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException { + if (iamUserInfo == null + || iamUserInfo.getMessageEncryptTabels() == null + || iamUserInfo.getMessageEncryptTabels().getHeader() == null + || iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){ + throw new IamGlobalException(null, "参数传递错误,未收到参数"); + } + + // 对核心数据解密 + String bodyParam = iamUserInfo.getMessageEncryptTabels().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 + IamOrgInfoResponse iamOrgInfoResponse = this.syncIamService.getOrgInfoById(orgAcceptDto); + + // 处理统一响应PO层,并加密业务字段 + MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); + SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamOrgInfoResponse); + + return sendPoEncryptPo; + } + + } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java index be5c641b..ab9cef0e 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgCreateResponse.java @@ -11,6 +11,6 @@ public class IamOrgCreateResponse extends IamCommonResponseDto{ /** * 用户创建后生成的id */ - private String orgId; + private String bimOrgId; } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgInfoResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgInfoResponse.java new file mode 100644 index 00000000..0e631a50 --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamOrgInfoResponse.java @@ -0,0 +1,15 @@ +package com.jero.modules.docking.iam.dto.response; + +import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; +import com.jero.modules.docking.iam.dto.IamUserAcceptDto; +import lombok.Data; + +/** + * 组织机构创建的响应体 + */ +@Data +public class IamOrgInfoResponse extends IamCommonResponseDto{ + + private IamOrgAcceptDto organization; + +} diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java index 21bab740..cebe4693 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserCreateResponse.java @@ -11,6 +11,6 @@ public class IamUserCreateResponse extends IamCommonResponseDto{ /** * 用户创建后生成的id */ - private String uid; + private String bimUid; } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserInfoResponse.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserInfoResponse.java new file mode 100644 index 00000000..7a6a8e2b --- /dev/null +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/response/IamUserInfoResponse.java @@ -0,0 +1,16 @@ +package com.jero.modules.docking.iam.dto.response; + +import com.jero.modules.docking.iam.dto.IamUserAcceptDto; +import lombok.Data; + +import java.util.List; + +/** + * 组织机构创建的响应体 + */ +@Data +public class IamUserInfoResponse extends IamCommonResponseDto{ + + private IamUserAcceptDto account; + +} 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 f761bab2..ff6bd0d9 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 @@ -218,7 +218,7 @@ public class SyncIamService { // 存储到用户表中 this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts); - iamUserCreateResponse.setUid(sysUser.getId()); + iamUserCreateResponse.setBimUid(sysUser.getId()); return iamUserCreateResponse; } @@ -413,7 +413,7 @@ public class SyncIamService { // 存储到组织机构表中 this.sysDepartService.save(sysDepart); - iamOrgCreateResponse.setOrgId(sysDepart.getId()); + iamOrgCreateResponse.setBimOrgId(sysDepart.getId()); return iamOrgCreateResponse; } @@ -942,4 +942,56 @@ public class SyncIamService { return iamOrgIdListResponse; } + /** + * 根据id查询用户信息 + * @return + */ + public IamUserInfoResponse getUserInfoById(IamUserAcceptDto iamUserAcceptDto){ + LoginUser userInfo = sysBaseAPI.getUserById(iamUserAcceptDto.getBimUid()); + + if (userInfo == null){ + throw new IamGlobalException(iamUserAcceptDto.getBimRequestId(), "查询用户不存在"); + } + + IamUserAcceptDto userAcceptDto = new IamUserAcceptDto(); + userAcceptDto.setBimUid(userInfo.getId()); + userAcceptDto.setSrmsUsername(userInfo.getUsername()); + userAcceptDto.setSrmsRealname(userInfo.getRealname()); + userAcceptDto.setSrmsOrgCode(userInfo.getOrgCode()); + + IamUserInfoResponse iamUserInfoResponse = new IamUserInfoResponse(); + iamUserInfoResponse.setAccount(userAcceptDto); + iamUserInfoResponse.setBimRequestId(iamUserAcceptDto.getBimRequestId()); + iamUserInfoResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamUserInfoResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + return iamUserInfoResponse; + } + + /** + * 根据id查询用户信息 + * @return + */ + public IamOrgInfoResponse getOrgInfoById(IamOrgAcceptDto iamOrgAcceptDto){ + SysDepart sysDepart = this.sysDepartService.getById(iamOrgAcceptDto.getBimOrgId()); + + if (sysDepart == null){ + throw new IamGlobalException(iamOrgAcceptDto.getBimRequestId(), "查询组织不存在"); + } + + IamOrgAcceptDto orgAcceptDto = new IamOrgAcceptDto(); + orgAcceptDto.setBimOrgId(sysDepart.getId()); + orgAcceptDto.setSrmsDepartName(sysDepart.getDepartName()); + orgAcceptDto.setSrmsParentCode(sysDepart.getParentId()); + orgAcceptDto.setBimOrgId(sysDepart.getId()); + + IamOrgInfoResponse iamOrgInfoResponse = new IamOrgInfoResponse(); + iamOrgInfoResponse.setOrganization(orgAcceptDto); + iamOrgInfoResponse.setBimRequestId(iamOrgAcceptDto.getBimRequestId()); + iamOrgInfoResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamOrgInfoResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + return iamOrgInfoResponse; + } + }