修改对接iam

This commit is contained in:
梁琦涛
2024-08-02 19:51:04 +08:00
parent 713764790f
commit 81e6b86b67
13 changed files with 699 additions and 315 deletions
Binary file not shown.
+8 -1
View File
@@ -34,6 +34,13 @@
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
</dependency>
<dependency>
<groupId>com.banboocloud.codec</groupId>
<artifactId>bamboocloud_Codec</artifactId>
<version>0.0.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/bamboocloud_Codec-0.0.3.jar</systemPath>
</dependency>
</dependencies>
</project>
</project>
@@ -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);
}
}
@@ -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;
}
}
@@ -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<String, Object> reqmap, String type) {
Map<String, Object> verifymap = new TreeMap<String, Object>();
StringBuffer sb = new StringBuffer();
Iterator<String> it = reqmap.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
verifymap.put(key, reqmap.get(key));
}
Iterator<String> 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();
}
}
@@ -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");
@@ -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<RoleResourceDto> roleResourceDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference<List<RoleResourceDto>>() {});
// 根据新增/删除调用不同的业务处理代码
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<UserRoleDto> userRoleDtoList = objectMapper.readValue(bpmcAcceptDto.getEntity(), new TypeReference<List<UserRoleDto>>() {});
// 根据新增/删除调用不同的业务处理代码
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));
}
}
@@ -22,10 +22,13 @@ public class IamCommonAcceptDto {
*/
private String bimRemoteUser ;
/**
* BIM调用三方应用接口的密码,由应用分配给BIM系统
*/
private String bimRemotePwd;
/**
* BIM每次调用生成的签名,应用系统需对签名进行验证
*/
private String signature;
}
@@ -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;
}
@@ -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;
}
@@ -11,6 +11,6 @@ public class IamOrgCreateResponse extends IamCommonResponseDto{
/**
* 用户创建后生成的id
*/
private String orgId;
private String uid;
}
@@ -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<String,Object> reqMap = (Map<String,Object>) 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<SysUser> 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();
@@ -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/