【添加】用户创建接口日志打印,工号重复的异常处理
This commit is contained in:
+111
@@ -0,0 +1,111 @@
|
||||
package com.jero.modules.docking.iam.client;
|
||||
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.bamboocloud.codec.BamboocloudFacade;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.jero.common.util.DateUtils;
|
||||
import com.jero.common.util.UUIDGenerator;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.config.sign.util.HttpUtils;
|
||||
import com.jero.modules.docking.iam.dto.IamUserAcceptDto;
|
||||
import com.jero.modules.docking.iam.po.AcceptPoSystemPo;
|
||||
import com.jero.modules.docking.iam.po.MessageHeader;
|
||||
import com.jero.modules.docking.iam.po.MessageTabels;
|
||||
import com.jero.modules.docking.iam.po.MessageTabelsHeader;
|
||||
import com.jero.modules.docking.utils.DockingConstant;
|
||||
import org.apache.poi.ss.formula.functions.T;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 测试接口是否正确的客户端,mock IAM发送请求
|
||||
*/
|
||||
public class TestClient {
|
||||
|
||||
public static void main(String[] args) throws JsonProcessingException {
|
||||
TestClient testClient = new TestClient();
|
||||
testClient.sendUserCreate(); // 创建用户接口测试
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装统一发送的PO层
|
||||
* @param encryptData
|
||||
* @return
|
||||
*/
|
||||
private AcceptPoSystemPo handlerPoPackage(String encryptData) {
|
||||
MessageHeader messageHeader = new MessageHeader();
|
||||
messageHeader.setInterfaceID("SRMSUSERCREATE");
|
||||
messageHeader.setUUID(UUIDGenerator.generate());
|
||||
messageHeader.setMessageId(UUIDGenerator.generate());
|
||||
messageHeader.setSender(DockingConstant.IAM_SYSTEM_NAME);
|
||||
messageHeader.setReceiver(DockingConstant.SYSTEM_NAME);
|
||||
|
||||
Date curDate = new Date();
|
||||
messageHeader.setSendDate(DateUtils.formatDate(curDate, "YYYYMMDD"));
|
||||
messageHeader.setSendTime(DateUtils.formatDate(curDate, "HHmmss"));
|
||||
|
||||
MessageTabelsHeader messageTabelsHeader = new MessageTabelsHeader();
|
||||
messageTabelsHeader.setData(encryptData);
|
||||
|
||||
MessageTabels messageTabels = new MessageTabels();
|
||||
messageTabels.setHeader(messageTabelsHeader);
|
||||
|
||||
AcceptPoSystemPo acceptPoSystemPo = new AcceptPoSystemPo();
|
||||
acceptPoSystemPo.setMessageHeader(messageHeader);
|
||||
acceptPoSystemPo.setMessageTabels(messageTabels);
|
||||
|
||||
return acceptPoSystemPo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户创建测试
|
||||
*/
|
||||
private void sendUserCreate() throws JsonProcessingException {
|
||||
// 封装 IamUserAcceptDto 为用户数据层
|
||||
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
|
||||
iamUserAcceptDto.setSrmsCompanyCode("123");
|
||||
iamUserAcceptDto.setSrmsOrgCode("123/321");
|
||||
iamUserAcceptDto.setSrmsTypeId("001");
|
||||
iamUserAcceptDto.setSrmsUsername("10001231");
|
||||
iamUserAcceptDto.setSrmsRealname("李兵");
|
||||
iamUserAcceptDto.setSrmsPassword("1qaz@WSX");
|
||||
iamUserAcceptDto.setSrmsSex("1"); // 男
|
||||
iamUserAcceptDto.setSrmsPost("主任");
|
||||
iamUserAcceptDto.setSrmsDutyLevelId("4"); // 主管级,srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsRace("3"); // 工程技术族,srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsPostSequence("3"); // 工程,srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsTechnicalPosition("5"); // 正高级工程师,srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsDirectLeadership("1706939999105900545"); // 直接上级,不清楚应该存什么,暂时存为id(fcc-test)
|
||||
iamUserAcceptDto.setSrmsPostStatus("1"); // 在岗,srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsStatus("1"); // 1在册,0离职
|
||||
iamUserAcceptDto.setSrmsOfficePhone("022-87648762");
|
||||
iamUserAcceptDto.setSrmsPhone("13811112222");
|
||||
iamUserAcceptDto.setSrmsEmail("test@sinotruk.com");
|
||||
iamUserAcceptDto.setSrmsIdNumber("532522199302120034");
|
||||
iamUserAcceptDto.setSrmsEducation("3"); // 专科,srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsDepartmentBeforeTransfer("测试部门"); // srms不解析,直接存
|
||||
iamUserAcceptDto.setSrmsCreateTime("2023-10-15 10:35:20");
|
||||
// iamUserAcceptDto.setSrmsUpdateTime("2023-10-15 10:35:20"); // 测试不发送UpdateTime的情况
|
||||
iamUserAcceptDto.setSrmsEntryTime("2020-11-11");
|
||||
|
||||
iamUserAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
|
||||
iamUserAcceptDto.setBimRemoteUser("srmsIam");
|
||||
iamUserAcceptDto.setBimRemotePwd("srmsIam2023");
|
||||
|
||||
// 加密数据
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String sendData = objectMapper.writeValueAsString(iamUserAcceptDto);
|
||||
String encryptData = BamboocloudFacade.encrypt(sendData, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
// 封装 AcceptPoSystemPo 为PO层套壳
|
||||
AcceptPoSystemPo sendPoDataEntity = handlerPoPackage(encryptData);
|
||||
String sendPoDataJson = objectMapper.writeValueAsString(sendPoDataEntity);
|
||||
|
||||
// 发送数据
|
||||
String url = "http://localhost:8184/laws-sinotruk/sync/iam/UserCreateService";
|
||||
String response = HttpUtil.post(url, sendPoDataJson);
|
||||
System.out.printf("用户创建接口响应:" + response);
|
||||
}
|
||||
|
||||
}
|
||||
+42
-32
@@ -19,6 +19,7 @@ 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.dao.DuplicateKeyException;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@@ -42,7 +43,7 @@ public class SyncIamController {
|
||||
private SyncIamService syncIamService;
|
||||
|
||||
@PostMapping({"/SchemaService"})
|
||||
public SendPoSystemPo schemaService(@RequestBody AcceptPoSystemPo<IamCommonAcceptDto> iamCommon) throws JsonProcessingException {
|
||||
public SendPoSystemPo schemaService(@RequestBody AcceptPoSystemPo iamCommon) throws JsonProcessingException {
|
||||
if (iamCommon == null
|
||||
|| iamCommon.getMessageTabels() == null
|
||||
|| iamCommon.getMessageTabels().getHeader() == null
|
||||
@@ -71,36 +72,45 @@ public class SyncIamController {
|
||||
}
|
||||
|
||||
@PostMapping({"/UserCreateService"})
|
||||
public SendPoSystemPo userCreateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) throws JsonProcessingException {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageTabels() == null
|
||||
|| iamUserInfo.getMessageTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
public SendPoSystemPo userCreateService(@RequestBody AcceptPoSystemPo iamUserInfo) throws JsonProcessingException {
|
||||
IamUserAcceptDto userAcceptDto = null;
|
||||
try {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageTabels() == null
|
||||
|| iamUserInfo.getMessageTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
IamUserCreateResponse iamUserCreateResponse = this.syncIamService.userCreateService(userAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamUserCreateResponse);
|
||||
return sendPoSystemPo;
|
||||
} catch (DuplicateKeyException duplicateKeyException) {
|
||||
log.error("数据库值重复:{}", duplicateKeyException.getMessage());
|
||||
if (userAcceptDto != null) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "数据库值重复,请检查工号【" + userAcceptDto.getSrmsUsername() + "】是否异常");
|
||||
} else {
|
||||
throw new IamGlobalException(null, "未知异常,请联系管理员");
|
||||
}
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
IamUserCreateResponse iamUserCreateResponse = this.syncIamService.userCreateService(userAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamUserCreateResponse);
|
||||
|
||||
return sendPoSystemPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserUpdateService"})
|
||||
public SendPoSystemPo userUpdateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) throws JsonProcessingException {
|
||||
public SendPoSystemPo userUpdateService(@RequestBody AcceptPoSystemPo iamUserInfo) throws JsonProcessingException {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageTabels() == null
|
||||
|| iamUserInfo.getMessageTabels().getHeader() == null
|
||||
@@ -129,7 +139,7 @@ public class SyncIamController {
|
||||
}
|
||||
|
||||
@PostMapping({"/UserDeleteService"})
|
||||
public SendPoSystemPo userDeleteService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamUserInfo) throws JsonProcessingException {
|
||||
public SendPoSystemPo userDeleteService(@RequestBody AcceptPoSystemPo iamUserInfo) throws JsonProcessingException {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageTabels() == null
|
||||
|| iamUserInfo.getMessageTabels().getHeader() == null
|
||||
@@ -158,7 +168,7 @@ public class SyncIamController {
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgCreateService"})
|
||||
public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo<IamOrgAcceptDto> iamOrgInfo) throws JsonProcessingException {
|
||||
public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo iamOrgInfo) throws JsonProcessingException {
|
||||
if (iamOrgInfo == null
|
||||
|| iamOrgInfo.getMessageTabels() == null
|
||||
|| iamOrgInfo.getMessageTabels().getHeader() == null
|
||||
@@ -187,7 +197,7 @@ public class SyncIamController {
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgUpdateService"})
|
||||
public SendPoSystemPo orgUpdateService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamOrgInfo) throws JsonProcessingException {
|
||||
public SendPoSystemPo orgUpdateService(@RequestBody AcceptPoSystemPo iamOrgInfo) throws JsonProcessingException {
|
||||
if (iamOrgInfo == null
|
||||
|| iamOrgInfo.getMessageTabels() == null
|
||||
|| iamOrgInfo.getMessageTabels().getHeader() == null
|
||||
@@ -216,7 +226,7 @@ public class SyncIamController {
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgDeleteService"})
|
||||
public SendPoSystemPo orgDeleteService(@RequestBody AcceptPoSystemPo<IamUserAcceptDto> iamOrgInfo) throws JsonProcessingException {
|
||||
public SendPoSystemPo orgDeleteService(@RequestBody AcceptPoSystemPo iamOrgInfo) throws JsonProcessingException {
|
||||
if (iamOrgInfo == null
|
||||
|| iamOrgInfo.getMessageTabels() == null
|
||||
|| iamOrgInfo.getMessageTabels().getHeader() == null
|
||||
@@ -249,7 +259,7 @@ public class SyncIamController {
|
||||
* 该接口包含角色创建、菜单创建、角色菜单关联、用户角色关联等4个接口
|
||||
* 通过type字段来区分
|
||||
*/
|
||||
@PostMapping({"/OrgDeleteService"})
|
||||
@PostMapping({"/bpmcCreate"})
|
||||
public BpmcResponseDto bpmcCreate(@RequestBody BpmcAcceptDto bpmcAcceptDto) throws JsonProcessingException {
|
||||
if (StrUtil.isEmpty(bpmcAcceptDto.getType())){
|
||||
return BpmcResponseDto.error("接口类型(type)未传参,请检查");
|
||||
|
||||
+2
@@ -2,11 +2,13 @@ package com.jero.modules.docking.iam.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* IAM的通用Dto,存放IAM接口的非业务通用属性。接口呗请求时会带着该参数
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class IamCommonAcceptDto {
|
||||
|
||||
|
||||
+2
@@ -2,11 +2,13 @@ package com.jero.modules.docking.iam.dto;
|
||||
|
||||
import com.jero.modules.docking.iam.annotation.IamProperty;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* IAM的用户实体,接收IAM传递的用户数据
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
public class IamUserAcceptDto extends IamCommonAcceptDto {
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import lombok.Data;
|
||||
* 和PO系统做数据交互的最外层壳,做数据接收用
|
||||
*/
|
||||
@Data
|
||||
public class AcceptPoSystemPo<T> {
|
||||
public class AcceptPoSystemPo {
|
||||
|
||||
@JsonProperty("MessageHeader")
|
||||
private MessageHeader messageHeader;
|
||||
|
||||
+10
-1
@@ -27,8 +27,11 @@ 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.controller.DuplicateCheckController;
|
||||
import com.jero.modules.system.entity.*;
|
||||
import com.jero.modules.system.model.DuplicateCheckVo;
|
||||
import com.jero.modules.system.service.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
@@ -46,6 +49,7 @@ import java.util.List;
|
||||
/**
|
||||
* IAM对接业务处理类
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@Transactional
|
||||
public class SyncIamService {
|
||||
@@ -74,6 +78,9 @@ public class SyncIamService {
|
||||
@Resource
|
||||
private ISysRolePermissionService sysRolePermissionService;
|
||||
|
||||
@Resource
|
||||
private DuplicateCheckController duplicateCheckController;
|
||||
|
||||
/**
|
||||
* 校验IAM调用时的账号密码是否正确
|
||||
* 校验通过了正常走后续,不通过直接返回
|
||||
@@ -146,6 +153,8 @@ public class SyncIamService {
|
||||
* @return
|
||||
*/
|
||||
public IamUserCreateResponse userCreateService(IamUserAcceptDto userAcceptDto){
|
||||
log.info("用户创建收到的解密后数据:{}", userAcceptDto.toString());
|
||||
|
||||
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
|
||||
iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId());
|
||||
iamUserCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE);
|
||||
@@ -588,7 +597,7 @@ public class SyncIamService {
|
||||
|
||||
Date curDate = new Date();
|
||||
sendMessageHeader.setSendDate(DateUtils.formatDate(curDate, "YYYYMMDD"));
|
||||
sendMessageHeader.setSendTime(DateUtils.formatDate(curDate, "hhmmss"));
|
||||
sendMessageHeader.setSendTime(DateUtils.formatDate(curDate, "HHmmss"));
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
String returnData = objectMapper.writeValueAsString(object);
|
||||
|
||||
Reference in New Issue
Block a user