From b3c77a17c612d5a4436852c67b9826385a68e885 Mon Sep 17 00:00:00 2001 From: zer0Black <694429613@qq.com> Date: Sun, 1 Oct 2023 21:27:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=B7=BB=E5=8A=A0=E3=80=91=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=88=9B=E5=BB=BA=E6=8E=A5=E5=8F=A3=E7=9A=84=E6=A0=B8?= =?UTF-8?q?=E5=BF=83=E9=80=BB=E8=BE=91=E5=A4=84=E7=90=86=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jero/common/constant/CommonConstant.java | 7 +- .../system/controller/SysUserController.java | 4 +- .../jero/modules/system/entity/SysUser.java | 2 +- .../iam/controller/SyncIamController.java | 4 +- .../docking/iam/service/SyncIamService.java | 105 +++++++++++++++++- .../docking/utils/DockingConstant.java | 10 ++ 6 files changed, 125 insertions(+), 7 deletions(-) diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java b/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java index 4bbf5599..19048592 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/constant/CommonConstant.java @@ -6,7 +6,12 @@ public class CommonConstant { } - /** + /** + * 用户默认密码 + */ + public static final String DEFAULT_PASSWORD = "srms1q2w3e"; + + /** * 正常状态 */ public static final Integer STATUS_NORMAL = 0; diff --git a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java index 08fdfd16..f4bdd3b2 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java @@ -558,8 +558,8 @@ public class SysUserController { for (int i = 0; i < listSysUsers.size(); i++) { SysUser sysUserExcel = listSysUsers.get(i); if (StringUtils.isBlank(sysUserExcel.getPassword())) { - // 密码默认为 “hzwlsoft.com” - sysUserExcel.setPassword("hzwlsoft.com"); + // 默认密码 + sysUserExcel.setPassword(CommonConstant.DEFAULT_PASSWORD); } // 密码加密加盐 String salt = oConvertUtils.randomGen(8); diff --git a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java index 966943be..39a72a97 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java @@ -76,7 +76,7 @@ public class SysUser implements Serializable { private Date birthday; /** - * 性别(1:男 2:女) + * 性别(1:男 2:女),字典值和IAM相同 */ @Excel(name = "性别", width = 15,dicCode="sex") @Dict(dicCode = "sex") 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 47c14e9b..7b9e3440 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 @@ -84,10 +84,10 @@ public class SyncIamController { // TODO 处理业务逻辑,存储用户,返回用户id IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse(); - SendPoSystemPo sendPoSystemPo = new SendPoSystemPo(); + // 处理统一响应PO层,并加密业务字段 MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader(); - sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamUserCreateResponse); + SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamUserCreateResponse); 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 79624529..1e70e398 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 @@ -1,28 +1,42 @@ package com.jero.modules.docking.iam.service; +import cn.hutool.core.lang.Validator; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.bamboocloud.codec.BamboocloudFacade; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.jero.common.aspect.annotation.Translation; +import com.jero.common.constant.CommonConstant; import com.jero.common.util.DateUtils; +import com.jero.common.util.PasswordUtil; import com.jero.common.util.UUIDGenerator; +import com.jero.common.util.oConvertUtils; 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.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.SysUser; +import com.jero.modules.system.service.ISysUserService; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import javax.print.Doc; import java.lang.reflect.Field; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -40,6 +54,9 @@ public class SyncIamService { @Value("${iam.bimRemotePwd}") private String bimRemotePwd; + @Resource + private ISysUserService sysUserService; + /** * 校验IAM调用时的账号密码是否正确 * 校验通过了正常走后续,不通过直接返回 @@ -106,10 +123,96 @@ public class SyncIamService { } } + /** + * 转换Iam传来的用户数据,进行转换后存储 + * @param userAcceptDto + * @return + */ + public IamUserCreateResponse userCreateService(IamUserAcceptDto userAcceptDto){ + IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse(); + iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId()); + iamUserCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE); + iamUserCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE); + + // 将iam的数据转换成sysUser数据存入数据库 + SysUser sysUser = new SysUser(); + sysUser.setUsername(userAcceptDto.getSrmsUsername()); + sysUser.setRealname(userAcceptDto.getSrmsRealname()); + + sysUser.setPassword(CommonConstant.DEFAULT_PASSWORD); + String salt = oConvertUtils.randomGen(8); + sysUser.setSalt(salt); + String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), sysUser.getPassword(), salt); + sysUser.setPassword(passwordEncode); + + if (NumberUtil.isInteger(userAcceptDto.getSrmsSex())){ + sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex())); + } + + sysUser.setEmail(userAcceptDto.getSrmsEmail()); + sysUser.setPhone(userAcceptDto.getSrmsPhone()); + + 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); + } + + sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone()); + sysUser.setCreateBy("IAM"); + sysUser.setUpdateBy("IAM"); + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsCreateTime())){ + Date createTime = DateUtils.str2Date(userAcceptDto.getSrmsCreateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); + sysUser.setCreateTime(createTime); + } + + if (StrUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){ + Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss")); + sysUser.setCreateTime(updateTime); + } + + sysUser.setActivitiSync(0); + sysUser.setUserIdentity(0); + + sysUser.setTypeId(userAcceptDto.getSrmsTypeId()); + sysUser.setPost(userAcceptDto.getSrmsPost()); + sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId()); + sysUser.setRace(userAcceptDto.getSrmsRace()); + sysUser.setPostSequence(userAcceptDto.getSrmsPostSequence()); + sysUser.setTechnicalPosition(userAcceptDto.getSrmsTechnicalPosition()); + sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership()); + sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus()); + sysUser.setIdNumber(userAcceptDto.getSrmsIdNumber()); + sysUser.setEducation(userAcceptDto.getSrmsEducation()); + sysUser.setDepartmentBeforeTransfer(userAcceptDto.getSrmsDepartmentBeforeTransfer()); + sysUser.setLaborDispatchCode(userAcceptDto.getSrmsLaborDispatchCode()); + sysUser.setLaborDispatchName(userAcceptDto.getSrmsLaborDispatchName()); + sysUser.setProfessionalQualification(userAcceptDto.getSrmsProfessionalQualification()); + sysUser.setProfessionalLevel(userAcceptDto.getSrmsProfessionalLevel()); + sysUser.setEntryTime(userAcceptDto.getSrmsEntryTime()); + + // 获取组织机构(多个逗号分隔),TODO 有两个和组织关联在字段,用哪个还需要再和IAM沟通 + String companyCode = userAcceptDto.getSrmsCompanyCode(); + String orgCode = userAcceptDto.getSrmsOrgCode(); + String selectedDeparts = orgCode; + + // 获取角色(多个逗号分隔),针对大部分角用户默认写死一般用户(TODO 需要根据实际情况再沟通一遍角色怎么自动赋予) + String selectedRoles = "123"; // 一般用户的角色ID + + // 存储到用户表中 + this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts); + + iamUserCreateResponse.setUid(sysUser.getId()); // TODO sysUser处理完毕得到用户id后,设置 + + return iamUserCreateResponse; + } + /** * 处理统一响应PO层,并加密业务字段 * @param acceptMessageHeader - * @param iamSchemaResponse + * @param object * @return * @throws JsonProcessingException */ diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java index c8da8f3c..7f5f7e21 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/utils/DockingConstant.java @@ -25,4 +25,14 @@ public class DockingConstant { */ public static String IAM_ENCRYPT_SECRET = "123456"; + /** + * IAM正确时的返回码 + */ + public static String IAM_SUCCESS_RESULT_CODE = "0"; + + /** + * IAM正确时的返回消息 + */ + public static String IAM_SUCCESS_MESSAGE = "success"; + }