diff --git a/laws-modules-docking/lib/bamboocloud_Codec-0.0.3.jar b/laws-modules-docking/lib/bamboocloud_Codec-0.0.3.jar
new file mode 100644
index 00000000..3d57fc30
Binary files /dev/null and b/laws-modules-docking/lib/bamboocloud_Codec-0.0.3.jar differ
diff --git a/laws-modules-docking/pom.xml b/laws-modules-docking/pom.xml
index 5b9c98b5..b8c1be62 100644
--- a/laws-modules-docking/pom.xml
+++ b/laws-modules-docking/pom.xml
@@ -34,6 +34,13 @@
org.springframework
spring-webflux
+
+ com.banboocloud.codec
+ bamboocloud_Codec
+ 0.0.3
+ system
+ ${project.basedir}/lib/bamboocloud_Codec-0.0.3.jar
+
-
\ No newline at end of file
+
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/EncryptTest.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/EncryptTest.java
new file mode 100644
index 00000000..e329a3a5
--- /dev/null
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/EncryptTest.java
@@ -0,0 +1,24 @@
+package com.jero.modules.docking.iam.chery;
+
+import com.banboocloud.Codec.Sm3Signature;
+import com.banboocloud.Codec.Sm4Cipher;
+public class EncryptTest {
+ public static void main(String[] args) {
+ //sm3签名
+ String originalStr = "userId=1";
+ Sm3Signature signature = new Sm3Signature();
+ String signatureStr = signature.signature(originalStr);
+
+ //sm4加解密
+ String key = "JLB6L6MJVIT5Z7IL";
+ Sm4Cipher sm4Cipher = new Sm4Cipher();
+ String source = "{\"userId\":1,\"signature\":\"" + signatureStr + "\"}";
+ String target = sm4Cipher.encrypt(source, key);
+ String sourceNew = sm4Cipher.decrypt(target,key);
+
+ //输出密文
+ System.out.println("target:" + target);
+ //输出明文
+ System.out.println("sourceNew:" + sourceNew);
+ }
+}
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/entity/AttributeEntity.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/entity/AttributeEntity.java
new file mode 100644
index 00000000..a9d24207
--- /dev/null
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/entity/AttributeEntity.java
@@ -0,0 +1,40 @@
+package com.jero.modules.docking.iam.chery.entity;
+
+public class AttributeEntity {
+ private String name;
+ private String type;
+ private boolean isRequired;
+ private boolean isMultivalued;
+
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getType() {
+ return this.type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public boolean isRequired() {
+ return this.isRequired;
+ }
+
+ public void setRequired(boolean isRequired) {
+ this.isRequired = isRequired;
+ }
+
+ public boolean isMultivalued() {
+ return this.isMultivalued;
+ }
+
+ public void setMultivalued(boolean isMultivalued) {
+ this.isMultivalued = isMultivalued;
+ }
+}
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/service/BamboocloudUtils.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/service/BamboocloudUtils.java
new file mode 100644
index 00000000..f7127207
--- /dev/null
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/chery/service/BamboocloudUtils.java
@@ -0,0 +1,87 @@
+package com.jero.modules.docking.iam.chery.service;
+
+import com.banboocloud.Codec.BamboocloudFacade;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.TreeMap;
+
+public abstract class BamboocloudUtils {
+ private static Properties properties = new Properties();
+ private static InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
+
+ static {
+ try {
+ properties.load(in);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static String getProperty(String property) {
+ return properties.getProperty(property);
+ }
+
+ public static void checkUsernamePassword(String username, String password) {
+ System.out.println("username --->" + username + " password --- >" + password + " ----ok");
+ }
+
+ public static String getPlaintext(String ciphertext, String key, String type) {
+ return BamboocloudFacade.decrypt(ciphertext, key, type);
+ }
+
+ public static Boolean verify(Map reqmap, String type) {
+ Map verifymap = new TreeMap();
+ StringBuffer sb = new StringBuffer();
+ Iterator it = reqmap.keySet().iterator();
+ while (it.hasNext()) {
+ String key = (String) it.next();
+ verifymap.put(key, reqmap.get(key));
+ }
+ Iterator ittree = verifymap.keySet().iterator();
+ while (ittree.hasNext()) {
+ String key = (String) ittree.next();
+ if (!"signature".equals(key)) {
+ sb.append(key).append("=").append(verifymap.get(key)).append("&");
+ }
+ }
+ sb.deleteCharAt(sb.length() - 1);
+ System.out.println(reqmap.get("signature") + " now " + sb.toString());
+ return BamboocloudFacade.verify(reqmap.get("signature").toString(), sb.toString(), type);
+ }
+
+ public static String getRequestBody(HttpServletRequest request) {
+ BufferedReader br = null;
+ StringBuilder sb = new StringBuilder();
+ String str = "";
+ try {
+ br = request.getReader();
+ while ((str = br.readLine()) != null) {
+ sb.append(str);
+ }
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ if (br != null)
+ try {
+ br.close();
+ } catch (IOException eo) {
+ eo.printStackTrace();
+ }
+ } finally {
+ if (br != null) {
+ try {
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return sb.toString();
+ }
+}
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 c6676aa9..ea029e99 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
@@ -115,22 +115,13 @@ public class TestClient {
private void sendUserCreate(int i) throws JsonProcessingException {
// 封装 IamUserAcceptDto 为用户数据层
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
- iamUserAcceptDto.setSrmsCompanyCode("123");
iamUserAcceptDto.setSrmsOrgCode("123/321");
iamUserAcceptDto.setSrmsTypeId("001");
iamUserAcceptDto.setSrmsUsername((108088 + i) +"");
iamUserAcceptDto.setSrmsRealname("测试" + i);
- iamUserAcceptDto.setSrmsPassword("1qaz@WSX");
iamUserAcceptDto.setSrmsSex("1"); // 男
- iamUserAcceptDto.setSrmsPost("主任");
- iamUserAcceptDto.setSrmsDutyLevelId("4"); // 主管级,srms不解析,直接存
- iamUserAcceptDto.setSrmsDirectLeadership("1706939999105900545"); // 直接上级,不清楚应该存什么,暂时存为id(fcc-test)
- iamUserAcceptDto.setSrmsPostStatus("1"); // 在岗,srms不解析,直接存
- iamUserAcceptDto.setSrmsStatus("1"); // 1在册,0离职
- iamUserAcceptDto.setSrmsOfficePhone("022-87648762");
iamUserAcceptDto.setSrmsPhone("13811112232");
iamUserAcceptDto.setSrmsEmail("test@sinotruk.com");
- iamUserAcceptDto.setSrmsCreateTime("2023-10-15 10:35:20");
iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
iamUserAcceptDto.setBimRemoteUser("srmsIam");
@@ -159,8 +150,6 @@ public class TestClient {
// 封装 IamUserAcceptDto 为用户数据层
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
iamUserAcceptDto.setBimUid("1709786346053017601"); // 数据库中取到的ID
- iamUserAcceptDto.setSrmsPost("科长");
- iamUserAcceptDto.setSrmsUpdateTime("2023-10-15 10:35:20"); // 测试不发送UpdateTime的情况
iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
iamUserAcceptDto.setBimRemoteUser("srmsIam");
@@ -191,11 +180,6 @@ public class TestClient {
iamOrgAcceptDto.setSrmsOrgCode("IA00102");
iamOrgAcceptDto.setSrmsDepartName("测试IAM部门");
iamOrgAcceptDto.setSrmsParentCode("");
- iamOrgAcceptDto.setSrmsCompany("测试公司");
- iamOrgAcceptDto.setSrmsStatus("1");
- iamOrgAcceptDto.setSrmsCreateTime("2023-10-12 10:35:20");
- iamOrgAcceptDto.setSrmsType("002");
- iamOrgAcceptDto.setSrmsOrgCategory("2");
iamOrgAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamByCheryController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamByCheryController.java
new file mode 100644
index 00000000..6b7d8c88
--- /dev/null
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/controller/SyncIamByCheryController.java
@@ -0,0 +1,451 @@
+package com.jero.modules.docking.iam.controller;
+
+import cn.hutool.core.text.CharSequenceUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyun.oss.ServiceException;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.jero.common.constant.CacheConstant;
+import com.jero.modules.base.service.BaseCommonService;
+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.bpmc.*;
+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.decrypt.AcceptDecryptPo;
+import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo;
+import com.jero.modules.docking.iam.service.SyncIamService;
+import com.jero.modules.docking.utils.DockingConstant;
+import com.jero.modules.docking.utils.SHA256Util;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+/**
+ * IAM同步的控制器,提供用户、组织、菜单和权限的同步
+ */
+@RestController
+@RequestMapping("/sync/iam/chery")
+@Slf4j
+public class SyncIamByCheryController {
+
+ @Value("${iam.bpmcAppkey}")
+ private String bpmcAppkey;
+
+ @Resource
+ private SyncIamService syncIamService;
+
+
+ @Resource
+ private BaseCommonService baseCommonService;
+
+ @PostMapping({"/SchemaService"})
+ public String schemaService(HttpServletRequest req) {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamCommonAcceptDto commonAcceptDto = JSONObject.parseObject(reqMap, IamCommonAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(commonAcceptDto);
+ // 处理业务逻辑,封装字段
+ IamSchemaResponse iamSchemaResponse = this.syncIamService.getSchemaInfo(commonAcceptDto);
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamSchemaResponse));
+ }
+
+ @PostMapping({"/UserCreateService"})
+ public String userCreateService(HttpServletRequest req) {
+ log.info("进入账号创建");
+ IamUserAcceptDto userAcceptDto;
+ IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(userAcceptDto);
+ iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId());
+ // 处理业务逻辑,存储用户,返回用户id
+ iamUserCreateResponse = this.syncIamService.userCreateService(userAcceptDto);
+ } catch (ServiceException e) {
+ iamUserCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ String message = e.getErrorMessage();
+ iamUserCreateResponse.setMessage(message);
+ log.error(iamUserCreateResponse.getMessage());
+ }catch (Exception e){
+ iamUserCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamUserCreateResponse.setMessage("操作失败" + e.getMessage());
+ log.error(iamUserCreateResponse.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamUserCreateResponse));
+ }
+
+ @PostMapping({"/UserUpdateService"})
+ public String userUpdateService(HttpServletRequest req){
+ IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamUserAcceptDto userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(userAcceptDto);
+ // 处理业务逻辑,存储用户,返回用户id
+ iamUserCreateResponse = this.syncIamService.userUpdateService(userAcceptDto);
+ }catch (IamGlobalException e){
+ iamUserCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ String message = e.getMessage();
+ iamUserCreateResponse.setMessage(message);
+ log.error(iamUserCreateResponse.getMessage());
+ }catch (Exception e){
+ iamUserCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamUserCreateResponse.setMessage("操作失败" + e.getMessage());
+ log.error(iamUserCreateResponse.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamUserCreateResponse));
+ }
+
+ @PostMapping({"/UserDeleteService"})
+ public String userDeleteService(HttpServletRequest req) {
+ IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamUserAcceptDto userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(userAcceptDto);
+ // 处理业务逻辑,存储用户,返回用户id
+ iamCommonResponseDto = this.syncIamService.userDeleteService(userAcceptDto);
+ iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId());
+ }catch (IamGlobalException e){
+ iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ String message = e.getMessage();
+ iamCommonResponseDto.setMessage(message);
+ log.error(iamCommonResponseDto.getMessage());
+ }catch (Exception e){
+ iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamCommonResponseDto.setMessage("操作失败" + e.getMessage());
+ log.error(iamCommonResponseDto.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamCommonResponseDto));
+ }
+
+ /**
+ * 组织创建和更新移除缓存
+ * @param req
+ * @return
+ * @throws JsonProcessingException
+ */
+ @PostMapping({"/OrgCreateService"})
+ @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
+ public String orgCreateService(HttpServletRequest req) {
+ IamOrgAcceptDto orgAcceptDto = null;
+ IamOrgCreateResponse iamOrgCreateResponse = new IamOrgCreateResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(orgAcceptDto);
+ // 处理业务逻辑,存储组织,返回组织id
+ iamOrgCreateResponse = this.syncIamService.orgCreateService(orgAcceptDto);
+ } catch (DuplicateKeyException duplicateKeyException) {
+ log.error("数据库值重复:{}", duplicateKeyException.getMessage());
+ if (orgAcceptDto != null) {
+ iamOrgCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamOrgCreateResponse.setMessage("操作失败" + "数据库值重复,请检查组织编号【" + orgAcceptDto.getSrmsOrgCode() + "】是否异常");
+ } else {
+ iamOrgCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamOrgCreateResponse.setMessage("未知异常,请联系管理员");
+ }
+ }catch (Exception e){
+ iamOrgCreateResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamOrgCreateResponse.setMessage("操作失败" + e.getMessage());
+ log.error(iamOrgCreateResponse.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamOrgCreateResponse));
+ }
+
+ /**
+ * 组织创建和更新移除缓存
+ * @param req
+ * @return
+ * @throws JsonProcessingException
+ */
+ @PostMapping({"/OrgUpdateService"})
+ @CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
+ public String orgUpdateService(HttpServletRequest req) {
+ IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamOrgAcceptDto orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(orgAcceptDto);
+ // 处理业务逻辑,更新组织
+ iamCommonResponseDto = this.syncIamService.orgUpdateService(orgAcceptDto);
+ }catch (Exception e){
+ iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamCommonResponseDto.setMessage("操作失败" + e.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamCommonResponseDto));
+ }
+
+ @PostMapping({"/OrgDeleteService"})
+ public String orgDeleteService(HttpServletRequest req) {
+ IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamOrgAcceptDto orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(orgAcceptDto);
+ // 处理业务逻辑,更新组织
+ iamCommonResponseDto = this.syncIamService.orgDeleteService(orgAcceptDto);
+ }catch (Exception e){
+ iamCommonResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamCommonResponseDto.setMessage("操作失败" + e.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamCommonResponseDto));
+ }
+
+ /**
+ * 对接统一权限服务平台。
+ * 该接口包含角色创建、菜单创建、角色菜单关联、用户角色关联等4个接口
+ * 通过type字段来区分
+ */
+ @PostMapping({"/bpmcCreate"})
+ public SendPoEncryptPo bpmcCreate(@RequestBody AcceptDecryptPo acceptDecryptPo) throws JsonProcessingException {
+ if (acceptDecryptPo == null
+ || acceptDecryptPo.getMessageDecryptTabels() == null
+ || acceptDecryptPo.getMessageDecryptTabels().getHeader() == null){
+ throw new IamGlobalException(null, "参数传递错误,未收到参数");
+ }
+
+ log.info("统一权限服务平台请求数据:{}", acceptDecryptPo.toString());
+ ObjectMapper objectMapper = new ObjectMapper();
+ BpmcAcceptDto bpmcAcceptDto = objectMapper.readValue(acceptDecryptPo.getMessageDecryptTabels().getHeader().getData(), BpmcAcceptDto.class);
+
+ MessageHeader messageHeader = acceptDecryptPo.getMessageHeader();
+ BpmcResponseDto bpmcResponseDto = BpmcResponseDto.success();
+ SendPoEncryptPo sendPoEncryptPo = new SendPoEncryptPo();
+
+ if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getType())){
+ bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ bpmcResponseDto.setMessage("接口类型(type)未传参,请检查");
+ log.error(bpmcResponseDto.getMessage());
+ sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto);
+ sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto));
+ return sendPoEncryptPo;
+ }
+
+ if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getEntity())){
+ bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ bpmcResponseDto.setMessage("数据实体(entity)未传参,请检查");
+ log.error(bpmcResponseDto.getMessage());
+ sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto);
+ sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto));
+ return sendPoEncryptPo;
+ }
+
+ if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getAction())){
+ bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ bpmcResponseDto.setMessage("操作方式(action)未传参,请检查");
+ log.error(bpmcResponseDto.getMessage());
+ sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto);
+ sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto));
+ return sendPoEncryptPo;
+ }
+
+ if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getSignature())){
+ bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ bpmcResponseDto.setMessage("签名(signature)未传参,请检查");
+ log.error(bpmcResponseDto.getMessage());
+ sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto);
+ sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto));
+ return sendPoEncryptPo;
+ }
+
+ // 验证签名
+ String validateSign = SHA256Util.getSHA256StrJava(bpmcAcceptDto.getEntity() + bpmcAppkey + bpmcAcceptDto.getTimestamp());
+ if (!bpmcAcceptDto.getSignature().equals(validateSign)){
+ bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ bpmcResponseDto.setMessage("签名校验不通过,请检查");
+ log.error(bpmcResponseDto.getMessage());
+ sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto);
+ sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto));
+ return sendPoEncryptPo;
+ }
+
+ try {
+ switch (bpmcAcceptDto.getType()){
+ // 角色
+ case DockingConstant.BPMC_TYPE_ROLE:
+ bpmcResponseDto = bpmcTypeRole(objectMapper, bpmcAcceptDto, bpmcResponseDto);
+ break;
+
+ // 菜单
+ case DockingConstant.BPMC_TYPE_RESOURCE:
+ bpmcResponseDto = bpmcTypeResource(objectMapper, bpmcAcceptDto, bpmcResponseDto);
+ break;
+
+ // 用户角色关联
+ case DockingConstant.BPMC_TYPE_USER_ROLE:
+ bpmcResponseDto = bpmcTypeUserRole(objectMapper, bpmcAcceptDto, bpmcResponseDto);
+ break;
+
+ // 角色菜单关联
+ case DockingConstant.BPMC_TYPE_ROLE_RESOURCE:
+ bpmcResponseDto = bpmcTypeRoleResource(objectMapper, bpmcAcceptDto, bpmcResponseDto);
+ break;
+
+ default:
+ bpmcResponseDto = BpmcResponseDto.error("接口类型(type)未找到,请检查");
+ break;
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ log.error(e.getMessage());
+ bpmcResponseDto = BpmcResponseDto.error(e.getMessage());
+ }
+ log.info(bpmcResponseDto.getMessage());
+ sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(messageHeader, bpmcResponseDto);
+ sendPoEncryptPo.getReturns().setData(JSON.toJSONString(bpmcResponseDto));
+ return sendPoEncryptPo;
+ }
+
+ private BpmcResponseDto bpmcTypeRoleResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
+ List roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {});
+ // 根据新增/删除调用不同的业务处理代码
+ if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
+ bpmcResponseDto = this.syncIamService.roleResourceCreateService(roleResourceDtoList);
+ } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
+ bpmcResponseDto = this.syncIamService.roleResourceDeleteService(roleResourceDtoList);
+ }
+ return bpmcResponseDto;
+ }
+
+ private BpmcResponseDto bpmcTypeUserRole(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
+ List userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference>() {});
+ // 根据新增/删除调用不同的业务处理代码
+ if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
+ bpmcResponseDto = this.syncIamService.userRoleCreateService(userRoleDtoList);
+ } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
+ bpmcResponseDto = this.syncIamService.userRoleDeleteService(userRoleDtoList);
+ }
+ return bpmcResponseDto;
+ }
+
+ private BpmcResponseDto bpmcTypeResource(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
+ ResourceDto resourceDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), ResourceDto.class);
+ // 根据新增/编辑/删除调用不同的业务处理代码
+ if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
+ bpmcResponseDto = this.syncIamService.resourceCreateService(resourceDto);
+ } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) {
+ bpmcResponseDto = this.syncIamService.resourceUpdateService(resourceDto);
+ } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
+ bpmcResponseDto = this.syncIamService.resourceDeleteService(resourceDto);
+ }
+ return bpmcResponseDto;
+ }
+
+ private BpmcResponseDto bpmcTypeRole(ObjectMapper objectMapper, BpmcAcceptDto bpmcAcceptDto, BpmcResponseDto bpmcResponseDto) throws JsonProcessingException {
+ RoleDto roleDto = objectMapper.readValue(bpmcAcceptDto.getEntity(), RoleDto.class);
+ // 根据新增/编辑/删除调用不同的业务处理代码
+ if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_ADD)){
+ bpmcResponseDto = this.syncIamService.roleCreateService(roleDto);
+ } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_UPDATE)) {
+ bpmcResponseDto = this.syncIamService.roleUpdateService(roleDto);
+ } else if (bpmcAcceptDto.getAction().equals(DockingConstant.BPMC_ACTION_DELETE)) {
+ bpmcResponseDto = this.syncIamService.roleDeleteService(roleDto);
+ }
+ return bpmcResponseDto;
+ }
+
+ /**
+ * 查询全部用户id
+ * @param req
+ * @return
+ * @throws JsonProcessingException
+ */
+ @PostMapping({"/QueryAllUserIdsService"})
+ public String QueryAllUserIdsService(HttpServletRequest req) {
+ IamUserIdListResponse userIdListResponse = new IamUserIdListResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamCommonAcceptDto commonAcceptDto = JSONObject.parseObject(reqMap, IamCommonAcceptDto.class);
+
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(commonAcceptDto);
+
+ // 处理业务逻辑,封装字段
+ userIdListResponse = this.syncIamService.getAllUserIds(commonAcceptDto);
+ }catch (Exception e){
+ userIdListResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ userIdListResponse.setMessage("操作失败" + e.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(userIdListResponse));
+ }
+
+ /**
+ * 查询全部组织id
+ * @param req
+ * @return
+ * @throws JsonProcessingException
+ */
+ @PostMapping({"/QueryAllOrgIdsService"})
+ public String QueryAllOrgIdsService(HttpServletRequest req) {
+ IamOrgIdListResponse orgIdListResponse = new IamOrgIdListResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamCommonAcceptDto commonAcceptDto = JSONObject.parseObject(reqMap, IamCommonAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(commonAcceptDto);
+ // 处理业务逻辑,封装字段
+ orgIdListResponse = this.syncIamService.getAllOrgIds(commonAcceptDto);
+ }catch (Exception e){
+ orgIdListResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ orgIdListResponse.setMessage("操作失败" + e.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(orgIdListResponse));
+ }
+
+ @PostMapping({"/QueryUserByIdService"})
+ public String QueryUserByIdService(HttpServletRequest req) {
+ IamUserInfoResponse iamUserInfoResponse = new IamUserInfoResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamUserAcceptDto userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
+
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(userAcceptDto);
+
+ // 处理业务逻辑,存储用户,返回用户id
+ iamUserInfoResponse = this.syncIamService.getUserInfoById(userAcceptDto);
+ }catch (Exception e){
+ iamUserInfoResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamUserInfoResponse.setMessage("操作失败" + e.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamUserInfoResponse));
+ }
+
+ @PostMapping({"/QueryOrgByIdService"})
+ public String QueryOrgByIdService(HttpServletRequest req) {
+ IamOrgInfoResponse iamOrgInfoResponse = new IamOrgInfoResponse();
+ try {
+ String reqMap = this.syncIamService.getStringObjectMap(req);
+ IamOrgAcceptDto orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
+ // 校验身份认证,确保接口正确 必须调用!
+ this.syncIamService.validateUserAndPwd(orgAcceptDto);
+ // 处理业务逻辑,存储用户,返回用户id
+ iamOrgInfoResponse = this.syncIamService.getOrgInfoById(orgAcceptDto);
+ }catch (Exception e){
+ iamOrgInfoResponse.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
+ iamOrgInfoResponse.setMessage("操作失败" + e.getMessage());
+ }
+ return this.syncIamService.strEncrypt(JSON.toJSONString(iamOrgInfoResponse));
+ }
+}
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java
index a318a0c0..48238d6a 100644
--- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamCommonAcceptDto.java
@@ -22,10 +22,13 @@ public class IamCommonAcceptDto {
*/
private String bimRemoteUser ;
-
/**
* BIM调用三方应用接口的密码,由应用分配给BIM系统
*/
private String bimRemotePwd;
+ /**
+ * BIM每次调用生成的签名,应用系统需对签名进行验证
+ */
+ private String signature;
}
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java
index 233fa565..2ad206a2 100644
--- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamOrgAcceptDto.java
@@ -33,59 +33,4 @@ public class IamOrgAcceptDto extends IamCommonAcceptDto {
*/
@IamProperty(required = true, multivalued = false)
private String srmsParentCode;
-
- /**
- * 所属单位,10位HR机构编号
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsCompany;
-
- /**
- * 机构状态
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsStatus;
-
- /**
- * 机构类型。001内部机构 002 外部机构 003 虚拟机构
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsType;
-
- /**
- * 组织类型。1.单位 2.部门。单位下可以有单位,但是部门下不能有单位
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsOrgCategory;
-
- /**
- * 创建时间
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsCreateTime;
-
- /**
- * 更新时间
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsUpdateTime;
-
- /**
- * 部门负责人
- */
- @IamProperty(required = false, multivalued = false)
- private String srmsHeadOfDepartment;
-
- /**
- * 分管领导
- */
- @IamProperty(required = false, multivalued = false)
- private String srmsLeadersInCharge;
-
- /**
- * 副职领导
- */
- @IamProperty(required = false, multivalued = false)
- private String srmsDeputyLeader;
-
}
diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java
index 33a9c927..2afdfb58 100644
--- a/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java
+++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/iam/dto/IamUserAcceptDto.java
@@ -12,21 +12,11 @@ import lombok.ToString;
public class IamUserAcceptDto extends IamCommonAcceptDto {
- /**
- * 飞书id
- */
- private String id;
/**
* 用户的id,在删除或编辑的接口会传递
*/
private String bimUid;
- /**
- * 单位编码
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsCompanyCode;
-
/**
* 部门编码,用于做人员和组织的关联
*/
@@ -40,10 +30,15 @@ public class IamUserAcceptDto extends IamCommonAcceptDto {
private String srmsTypeId;
/**
- * 工号
+ * 用户账户工号 00063002
*/
@IamProperty(required = true, multivalued = false)
private String srmsUsername;
+ /**
+ * 工号 63002
+ */
+ @IamProperty(required = true, multivalued = false)
+ private String employeeNo;
/**
* 姓名
@@ -51,60 +46,19 @@ public class IamUserAcceptDto extends IamCommonAcceptDto {
@IamProperty(required = true, multivalued = false)
private String srmsRealname;
- /**
- * 密码
- */
- @IamProperty(required = false, multivalued = false)
- private String srmsPassword;
-
/**
* 性别
*/
@IamProperty(required = true, multivalued = false)
private String srmsSex;
- /**
- * 岗位
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsPost;
-
- /**
- * 职务级别
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsDutyLevelId;
-
- /**
- * 直接上级
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsDirectLeadership;
-
- /**
- * 岗位状态
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsPostStatus;
-
- /**
- * 是否在册
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsStatus;
-
- /**
- * 办公电话
- */
- @IamProperty(required = true, multivalued = false)
- private String srmsOfficePhone;
-
/**
* 移动电话
*/
@IamProperty(required = true, multivalued = false)
private String srmsPhone;
+
/**
* 电子邮件
*/
@@ -112,15 +66,20 @@ public class IamUserAcceptDto extends IamCommonAcceptDto {
private String srmsEmail;
/**
- * 创建时间
+ * 生日
*/
@IamProperty(required = true, multivalued = false)
- private String srmsCreateTime;
+ private String birthday;
/**
- * 更新时间
+ * 入职时间
*/
@IamProperty(required = true, multivalued = false)
- private String srmsUpdateTime;
+ private String entryTime;
+ /**
+ * 离职时间
+ */
+ @IamProperty(required = true, multivalued = false)
+ private String resignationTime;
}
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..59983e55 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 uid;
}
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 80f65c6e..da63bc6a 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,13 +1,13 @@
package com.jero.modules.docking.iam.service;
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.DateUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.NumberUtil;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
-import com.bamboocloud.codec.BamboocloudFacade;
+import com.banboocloud.Codec.BamboocloudFacade;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jero.common.constant.CommonConstant;
@@ -28,6 +28,7 @@ import com.jero.modules.docking.iam.exception.IamGlobalException;
import com.jero.modules.docking.iam.po.MessageHeader;
import com.jero.modules.docking.iam.po.encrypt.SendEncryptReturnsPo;
import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo;
+import com.jero.modules.docking.iam.chery.service.BamboocloudUtils;
import com.jero.modules.docking.utils.DockingConstant;
import com.jero.modules.system.entity.*;
import com.jero.modules.system.service.*;
@@ -40,8 +41,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
-import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -85,6 +86,46 @@ public class SyncIamService {
private String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
+ public final String PARAM_NOT_GET_ERROR = "参数传递错误,未收到参数";
+
+ //SM4
+ @Value("${iam.sm4.key}")
+ private String key;
+
+ @Value("${iam.sm4.type}")
+ private String type;
+
+ @Value("${iam.sm4.signType}")
+ private String signType;
+
+ /**
+ * 签名验证,返回参数
+ * @param req
+ * @return
+ */
+ public String getStringObjectMap(HttpServletRequest req) {
+ String bodyparam = BamboocloudUtils.getRequestBody(req);
+ System.out.println("first--param-->" + bodyparam);
+ //报文解密
+ bodyparam = BamboocloudUtils.getPlaintext(bodyparam, key, type);
+ System.out.println("json--param-->" + bodyparam);
+ Map reqMap = (Map) JSON.parse(bodyparam);
+ //验证签名
+ if (!BamboocloudUtils.verify(reqMap, signType)) {
+ throw new IamGlobalException(reqMap.getOrDefault("bimRequestId","").toString(), PARAM_NOT_GET_ERROR);
+ }
+ return JSON.toJSONString(reqMap);
+ }
+
+ /**
+ * 签名验证,返回参数
+ * @param str
+ * @return
+ */
+ public String strEncrypt(String str) {
+ return BamboocloudFacade.encrypt(str, key, type);
+ }
+
/**
* 校验IAM调用时的账号密码是否正确
* 校验通过了正常走后续,不通过直接返回
@@ -179,37 +220,15 @@ public class SyncIamService {
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.setTelephone(userAcceptDto.getSrmsPhone());
sysUser.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsCreateTime())){
- Date createTime = DateUtils.str2Date(userAcceptDto.getSrmsCreateTime(), new SimpleDateFormat(DATE_FORMAT));
- sysUser.setCreateTime(createTime);
- }
-
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){
- Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT));
- sysUser.setCreateTime(updateTime);
- }
-
sysUser.setActivitiSync(0);
sysUser.setUserIdentity(0);
// 设置飞书id, IAM村的id就是飞书id
- sysUser.setFeishuId(userAcceptDto.getId());
+ sysUser.setFeishuId(userAcceptDto.getEmployeeNo());
sysUser.setTypeId(userAcceptDto.getSrmsTypeId());
- sysUser.setPost(userAcceptDto.getSrmsPost());
- sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId());
- sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership());
- sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus());
// 获取组织机构(多个逗号分隔)
String orgCode = userAcceptDto.getSrmsOrgCode();
@@ -229,10 +248,10 @@ public class SyncIamService {
* @param userAcceptDto
* @return
*/
- public IamCommonResponseDto userUpdateService(IamUserAcceptDto userAcceptDto){
+ public IamUserCreateResponse userUpdateService(IamUserAcceptDto userAcceptDto){
log.info("用户更新收到的解密后数据:{}", userAcceptDto.toString());
- if (userAcceptDto == null || CharSequenceUtil.isEmpty(userAcceptDto.getBimUid())){
+ if (CharSequenceUtil.isEmpty(userAcceptDto.getBimUid())){
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户信息更新");
}
@@ -254,54 +273,17 @@ public class SyncIamService {
sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex()));
}
-
// 手机号 和 邮箱有加密,需要单独处理
sysUser.setEmail(userAcceptDto.getSrmsEmail());
sysUser.setPhone(userAcceptDto.getSrmsPhone());
-
- if (CharSequenceUtil.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 (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsOfficePhone())){
- sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone());
- }
-
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
-
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){
- Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT));
- sysUser.setCreateTime(updateTime);
- }
-
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsTypeId())){
sysUser.setTypeId(userAcceptDto.getSrmsTypeId());
}
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsPost())){
- sysUser.setPost(userAcceptDto.getSrmsPost());
- }
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsDutyLevelId())){
- sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId());
- }
-
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsDirectLeadership())){
- sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership());
- }
-
-
- if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsPostStatus())){
- sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus());
- }
// 设置飞书id, IAM村的id就是飞书id
- sysUser.setFeishuId(userAcceptDto.getId());
+ sysUser.setFeishuId(userAcceptDto.getEmployeeNo());
// 获取组织机构(多个逗号分隔)
String orgCode = userAcceptDto.getSrmsOrgCode();
String selectedDeparts = null;
@@ -318,12 +300,12 @@ public class SyncIamService {
// 编辑存储到用户表中,角色是系统自己处理的,更新不会影响角色,所以不传
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;
+ IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
+ iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId());
+ iamUserCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE);
+ iamUserCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE);
+ iamUserCreateResponse.setUid(userAcceptDto.getBimUid());
+ return iamUserCreateResponse;
}
/**
@@ -343,7 +325,11 @@ public class SyncIamService {
log.info("用户删除收到的解密后数据:{}", userAcceptDto.toString());
- this.sysUserService.deleteUser(userAcceptDto.getBimUid());
+ LambdaUpdateWrapper updateSysUser = new LambdaUpdateWrapper<>();
+ updateSysUser.eq(SysUser::getId,userAcceptDto.getBimUid());
+ updateSysUser.set(SysUser::getStatus,"2");
+ updateSysUser.set(SysUser::getUpdateTime,new Date());
+ this.sysUserService.update(updateSysUser);
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId());
@@ -387,46 +373,9 @@ public class SyncIamService {
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());
-
- if ("1".equals(orgAcceptDto.getSrmsStatus())){
- sysDepart.setStatus(CommonConstant.STATUS_1);
- sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
- } else {
- sysDepart.setStatus(CommonConstant.STATUS_0);
- sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_1));
- }
-
- sysDepart.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsCreateTime())){
- Date createTime = DateUtils.str2Date(orgAcceptDto.getSrmsCreateTime(), new SimpleDateFormat(DATE_FORMAT));
- sysDepart.setCreateTime(createTime);
- }
-
- sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsUpdateTime())){
- Date updateTime = DateUtils.str2Date(orgAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT));
- 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;
}
@@ -461,55 +410,6 @@ public class SyncIamService {
sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName());
}
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsOrgCategory())){
- // 1为单位,2为部门,转映射到 本系统内的数据 1公司,2组织机构,映射关系一致。如下代码是为了后续修改方便
- if ("1".equals(orgAcceptDto.getSrmsOrgCategory())){
- sysDepart.setOrgCategory("1");
- } else {
- sysDepart.setOrgCategory("2");
- }
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsType())){
- sysDepart.setOrgType(orgAcceptDto.getSrmsType());
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsOrgCode())){
- sysDepart.setOrgCode(orgAcceptDto.getSrmsOrgCode());
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsStatus())){
- if ("1".equals(orgAcceptDto.getSrmsStatus())){
- sysDepart.setStatus(CommonConstant.STATUS_1);
- sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
- } else {
- sysDepart.setStatus(CommonConstant.STATUS_0);
- sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_1));
- }
- }
-
- sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsUpdateTime())){
- Date updateTime = DateUtils.str2Date(orgAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat(DATE_FORMAT));
- sysDepart.setCreateTime(updateTime);
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsCompany())){
- sysDepart.setCompany(orgAcceptDto.getSrmsCompany());
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsHeadOfDepartment())){
- sysDepart.setHeadOfDepartment(orgAcceptDto.getSrmsHeadOfDepartment());
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsLeadersInCharge())){
- sysDepart.setLeadersInCharge(orgAcceptDto.getSrmsLeadersInCharge());
- }
-
- if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsDeputyLeader())){
- sysDepart.setDeputyLeader(orgAcceptDto.getSrmsDeputyLeader());
- }
-
// 存储到组织机构表中
this.sysDepartService.updateById(sysDepart);
@@ -980,20 +880,9 @@ public class SyncIamService {
if (!Objects.isNull(userInfo.getSex())){
userAcceptDto.setSrmsSex(String.valueOf(userInfo.getSex()));
}
- userAcceptDto.setSrmsEmail(userInfo.getEmail());
- userAcceptDto.setSrmsPhone(userInfo.getPhone());
- userAcceptDto.setSrmsOfficePhone(userInfo.getTelephone());
- if (!Objects.isNull(userInfo.getCreateTime())){
- userAcceptDto.setSrmsCreateTime(new SimpleDateFormat(DATE_FORMAT).format(userInfo.getCreateTime()));
- }
- if (!Objects.isNull(sysUser.getUpdateTime())){
- userAcceptDto.setSrmsUpdateTime(new SimpleDateFormat(DATE_FORMAT).format(sysUser.getUpdateTime()));
- }
+ userAcceptDto.setSrmsEmail(PasswordUtil.decrypt(userInfo.getEmail()));
+ userAcceptDto.setSrmsPhone(PasswordUtil.decrypt(userInfo.getPhone()));
userAcceptDto.setSrmsTypeId(sysUser.getTypeId());
- userAcceptDto.setSrmsPost(sysUser.getPost());
- userAcceptDto.setSrmsDutyLevelId(sysUser.getDutyLevelId());
- userAcceptDto.setSrmsDirectLeadership(sysUser.getDirectLeadership());
- userAcceptDto.setSrmsPostStatus(sysUser.getPostStatus());
IamUserInfoResponse iamUserInfoResponse = new IamUserInfoResponse();
iamUserInfoResponse.setAccount(userAcceptDto);
@@ -1020,15 +909,6 @@ public class SyncIamService {
orgAcceptDto.setSrmsOrgCode(sysDepart.getOrgCode());
orgAcceptDto.setSrmsDepartName(sysDepart.getDepartName());
orgAcceptDto.setSrmsParentCode(sysDepart.getParentId());
- orgAcceptDto.setSrmsCompany(sysDepart.getCompany());
- orgAcceptDto.setSrmsStatus(sysDepart.getStatus());
- orgAcceptDto.setSrmsType(sysDepart.getOrgType());
- orgAcceptDto.setSrmsOrgCategory(sysDepart.getOrgCategory());
- orgAcceptDto.setSrmsCreateTime(DateUtil.format(sysDepart.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN));
- orgAcceptDto.setSrmsUpdateTime(DateUtil.format(sysDepart.getUpdateTime(), DatePattern.NORM_DATETIME_PATTERN));
- orgAcceptDto.setSrmsHeadOfDepartment(sysDepart.getHeadOfDepartment());
- orgAcceptDto.setSrmsLeadersInCharge(sysDepart.getLeadersInCharge());
- orgAcceptDto.setSrmsDeputyLeader(sysDepart.getDeputyLeader());
IamOrgInfoResponse iamOrgInfoResponse = new IamOrgInfoResponse();
diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml
index c71f4a49..3ad2f140 100644
--- a/laws-single-startup/src/main/resources/application-dev.yml
+++ b/laws-single-startup/src/main/resources/application-dev.yml
@@ -376,7 +376,11 @@ iam:
bpmcAppkey: test
# 创建用户默认角色
defaultRoleIds: 817f7f818bb3506e018bb3506ef70000
-
+ # 对接验证参数
+ sm4:
+ key: JLB6L6MJVIT5Z7IL
+ type: SM4
+ signType: SM3
# Hiwork集成
hiwork:
ip: http://10.2.5.218:8088/