修改iam对接

This commit is contained in:
梁琦涛
2024-08-12 11:22:28 +08:00
parent bc841a4821
commit 827c30cd5b
7 changed files with 123 additions and 729 deletions
@@ -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);
}
}
@@ -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
@@ -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,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;
/**
@@ -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;
/**
* 组织机构创建的响应体
*/
@@ -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;
@@ -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());