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 6fc4f6cf..bbae880d 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 @@ -6,6 +6,7 @@ import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; import com.jero.modules.docking.iam.dto.IamUserAcceptDto; import com.jero.modules.docking.iam.dto.response.IamCommonResponseDto; +import com.jero.modules.docking.iam.dto.response.IamOrgCreateResponse; import com.jero.modules.docking.iam.dto.response.IamSchemaResponse; import com.jero.modules.docking.iam.dto.response.IamUserCreateResponse; import com.jero.modules.docking.iam.exception.IamGlobalException; @@ -151,8 +152,30 @@ public class SyncIamController { } @PostMapping({"/OrgCreateService"}) - public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo iamOrgInfo) { - SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); + 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, "参数传递错误,未收到参数"); + } + + // 对核心数据解密 + 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; } 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 eecd3ebd..d378036a 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 @@ -16,16 +16,15 @@ import com.jero.modules.docking.iam.annotation.IamProperty; import com.jero.modules.docking.iam.dto.IamCommonAcceptDto; import com.jero.modules.docking.iam.dto.IamOrgAcceptDto; import com.jero.modules.docking.iam.dto.IamUserAcceptDto; -import com.jero.modules.docking.iam.dto.response.IamCommonResponseDto; -import com.jero.modules.docking.iam.dto.response.IamSchemaResponse; -import com.jero.modules.docking.iam.dto.response.IamUserCreateResponse; -import com.jero.modules.docking.iam.dto.response.SchemaResponseInner; +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.SysUser; +import com.jero.modules.system.service.ISysDepartService; import com.jero.modules.system.service.ISysUserService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; @@ -57,6 +56,9 @@ public class SyncIamService { @Resource private ISysUserService sysUserService; + @Resource + private ISysDepartService sysDepartService; + /** * 校验IAM调用时的账号密码是否正确 * 校验通过了正常走后续,不通过直接返回 @@ -161,8 +163,8 @@ public class SyncIamService { } sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone()); - sysUser.setCreateBy("IAM"); - sysUser.setUpdateBy("IAM"); + sysUser.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); + sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); if (StrUtil.isNotEmpty(userAcceptDto.getSrmsCreateTime())){ Date createTime = DateUtils.str2Date(userAcceptDto.getSrmsCreateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); sysUser.setCreateTime(createTime); @@ -204,33 +206,13 @@ public class SyncIamService { // 存储到用户表中 this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts); - iamUserCreateResponse.setUid(sysUser.getId()); // TODO sysUser处理完毕得到用户id后,设置 + iamUserCreateResponse.setUid(sysUser.getId()); return iamUserCreateResponse; } /** - * 根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串 - * @param userAcceptDto - * @return - */ - public IamCommonResponseDto userDeleteService(IamUserAcceptDto userAcceptDto){ - if (userAcceptDto == null || StrUtil.isEmpty(userAcceptDto.getBimUid())){ - throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户删除"); - } - - this.sysUserService.deleteUser(userAcceptDto.getBimUid()); - - IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); - iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); - iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); - iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); - - return iamCommonResponseDto; - } - - /** - * 删除用户 + *根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串 * @param userAcceptDto * @return */ @@ -276,7 +258,7 @@ public class SyncIamService { sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone()); } - sysUser.setUpdateBy("IAM"); + sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); if (StrUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){ Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); @@ -379,6 +361,84 @@ public class SyncIamService { return iamCommonResponseDto; } + /** + * 删除用户 + * @param userAcceptDto + * @return + */ + public IamCommonResponseDto userDeleteService(IamUserAcceptDto userAcceptDto){ + if (userAcceptDto == null || StrUtil.isEmpty(userAcceptDto.getBimUid())){ + throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户删除"); + } + + this.sysUserService.deleteUser(userAcceptDto.getBimUid()); + + IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); + iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); + iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + return iamCommonResponseDto; + } + + /** + * 转换Iam传来的组织数据,进行转换后存储 + * @param orgAcceptDto + * @return + */ + public IamOrgCreateResponse orgCreateService(IamOrgAcceptDto orgAcceptDto){ + if (orgAcceptDto == null || StrUtil.isEmpty(orgAcceptDto.getSrmsOrgCode())){ + throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "机构编码为空,无法进行数据存储"); + } + + IamOrgCreateResponse iamOrgCreateResponse = new IamOrgCreateResponse(); + iamOrgCreateResponse.setBimRequestId(orgAcceptDto.getBimRequestId()); + iamOrgCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamOrgCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + // 将iam的数据转换成sysDepart数据存入数据库 + SysDepart sysDepart = new SysDepart(); + sysDepart.setId(orgAcceptDto.getSrmsOrgCode()); + sysDepart.setParentId(orgAcceptDto.getSrmsParentCode()); + sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName()); + sysDepart.setDepartOrder(100); // 接入数据无排序,都设置为100 + + // 1为单位,2为部门,转映射到 本系统内的数据 1公司,2组织机构,映射关系一致。如下代码是为了后续修改方便 + if ("1".equals(orgAcceptDto.getSrmsOrgCategory())){ + sysDepart.setOrgCategory("1"); + } else { + sysDepart.setOrgCategory("2"); + } + + sysDepart.setOrgType(orgAcceptDto.getSrmsType()); + sysDepart.setOrgCode(orgAcceptDto.getSrmsOrgCode()); + sysDepart.setStatus(CommonConstant.STATUS_1); + sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); + sysDepart.setCreateBy(DockingConstant.IAM_SYSTEM_NAME); + if (StrUtil.isNotEmpty(orgAcceptDto.getSrmsCreateTime())){ + Date createTime = DateUtils.str2Date(orgAcceptDto.getSrmsCreateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); + sysDepart.setCreateTime(createTime); + } + + sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME); + if (StrUtil.isNotEmpty(orgAcceptDto.getSrmsUpdateTime())){ + Date updateTime = DateUtils.str2Date(orgAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); + sysDepart.setCreateTime(updateTime); + } + + sysDepart.setCompany(orgAcceptDto.getSrmsCompany()); + sysDepart.setHeadOfDepartment(orgAcceptDto.getSrmsHeadOfDepartment()); + sysDepart.setLeadersInCharge(orgAcceptDto.getSrmsLeadersInCharge()); + sysDepart.setDeputyLeader(orgAcceptDto.getSrmsDeputyLeader()); + + // 存储到组织机构表中 + this.sysDepartService.save(sysDepart); + + iamOrgCreateResponse.setOrgId(sysDepart.getId()); + + return iamOrgCreateResponse; + } + /** * 处理统一响应PO层,并加密业务字段 * @param acceptMessageHeader