修改iam对接
This commit is contained in:
+3
-1
@@ -2,7 +2,9 @@ package com.jero.modules.docking.iam.controller;
|
||||
|
||||
import com.banboocloud.Codec.Sm3Signature;
|
||||
import com.banboocloud.Codec.Sm4Cipher;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class EncryptTest {
|
||||
public static void main(String[] args) {
|
||||
//sm3签名
|
||||
@@ -17,6 +19,6 @@ public class EncryptTest {
|
||||
String target = sm4Cipher.encrypt(source, key);
|
||||
|
||||
//输出密文
|
||||
System.out.println("target:" + target);
|
||||
log.info("target:" + target);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-18
@@ -8,7 +8,6 @@ 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;
|
||||
@@ -32,7 +31,6 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.sql.SQLIntegrityConstraintViolationException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -49,14 +47,10 @@ public class SyncIamByCheryController {
|
||||
@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);
|
||||
IamCommonAcceptDto commonAcceptDto = JSON.parseObject(reqMap, IamCommonAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
// 处理业务逻辑,封装字段
|
||||
@@ -71,7 +65,7 @@ public class SyncIamByCheryController {
|
||||
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
userAcceptDto = JSON.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId());
|
||||
@@ -95,7 +89,7 @@ public class SyncIamByCheryController {
|
||||
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamUserAcceptDto userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
IamUserAcceptDto userAcceptDto = JSON.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
@@ -123,7 +117,7 @@ public class SyncIamByCheryController {
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamUserAcceptDto userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
IamUserAcceptDto userAcceptDto = JSON.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
@@ -155,7 +149,7 @@ public class SyncIamByCheryController {
|
||||
IamOrgCreateResponse iamOrgCreateResponse = new IamOrgCreateResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
orgAcceptDto = JSON.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
// 处理业务逻辑,存储组织,返回组织id
|
||||
@@ -189,7 +183,7 @@ public class SyncIamByCheryController {
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamOrgAcceptDto orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
IamOrgAcceptDto orgAcceptDto = JSON.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
// 处理业务逻辑,更新组织
|
||||
@@ -207,7 +201,7 @@ public class SyncIamByCheryController {
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamOrgAcceptDto orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
IamOrgAcceptDto orgAcceptDto = JSON.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
// 处理业务逻辑,更新组织
|
||||
@@ -238,7 +232,7 @@ public class SyncIamByCheryController {
|
||||
|
||||
MessageHeader messageHeader = acceptDecryptPo.getMessageHeader();
|
||||
BpmcResponseDto bpmcResponseDto = BpmcResponseDto.success();
|
||||
SendPoEncryptPo sendPoEncryptPo = new SendPoEncryptPo();
|
||||
SendPoEncryptPo sendPoEncryptPo;
|
||||
|
||||
if (CharSequenceUtil.isEmpty(bpmcAcceptDto.getType())){
|
||||
bpmcResponseDto.setResultCode(DockingConstant.IAM_ERROR_RESULT_CODE);
|
||||
@@ -383,7 +377,7 @@ public class SyncIamByCheryController {
|
||||
IamUserIdListResponse userIdListResponse = new IamUserIdListResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamCommonAcceptDto commonAcceptDto = JSONObject.parseObject(reqMap, IamCommonAcceptDto.class);
|
||||
IamCommonAcceptDto commonAcceptDto = JSON.parseObject(reqMap, IamCommonAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
@@ -408,7 +402,7 @@ public class SyncIamByCheryController {
|
||||
IamOrgIdListResponse orgIdListResponse = new IamOrgIdListResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamCommonAcceptDto commonAcceptDto = JSONObject.parseObject(reqMap, IamCommonAcceptDto.class);
|
||||
IamCommonAcceptDto commonAcceptDto = JSON.parseObject(reqMap, IamCommonAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
// 处理业务逻辑,封装字段
|
||||
@@ -425,7 +419,7 @@ public class SyncIamByCheryController {
|
||||
IamUserInfoResponse iamUserInfoResponse = new IamUserInfoResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamUserAcceptDto userAcceptDto = JSONObject.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
IamUserAcceptDto userAcceptDto = JSON.parseObject(reqMap, IamUserAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
@@ -444,7 +438,7 @@ public class SyncIamByCheryController {
|
||||
IamOrgInfoResponse iamOrgInfoResponse = new IamOrgInfoResponse();
|
||||
try {
|
||||
String reqMap = this.syncIamService.getStringObjectMap(req);
|
||||
IamOrgAcceptDto orgAcceptDto = JSONObject.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
IamOrgAcceptDto orgAcceptDto = JSON.parseObject(reqMap, IamOrgAcceptDto.class);
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
|
||||
-599
@@ -1,599 +0,0 @@
|
||||
package com.jero.modules.docking.iam.controller;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
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.AcceptEncryptPo;
|
||||
import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo;
|
||||
import com.jero.modules.docking.iam.service.SyncIamService;
|
||||
import com.jero.modules.docking.utils.BamboocloudUtils;
|
||||
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 java.util.List;
|
||||
|
||||
/**
|
||||
* IAM同步的控制器,提供用户、组织、菜单和权限的同步
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sync/iam")
|
||||
@Slf4j
|
||||
public class SyncIamController {
|
||||
|
||||
@Value("${iam.bpmcAppkey}")
|
||||
private String bpmcAppkey;
|
||||
|
||||
@Resource
|
||||
private SyncIamService syncIamService;
|
||||
|
||||
public final String paramNotGetError = "参数传递错误,未收到参数";
|
||||
|
||||
@Resource
|
||||
private BaseCommonService baseCommonService;
|
||||
|
||||
@PostMapping({"/SchemaService"})
|
||||
public SendPoEncryptPo schemaService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException {
|
||||
if (iamCommon == null
|
||||
|| iamCommon.getMessageEncryptTabels() == null
|
||||
|| iamCommon.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamCommon.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, this.paramNotGetError);
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
|
||||
// 处理业务逻辑,封装字段
|
||||
IamSchemaResponse iamSchemaResponse = this.syncIamService.getSchemaInfo(commonAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamCommon.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamSchemaResponse);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserCreateService"})
|
||||
public SendPoEncryptPo userCreateService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException {
|
||||
log.info("进入账号创建");
|
||||
IamUserAcceptDto userAcceptDto = null;
|
||||
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
|
||||
SendPoEncryptPo sendPoEncryptPo = new SendPoEncryptPo();
|
||||
try {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageEncryptTabels() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageEncryptTabels().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);
|
||||
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());
|
||||
}
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamUserCreateResponse);
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserUpdateService"})
|
||||
public SendPoEncryptPo userUpdateService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException {
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
try {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageEncryptTabels() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
iamCommonResponseDto = this.syncIamService.userUpdateService(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());
|
||||
}
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto);
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/UserDeleteService"})
|
||||
public SendPoEncryptPo userDeleteService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException {
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
try {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageEncryptTabels() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamUserAcceptDto userAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamUserAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(userAcceptDto);
|
||||
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
iamCommonResponseDto = 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());
|
||||
}
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto);
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 组织创建和更新移除缓存
|
||||
* @param iamOrgInfo
|
||||
* @return
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@PostMapping({"/OrgCreateService"})
|
||||
@CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
|
||||
public SendPoEncryptPo orgCreateService(@RequestBody AcceptEncryptPo iamOrgInfo) throws JsonProcessingException {
|
||||
IamOrgAcceptDto orgAcceptDto = null;
|
||||
try {
|
||||
if (iamOrgInfo == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels() == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamOrgInfo.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
|
||||
// 处理业务逻辑,存储组织,返回组织id
|
||||
IamOrgCreateResponse iamOrgCreateResponse = this.syncIamService.orgCreateService(orgAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamOrgCreateResponse);
|
||||
return sendPoEncryptPo;
|
||||
} catch (DuplicateKeyException duplicateKeyException) {
|
||||
log.error("数据库值重复:{}", duplicateKeyException.getMessage());
|
||||
if (orgAcceptDto != null) {
|
||||
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "数据库值重复,请检查组织编号【" + orgAcceptDto.getSrmsOrgCode() + "】是否异常");
|
||||
} else {
|
||||
throw new IamGlobalException(null, "未知异常,请联系管理员");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 组织创建和更新移除缓存
|
||||
* @param iamOrgInfo
|
||||
* @return
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@PostMapping({"/OrgUpdateService"})
|
||||
@CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
|
||||
public SendPoEncryptPo orgUpdateService(@RequestBody AcceptEncryptPo iamOrgInfo) throws JsonProcessingException {
|
||||
if (iamOrgInfo == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels() == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamOrgInfo.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
|
||||
// 处理业务逻辑,更新组织
|
||||
IamCommonResponseDto iamCommonResponseDto = this.syncIamService.orgUpdateService(orgAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/OrgDeleteService"})
|
||||
public SendPoEncryptPo orgDeleteService(@RequestBody AcceptEncryptPo iamOrgInfo) throws JsonProcessingException {
|
||||
if (iamOrgInfo == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels() == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamOrgInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamOrgInfo.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
|
||||
// 处理业务逻辑,更新组织
|
||||
IamCommonResponseDto iamCommonResponseDto = this.syncIamService.orgDeleteService(orgAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamCommonResponseDto);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 对接统一权限服务平台。
|
||||
* 该接口包含角色创建、菜单创建、角色菜单关联、用户角色关联等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 iamCommon
|
||||
* @return
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@PostMapping({"/QueryAllUserIdsService"})
|
||||
public SendPoEncryptPo QueryAllUserIdsService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException {
|
||||
if (iamCommon == null
|
||||
|| iamCommon.getMessageEncryptTabels() == null
|
||||
|| iamCommon.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamCommon.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, this.paramNotGetError);
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
|
||||
// 处理业务逻辑,封装字段
|
||||
IamUserIdListResponse userIdListResponse = this.syncIamService.getAllUserIds(commonAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamCommon.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, userIdListResponse);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部组织id
|
||||
* @param iamCommon
|
||||
* @return
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@PostMapping({"/QueryAllOrgIdsService"})
|
||||
public SendPoEncryptPo QueryAllOrgIdsService(@RequestBody AcceptEncryptPo iamCommon) throws JsonProcessingException {
|
||||
if (iamCommon == null
|
||||
|| iamCommon.getMessageEncryptTabels() == null
|
||||
|| iamCommon.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamCommon.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, this.paramNotGetError);
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamCommon.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamCommonAcceptDto commonAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamCommonAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(commonAcceptDto);
|
||||
|
||||
// 处理业务逻辑,封装字段
|
||||
IamOrgIdListResponse orgIdListResponse = this.syncIamService.getAllOrgIds(commonAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamCommon.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, orgIdListResponse);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/QueryUserByIdService"})
|
||||
public SendPoEncryptPo QueryUserByIdService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageEncryptTabels() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageEncryptTabels().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
|
||||
IamUserInfoResponse iamUserInfoResponse = this.syncIamService.getUserInfoById(userAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamUserInfoResponse);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
@PostMapping({"/QueryOrgByIdService"})
|
||||
public SendPoEncryptPo QueryOrgByIdService(@RequestBody AcceptEncryptPo iamUserInfo) throws JsonProcessingException {
|
||||
if (iamUserInfo == null
|
||||
|| iamUserInfo.getMessageEncryptTabels() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader() == null
|
||||
|| iamUserInfo.getMessageEncryptTabels().getHeader().getData() == null){
|
||||
throw new IamGlobalException(null, "参数传递错误,未收到参数");
|
||||
}
|
||||
|
||||
// 对核心数据解密
|
||||
String bodyParam = iamUserInfo.getMessageEncryptTabels().getHeader().getData();
|
||||
String bodyParamDecrypt = BamboocloudUtils.getPlaintext(bodyParam, DockingConstant.IAM_ENCRYPT_SECRET, DockingConstant.IAM_ENCRYPT_TYPE);
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
IamOrgAcceptDto orgAcceptDto = objectMapper.readValue(bodyParamDecrypt, IamOrgAcceptDto.class);
|
||||
|
||||
// 校验身份认证,确保接口正确 必须调用!
|
||||
this.syncIamService.validateUserAndPwd(orgAcceptDto);
|
||||
|
||||
// 处理业务逻辑,存储用户,返回用户id
|
||||
IamOrgInfoResponse iamOrgInfoResponse = this.syncIamService.getOrgInfoById(orgAcceptDto);
|
||||
|
||||
// 处理统一响应PO层,并加密业务字段
|
||||
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
|
||||
SendPoEncryptPo sendPoEncryptPo = this.syncIamService.handlerGloablEncryptResponse(acceptMessageHeader, iamOrgInfoResponse);
|
||||
|
||||
return sendPoEncryptPo;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
-1
@@ -1,7 +1,6 @@
|
||||
package com.jero.modules.docking.iam.dto.response;
|
||||
|
||||
import com.jero.modules.docking.iam.dto.IamOrgAcceptDto;
|
||||
import com.jero.modules.docking.iam.dto.IamUserAcceptDto;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
|
||||
-2
@@ -3,8 +3,6 @@ package com.jero.modules.docking.iam.dto.response;
|
||||
import com.jero.modules.docking.iam.dto.IamUserAcceptDto;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 组织机构创建的响应体
|
||||
*/
|
||||
|
||||
-2
@@ -1,7 +1,5 @@
|
||||
package com.jero.modules.docking.iam.exception;
|
||||
|
||||
import com.jero.common.util.MessageUtils;
|
||||
|
||||
public class IamGlobalException extends RuntimeException {
|
||||
|
||||
private String bimRequestId;
|
||||
|
||||
+108
-106
@@ -38,6 +38,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -90,9 +91,11 @@ public class SyncIamService {
|
||||
@Resource
|
||||
private SysDepartMapper sysDepartMapper;
|
||||
|
||||
private String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
private static final String DATE_FORMAT = "yyyy-MM-dd";
|
||||
|
||||
public final String PARAM_NOT_GET_ERROR = "参数传递错误,未收到参数";
|
||||
private static final String PARAM_NOT_GET_ERROR = "参数传递错误,未收到参数";
|
||||
|
||||
private static final String SELECT_ERROR = "未查询到id为(";
|
||||
|
||||
//SM4
|
||||
@Value("${iam.sm4.key}")
|
||||
@@ -112,10 +115,10 @@ public class SyncIamService {
|
||||
public String getStringObjectMap(HttpServletRequest req) {
|
||||
try {
|
||||
String bodyparam = BamboocloudCheryUtils.getRequestBody(req);
|
||||
System.out.println("first--param-->" + bodyparam);
|
||||
log.info("first--param-->" + bodyparam);
|
||||
//报文解密
|
||||
bodyparam = BamboocloudCheryUtils.getPlaintext(bodyparam, key, type);
|
||||
System.out.println("json--param-->" + bodyparam);
|
||||
log.info("json--param-->" + bodyparam);
|
||||
Map<String,Object> reqMap = (Map<String,Object>) JSON.parse(bodyparam);
|
||||
//验证签名
|
||||
if (!BamboocloudCheryUtils.verify(reqMap, signType)) {
|
||||
@@ -216,37 +219,13 @@ public class SyncIamService {
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUsername(userAcceptDto.getSrmsUsername());
|
||||
sysUser.setRealname(userAcceptDto.getSrmsRealname());
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getBirthday())){
|
||||
sysUser.setBirthday(null);
|
||||
}else{
|
||||
sysUser.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getBirthday()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"生日格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getEntryTime())){
|
||||
sysUser.setEntryTime(null);
|
||||
}else{
|
||||
sysUser.setEntryTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getEntryTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"入职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getResignationTime())){
|
||||
sysUser.setResignationTime(null);
|
||||
}else{
|
||||
sysUser.setResignationTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getResignationTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"离职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
setBirthday(userAcceptDto, sysUser);
|
||||
setEntryTime(userAcceptDto, sysUser);
|
||||
setResignationTime(userAcceptDto, sysUser);
|
||||
|
||||
sysUser.setPassword(CommonConstant.DEFAULT_PASSWORD);
|
||||
String salt = UUIDUtils.randomUUID(8);
|
||||
System.out.println(salt);
|
||||
log.info(salt);
|
||||
sysUser.setSalt(salt);
|
||||
String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), sysUser.getPassword(), salt);
|
||||
sysUser.setPassword(passwordEncode);
|
||||
@@ -280,6 +259,18 @@ public class SyncIamService {
|
||||
return iamUserCreateResponse;
|
||||
}
|
||||
|
||||
private void setEntryTime(IamUserAcceptDto userAcceptDto, SysUser sysUser) {
|
||||
try {
|
||||
if (StringUtils.isEmpty(userAcceptDto.getEntryTime())) {
|
||||
sysUser.setEntryTime(null);
|
||||
} else {
|
||||
sysUser.setEntryTime(new SimpleDateFormat(DATE_FORMAT).parse(userAcceptDto.getEntryTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "入职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串
|
||||
* @param userAcceptDto
|
||||
@@ -295,7 +286,7 @@ public class SyncIamService {
|
||||
// 取出对应的SysUser数据,将iam的数据全部抓取进行判空赋值后存入
|
||||
SysUser sysUser = this.sysUserService.getById(userAcceptDto.getBimUid());
|
||||
if (sysUser == null){
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "未查询到id为(" + userAcceptDto.getBimUid() + ")用户,无法更新");
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(), SELECT_ERROR + userAcceptDto.getBimUid() + ")用户,无法更新");
|
||||
}
|
||||
|
||||
if(!Objects.isNull(userAcceptDto.get__ENABLE__())){
|
||||
@@ -335,48 +326,15 @@ public class SyncIamService {
|
||||
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsTypeId())){
|
||||
sysUser.setTypeId(userAcceptDto.getSrmsTypeId());
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getBirthday())){
|
||||
sysUser.setBirthday(null);
|
||||
}else{
|
||||
sysUser.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getBirthday()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"生日格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getEntryTime())){
|
||||
sysUser.setEntryTime(null);
|
||||
}else{
|
||||
sysUser.setEntryTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getEntryTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"入职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
try {
|
||||
if(StringUtils.isEmpty(userAcceptDto.getResignationTime())){
|
||||
sysUser.setResignationTime(null);
|
||||
}else{
|
||||
sysUser.setResignationTime(new SimpleDateFormat("yyyy-MM-dd").parse(userAcceptDto.getResignationTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(),"离职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
setBirthday(userAcceptDto, sysUser);
|
||||
setEntryTime(userAcceptDto, sysUser);
|
||||
setResignationTime(userAcceptDto, sysUser);
|
||||
|
||||
// 设置飞书id, IAM村的id就是飞书id
|
||||
sysUser.setFeishuId(userAcceptDto.getEmployeeNo());
|
||||
// 获取组织机构(多个逗号分隔)
|
||||
String orgCode = userAcceptDto.getSrmsOrgCode();
|
||||
String selectedDeparts = null;
|
||||
if (CharSequenceUtil.isNotEmpty(orgCode)){
|
||||
List<SysDepart> sysDepartList = sysDepartService.list(
|
||||
new LambdaQueryWrapper<SysDepart>()
|
||||
.in(SysDepart::getOrgCode, Arrays.asList(orgCode.split(","))));
|
||||
if (CollectionUtils.isNotEmpty(sysDepartList)){
|
||||
selectedDeparts = sysDepartList.stream().map(SysDepart::getId)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
String selectedDeparts = getStringSelectedDeparts(orgCode);
|
||||
// 编辑存储到用户表中,角色是系统自己处理的,更新不会影响角色,所以不传
|
||||
this.sysUserService.editUser(sysUser, null, selectedDeparts);
|
||||
}
|
||||
@@ -389,6 +347,45 @@ public class SyncIamService {
|
||||
return iamUserCreateResponse;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private String getStringSelectedDeparts(String orgCode) {
|
||||
String selectedDeparts = null;
|
||||
if (CharSequenceUtil.isNotEmpty(orgCode)){
|
||||
List<SysDepart> sysDepartList = sysDepartService.list(
|
||||
new LambdaQueryWrapper<SysDepart>()
|
||||
.in(SysDepart::getOrgCode, Arrays.asList(orgCode.split(","))));
|
||||
if (CollectionUtils.isNotEmpty(sysDepartList)){
|
||||
selectedDeparts = sysDepartList.stream().map(SysDepart::getId)
|
||||
.collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
return selectedDeparts;
|
||||
}
|
||||
|
||||
private void setResignationTime(IamUserAcceptDto userAcceptDto, SysUser sysUser) {
|
||||
try {
|
||||
if (StringUtils.isEmpty(userAcceptDto.getResignationTime())) {
|
||||
sysUser.setResignationTime(null);
|
||||
} else {
|
||||
sysUser.setResignationTime(new SimpleDateFormat(DATE_FORMAT).parse(userAcceptDto.getResignationTime()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "离职时间格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
}
|
||||
|
||||
private void setBirthday(IamUserAcceptDto userAcceptDto, SysUser sysUser) {
|
||||
try {
|
||||
if (StringUtils.isEmpty(userAcceptDto.getBirthday())) {
|
||||
sysUser.setBirthday(null);
|
||||
} else {
|
||||
sysUser.setBirthday(new SimpleDateFormat(DATE_FORMAT).parse(userAcceptDto.getBirthday()));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "生日格式错误,请输入(yyyy-MM-dd)");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
* @param userAcceptDto
|
||||
@@ -449,7 +446,7 @@ public class SyncIamService {
|
||||
// 将iam的数据转换成sysDepart数据存入数据库
|
||||
SysDepart sysDepart = this.sysDepartService.getById(orgAcceptDto.getSrmsOrgCode());
|
||||
if (sysDepart == null){
|
||||
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "未查询到id为(" + orgAcceptDto.getSrmsOrgCode() + ")组织,无法更新");
|
||||
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), SELECT_ERROR + orgAcceptDto.getSrmsOrgCode() + ")组织,无法更新");
|
||||
}
|
||||
|
||||
if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsParentCode())){
|
||||
@@ -495,10 +492,11 @@ public class SyncIamService {
|
||||
* @return
|
||||
*/
|
||||
public IamCommonResponseDto orgUpdateService(IamOrgAcceptDto orgAcceptDto){
|
||||
log.info("组织更新收到的解密后数据:{}", orgAcceptDto.toString());
|
||||
log.info("组织更新收到的解密后数据:{}", Objects.isNull(orgAcceptDto) ? "" : orgAcceptDto.toString());
|
||||
|
||||
if (orgAcceptDto == null || CharSequenceUtil.isEmpty(orgAcceptDto.getBimOrgId())){
|
||||
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "机构id为空,无法进行组织信息更新");
|
||||
throw new IamGlobalException(Objects.isNull(orgAcceptDto) ? "" : orgAcceptDto.getBimRequestId(),
|
||||
"机构id为空,无法进行组织信息更新");
|
||||
}
|
||||
|
||||
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
|
||||
@@ -509,7 +507,7 @@ public class SyncIamService {
|
||||
// 将iam的数据转换成sysDepart数据存入数据库
|
||||
SysDepart sysDepart = this.sysDepartService.getById(orgAcceptDto.getBimOrgId());
|
||||
if (sysDepart == null){
|
||||
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "未查询到id为(" + orgAcceptDto.getBimOrgId() + ")组织,无法更新");
|
||||
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), SELECT_ERROR + orgAcceptDto.getBimOrgId() + ")组织,无法更新");
|
||||
}
|
||||
if(!Objects.isNull(orgAcceptDto.get__ENABLE__())){
|
||||
LambdaUpdateWrapper<SysDepart> updateSysDepart = new LambdaUpdateWrapper<>();
|
||||
@@ -712,17 +710,7 @@ public class SyncIamService {
|
||||
|
||||
// 菜单英文名
|
||||
sysPermission.setMenuEn(resourceDto.getMenu_en());
|
||||
|
||||
// sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限)
|
||||
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){
|
||||
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){
|
||||
sysPermission.setMenuType(0);
|
||||
} else {
|
||||
sysPermission.setMenuType(1);
|
||||
}
|
||||
} else {
|
||||
sysPermission.setMenuType(2);
|
||||
}
|
||||
setMenuType(resourceDto, sysPermission);
|
||||
|
||||
sysPermission.setCreateTime(new Date());
|
||||
sysPermission.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
|
||||
@@ -736,20 +724,38 @@ public class SyncIamService {
|
||||
}
|
||||
|
||||
// 以下为IAM没有的属性,设置默认值
|
||||
sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true); // 是否路由,设固定值
|
||||
sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true); // 是否缓存,设固定值
|
||||
// 是否路由,设固定值
|
||||
sysPermission.setRoute(isRoute(resourceDto.getIs_route()));
|
||||
// 是否缓存,设固定值
|
||||
sysPermission.setKeepAlive(isRoute(resourceDto.getKeep_alive()));
|
||||
sysPermission.setDelFlag(CommonConstant.DEL_FLAG_0);
|
||||
sysPermission.setRuleFlag(0); // 是否配置菜单的数据权限 1是0否 默认0
|
||||
sysPermission.setHidden(resourceDto.getHidden() == 0 ? false : true); // 是否配置菜单的数据权限 1是0否 默认0
|
||||
sysPermission.setStatus("1"); // 按钮权限状态(0无效1有效)
|
||||
// 是否配置菜单的数据权限 1是0否 默认0
|
||||
sysPermission.setRuleFlag(0);
|
||||
// 是否配置菜单的数据权限 1是0否 默认0
|
||||
sysPermission.setHidden(isRoute(resourceDto.getHidden()));
|
||||
// 按钮权限状态(0无效1有效)
|
||||
sysPermission.setStatus("1");
|
||||
sysPermission.setAlwaysShow(false);
|
||||
sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true);
|
||||
sysPermission.setInternalOrExternal(isRoute(resourceDto.getInternal_or_external()));
|
||||
|
||||
sysPermissionService.addPermission(sysPermission);
|
||||
|
||||
return BpmcResponseDto.success();
|
||||
}
|
||||
|
||||
private void setMenuType(ResourceDto resourceDto, SysPermission sysPermission) {
|
||||
// sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限)
|
||||
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()) {
|
||||
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())) {
|
||||
sysPermission.setMenuType(0);
|
||||
} else {
|
||||
sysPermission.setMenuType(1);
|
||||
}
|
||||
} else {
|
||||
sysPermission.setMenuType(2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单更新
|
||||
*/
|
||||
@@ -799,15 +805,7 @@ public class SyncIamService {
|
||||
}
|
||||
|
||||
// sysPermission的 menuType (0:一级菜单;1:子菜单 ;2:按钮权限)
|
||||
if (DockingConstant.BPMC_RESOURCE_TYPE_MENU == resourceDto.getMenu_type()){
|
||||
if (CharSequenceUtil.isEmpty(resourceDto.getParentId())){
|
||||
sysPermission.setMenuType(0);
|
||||
} else {
|
||||
sysPermission.setMenuType(1);
|
||||
}
|
||||
} else {
|
||||
sysPermission.setMenuType(2);
|
||||
}
|
||||
setMenuType(resourceDto, sysPermission);
|
||||
if (!Objects.isNull(resourceDto.getModifyTime())){
|
||||
sysPermission.setUpdateTime(resourceDto.getModifyTime());
|
||||
}
|
||||
@@ -817,25 +815,29 @@ public class SyncIamService {
|
||||
}
|
||||
|
||||
if (resourceDto.getIs_route() != null){
|
||||
sysPermission.setRoute(resourceDto.getIs_route() == 0 ? false : true);
|
||||
sysPermission.setRoute(isRoute(resourceDto.getIs_route()));
|
||||
}
|
||||
|
||||
if (resourceDto.getKeep_alive() != null){
|
||||
sysPermission.setKeepAlive(resourceDto.getKeep_alive() == 0 ? false : true);
|
||||
sysPermission.setKeepAlive(isRoute(resourceDto.getKeep_alive()));
|
||||
}
|
||||
|
||||
if (resourceDto.getHidden() != null){
|
||||
sysPermission.setHidden(resourceDto.getKeep_alive() == 0 ? false : true);
|
||||
sysPermission.setHidden(isRoute(resourceDto.getKeep_alive()));
|
||||
}
|
||||
|
||||
if (resourceDto.getInternal_or_external() != null){
|
||||
sysPermission.setInternalOrExternal(resourceDto.getInternal_or_external() == 0 ? false : true);
|
||||
sysPermission.setInternalOrExternal(isRoute(resourceDto.getInternal_or_external()));
|
||||
}
|
||||
|
||||
sysPermissionService.editPermission(sysPermission);
|
||||
return BpmcResponseDto.success();
|
||||
}
|
||||
|
||||
private boolean isRoute(Integer is_route) {
|
||||
return is_route == 0 ? false : true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 菜单删除(真实删除)
|
||||
*/
|
||||
@@ -945,7 +947,7 @@ public class SyncIamService {
|
||||
* @return
|
||||
*/
|
||||
public IamUserIdListResponse getAllUserIds(IamCommonAcceptDto commonAcceptDto){
|
||||
QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<SysUser>();
|
||||
QueryWrapper<SysUser> userQueryWrapper = new QueryWrapper<>();
|
||||
userQueryWrapper.select("id");
|
||||
userQueryWrapper.ne("username", "admin");
|
||||
// 获取全部用户的id,得到一个String的list
|
||||
@@ -965,7 +967,7 @@ public class SyncIamService {
|
||||
* @return
|
||||
*/
|
||||
public IamOrgIdListResponse getAllOrgIds(IamCommonAcceptDto commonAcceptDto){
|
||||
QueryWrapper<SysDepart> departQueryWrapper = new QueryWrapper<SysDepart>();
|
||||
QueryWrapper<SysDepart> departQueryWrapper = new QueryWrapper<>();
|
||||
departQueryWrapper.select("id");
|
||||
// 获取全部用户的id,得到一个String的list
|
||||
List<String> departIds = this.sysDepartService.list(departQueryWrapper).stream().map(SysDepart::getId).collect(Collectors.toList());
|
||||
|
||||
Reference in New Issue
Block a user