From 5bfcd58a2f2f20aeca342fe83cdb1f8ef466a0b5 Mon Sep 17 00:00:00 2001 From: zer0Black <694429613@qq.com> Date: Mon, 2 Oct 2023 13:35:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B7=BB=E5=8A=A0=E3=80=91=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=94=A8=E6=88=B7=E7=BC=96=E8=BE=91=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/SysUserServiceImpl.java | 39 +++-- .../iam/controller/SyncIamController.java | 37 ++++- .../docking/iam/service/SyncIamService.java | 151 +++++++++++++++++- 3 files changed, 202 insertions(+), 25 deletions(-) diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java index ace74c67..86c42df6 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/SysUserServiceImpl.java @@ -692,29 +692,34 @@ public class SysUserServiceImpl extends ServiceImpl impl this.updateById(user); //step.2 修改角色 //处理用户角色 先删后加 - sysUserRoleMapper.delete(new QueryWrapper().lambda().eq(SysUserRole::getUserId, user.getId())); - if(oConvertUtils.isNotEmpty(roles)) { - String[] arr = roles.split(","); - for (String roleId : arr) { - SysUserRole userRole = new SysUserRole(user.getId(), roleId); - sysUserRoleMapper.insert(userRole); + if (StrUtil.isNotEmpty(roles)){ + sysUserRoleMapper.delete(new QueryWrapper().lambda().eq(SysUserRole::getUserId, user.getId())); + if(oConvertUtils.isNotEmpty(roles)) { + String[] arr = roles.split(","); + for (String roleId : arr) { + SysUserRole userRole = new SysUserRole(user.getId(), roleId); + sysUserRoleMapper.insert(userRole); + } } } - //step.3 修改部门 - String[] arr = {}; - if(oConvertUtils.isNotEmpty(departs)){ - arr = departs.split(","); - } + if (StrUtil.isNotEmpty(departs)){ + //step.3 修改部门 + String[] arr = {}; + if(oConvertUtils.isNotEmpty(departs)){ + arr = departs.split(","); + } - //先删后加 - sysUserDepartMapper.delete(new QueryWrapper().lambda().eq(SysUserDepart::getUserId, user.getId())); - if(oConvertUtils.isNotEmpty(departs)) { - for (String departId : arr) { - SysUserDepart userDepart = new SysUserDepart(user.getId(), departId); - sysUserDepartMapper.insert(userDepart); + //先删后加 + sysUserDepartMapper.delete(new QueryWrapper().lambda().eq(SysUserDepart::getUserId, user.getId())); + if(oConvertUtils.isNotEmpty(departs)) { + for (String departId : arr) { + SysUserDepart userDepart = new SysUserDepart(user.getId(), departId); + sysUserDepartMapper.insert(userDepart); + } } } + //step.4 修改手机号和邮箱 // 更新手机号、邮箱空字符串为 null userMapper.updateNullByEmptyString("email"); 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 46dc4f0b..6ad62e62 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 @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; 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.exception.IamGlobalException; @@ -34,7 +35,7 @@ public class SyncIamController { private SyncIamService syncIamService; @PostMapping({"/SchemaService"}) - public SendPoSystemPo SchemaService(@RequestBody AcceptPoSystemPo iamCommon) throws JsonProcessingException { + public SendPoSystemPo schemaService(@RequestBody AcceptPoSystemPo iamCommon) throws JsonProcessingException { if (iamCommon == null || iamCommon.getMessageTabels() == null || iamCommon.getMessageTabels().getHeader() == null @@ -92,35 +93,57 @@ public class SyncIamController { } @PostMapping({"/UserUpdateService"}) - public SendPoSystemPo UserUpdateService(@RequestBody AcceptPoSystemPo iamUserInfo) { - SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); + public SendPoSystemPo userUpdateService(@RequestBody AcceptPoSystemPo iamUserInfo) throws JsonProcessingException { + if (iamUserInfo == null + || iamUserInfo.getMessageTabels() == null + || iamUserInfo.getMessageTabels().getHeader() == null + || iamUserInfo.getMessageTabels().getHeader().getData() == null){ + throw new IamGlobalException(null, "参数传递错误,未收到参数"); + } + + // 对核心数据解密 + String bodyParam = iamUserInfo.getMessageTabels().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 + IamCommonResponseDto iamCommonResponseDto = this.syncIamService.userUpdateService(userAcceptDto); + + // 处理统一响应PO层,并加密业务字段 + MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); + SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamCommonResponseDto); return sendPoSystemPo; } @PostMapping({"/UserDeleteService"}) - public SendPoSystemPo UserDeleteService(@RequestBody AcceptPoSystemPo iamUserInfo) { + public SendPoSystemPo userDeleteService(@RequestBody AcceptPoSystemPo iamUserInfo) { SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); return sendPoSystemPo; } @PostMapping({"/OrgCreateService"}) - public SendPoSystemPo OrgCreateService(@RequestBody AcceptPoSystemPo iamOrgInfo) { + public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo iamOrgInfo) { SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); return sendPoSystemPo; } @PostMapping({"/OrgUpdateService"}) - public SendPoSystemPo OrgUpdateService(@RequestBody AcceptPoSystemPo iamOrgInfo) { + public SendPoSystemPo orgUpdateService(@RequestBody AcceptPoSystemPo iamOrgInfo) { SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); return sendPoSystemPo; } @PostMapping({"/OrgDeleteService"}) - public SendPoSystemPo OrgDeleteService(@RequestBody AcceptPoSystemPo iamOrgInfo) { + public SendPoSystemPo orgDeleteService(@RequestBody AcceptPoSystemPo iamOrgInfo) { SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); 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 1e70e398..f263e302 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 @@ -209,6 +209,156 @@ public class SyncIamService { return iamUserCreateResponse; } + /** + * 根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串 + * @param userAcceptDto + * @return + */ + public IamCommonResponseDto userUpdateService(IamUserAcceptDto userAcceptDto){ + if (userAcceptDto == null || StrUtil.isEmpty(userAcceptDto.getBimUid())){ + throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户信息更新"); + } + + // 取出对应的SysUser数据,将iam的数据全部抓取进行判空赋值后存入 + SysUser sysUser = this.sysUserService.getById(userAcceptDto.getBimUid()); + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsUsername())){ + sysUser.setUsername(userAcceptDto.getSrmsUsername()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsRealname())){ + sysUser.setRealname(userAcceptDto.getSrmsRealname()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsSex()) && NumberUtil.isInteger(userAcceptDto.getSrmsSex())){ + sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex())); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsEmail())){ + sysUser.setEmail(userAcceptDto.getSrmsEmail()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsPhone())){ + sysUser.setPhone(userAcceptDto.getSrmsPhone()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsStatus())){ + if ("1".equals(userAcceptDto.getSrmsStatus())){ + sysUser.setStatus(CommonConstant.USER_UNFREEZE); + sysUser.setDelFlag(CommonConstant.DEL_FLAG_0); + } else { + sysUser.setStatus(CommonConstant.USER_FREEZE); + sysUser.setDelFlag(CommonConstant.DEL_FLAG_1); + } + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsOfficePhone())){ + sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone()); + } + + sysUser.setUpdateBy("IAM"); + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){ + Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); + sysUser.setCreateTime(updateTime); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsTypeId())){ + sysUser.setTypeId(userAcceptDto.getSrmsTypeId()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsPost())){ + sysUser.setPost(userAcceptDto.getSrmsPost()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsDutyLevelId())){ + sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId()); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsRace())){ + sysUser.setRace(userAcceptDto.getSrmsRace()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsPostSequence())){ + sysUser.setPostSequence(userAcceptDto.getSrmsPostSequence()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsTechnicalPosition())){ + sysUser.setTechnicalPosition(userAcceptDto.getSrmsTechnicalPosition()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsDirectLeadership())){ + sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsPostStatus())){ + sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsIdNumber())){ + sysUser.setIdNumber(userAcceptDto.getSrmsIdNumber()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsEducation())){ + sysUser.setEducation(userAcceptDto.getSrmsEducation()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsDepartmentBeforeTransfer())){ + sysUser.setDepartmentBeforeTransfer(userAcceptDto.getSrmsDepartmentBeforeTransfer()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsLaborDispatchCode())){ + sysUser.setLaborDispatchCode(userAcceptDto.getSrmsLaborDispatchCode()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsLaborDispatchName())){ + sysUser.setLaborDispatchName(userAcceptDto.getSrmsLaborDispatchName()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsProfessionalQualification())){ + sysUser.setProfessionalQualification(userAcceptDto.getSrmsProfessionalQualification()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsProfessionalLevel())){ + sysUser.setProfessionalLevel(userAcceptDto.getSrmsProfessionalLevel()); + } + + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsEntryTime())){ + sysUser.setEntryTime(userAcceptDto.getSrmsEntryTime()); + } + + // 获取组织机构(多个逗号分隔),TODO 有两个和组织关联在字段,用哪个还需要再和IAM沟通 + String companyCode = userAcceptDto.getSrmsCompanyCode(); + String orgCode = userAcceptDto.getSrmsOrgCode(); + + String selectedDeparts = null; + if (StrUtil.isNotEmpty(orgCode)){ + selectedDeparts = orgCode; + } + + // 编辑存储到用户表中,角色是系统自己处理的,更新不会影响角色,所以不传 + this.sysUserService.editUser(sysUser, null, selectedDeparts); + + IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto(); + iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId()); + iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + return iamCommonResponseDto; + } + /** * 处理统一响应PO层,并加密业务字段 * @param acceptMessageHeader @@ -219,7 +369,6 @@ public class SyncIamService { public SendPoSystemPo handlerGloablResponse(MessageHeader acceptMessageHeader, Object object) throws JsonProcessingException { SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); - MessageHeader sendMessageHeader = new MessageHeader(); sendMessageHeader.setInterfaceID(acceptMessageHeader.getInterfaceID()); sendMessageHeader.setUUID(UUIDGenerator.generate());