【添加】添加组织机构添加接口逻辑

This commit is contained in:
zer0Black
2023-10-02 14:16:17 +08:00
parent 684c23fb9f
commit d18c445db5
2 changed files with 114 additions and 31 deletions
@@ -6,6 +6,7 @@ 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.response.IamCommonResponseDto;
import com.jero.modules.docking.iam.dto.response.IamOrgCreateResponse;
import com.jero.modules.docking.iam.dto.response.IamSchemaResponse;
import com.jero.modules.docking.iam.dto.response.IamUserCreateResponse;
import com.jero.modules.docking.iam.exception.IamGlobalException;
@@ -151,8 +152,30 @@ public class SyncIamController {
}
@PostMapping({"/OrgCreateService"})
public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo<IamOrgAcceptDto> iamOrgInfo) {
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
public SendPoSystemPo orgCreateService(@RequestBody AcceptPoSystemPo<IamOrgAcceptDto> iamOrgInfo) throws JsonProcessingException {
if (iamOrgInfo == null
|| iamOrgInfo.getMessageTabels() == null
|| iamOrgInfo.getMessageTabels().getHeader() == null
|| iamOrgInfo.getMessageTabels().getHeader().getData() == null){
throw new IamGlobalException(null, "参数传递错误,未收到参数");
}
// 对核心数据解密
String bodyParam = iamOrgInfo.getMessageTabels().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
IamOrgCreateResponse iamOrgCreateResponse = this.syncIamService.orgCreateService(orgAcceptDto);
// 处理统一响应PO层,并加密业务字段
MessageHeader acceptMessageHeader = iamOrgInfo.getMessageHeader();
SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamOrgCreateResponse);
return sendPoSystemPo;
}
@@ -16,16 +16,15 @@ import com.jero.modules.docking.iam.annotation.IamProperty;
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.response.IamCommonResponseDto;
import com.jero.modules.docking.iam.dto.response.IamSchemaResponse;
import com.jero.modules.docking.iam.dto.response.IamUserCreateResponse;
import com.jero.modules.docking.iam.dto.response.SchemaResponseInner;
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.SendPoSystemPo;
import com.jero.modules.docking.iam.po.SendReturnsPo;
import com.jero.modules.docking.utils.DockingConstant;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
@@ -57,6 +56,9 @@ public class SyncIamService {
@Resource
private ISysUserService sysUserService;
@Resource
private ISysDepartService sysDepartService;
/**
* 校验IAM调用时的账号密码是否正确
* 校验通过了正常走后续,不通过直接返回
@@ -161,8 +163,8 @@ public class SyncIamService {
}
sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone());
sysUser.setCreateBy("IAM");
sysUser.setUpdateBy("IAM");
sysUser.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (StrUtil.isNotEmpty(userAcceptDto.getSrmsCreateTime())){
Date createTime = DateUtils.str2Date(userAcceptDto.getSrmsCreateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"));
sysUser.setCreateTime(createTime);
@@ -204,33 +206,13 @@ public class SyncIamService {
// 存储到用户表中
this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts);
iamUserCreateResponse.setUid(sysUser.getId()); // TODO sysUser处理完毕得到用户id后,设置
iamUserCreateResponse.setUid(sysUser.getId());
return iamUserCreateResponse;
}
/**
* 根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串
* @param userAcceptDto
* @return
*/
public IamCommonResponseDto userDeleteService(IamUserAcceptDto userAcceptDto){
if (userAcceptDto == null || StrUtil.isEmpty(userAcceptDto.getBimUid())){
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户删除");
}
this.sysUserService.deleteUser(userAcceptDto.getBimUid());
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId());
iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE);
iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE);
return iamCommonResponseDto;
}
/**
* 删除用户
*根据传过来看的bimUid标识用户的唯一id,取出后修改新传递的字符串
* @param userAcceptDto
* @return
*/
@@ -276,7 +258,7 @@ public class SyncIamService {
sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone());
}
sysUser.setUpdateBy("IAM");
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (StrUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){
Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"));
@@ -379,6 +361,84 @@ public class SyncIamService {
return iamCommonResponseDto;
}
/**
* 删除用户
* @param userAcceptDto
* @return
*/
public IamCommonResponseDto userDeleteService(IamUserAcceptDto userAcceptDto){
if (userAcceptDto == null || StrUtil.isEmpty(userAcceptDto.getBimUid())){
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "用户id(bimUid)为空,无法进行用户删除");
}
this.sysUserService.deleteUser(userAcceptDto.getBimUid());
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
iamCommonResponseDto.setBimRequestId(userAcceptDto.getBimRequestId());
iamCommonResponseDto.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE);
iamCommonResponseDto.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE);
return iamCommonResponseDto;
}
/**
* 转换Iam传来的组织数据,进行转换后存储
* @param orgAcceptDto
* @return
*/
public IamOrgCreateResponse orgCreateService(IamOrgAcceptDto orgAcceptDto){
if (orgAcceptDto == null || StrUtil.isEmpty(orgAcceptDto.getSrmsOrgCode())){
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "机构编码为空,无法进行数据存储");
}
IamOrgCreateResponse iamOrgCreateResponse = new IamOrgCreateResponse();
iamOrgCreateResponse.setBimRequestId(orgAcceptDto.getBimRequestId());
iamOrgCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE);
iamOrgCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE);
// 将iam的数据转换成sysDepart数据存入数据库
SysDepart sysDepart = new SysDepart();
sysDepart.setId(orgAcceptDto.getSrmsOrgCode());
sysDepart.setParentId(orgAcceptDto.getSrmsParentCode());
sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName());
sysDepart.setDepartOrder(100); // 接入数据无排序,都设置为100
// 1为单位,2为部门,转映射到 本系统内的数据 1公司,2组织机构,映射关系一致。如下代码是为了后续修改方便
if ("1".equals(orgAcceptDto.getSrmsOrgCategory())){
sysDepart.setOrgCategory("1");
} else {
sysDepart.setOrgCategory("2");
}
sysDepart.setOrgType(orgAcceptDto.getSrmsType());
sysDepart.setOrgCode(orgAcceptDto.getSrmsOrgCode());
sysDepart.setStatus(CommonConstant.STATUS_1);
sysDepart.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0));
sysDepart.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
if (StrUtil.isNotEmpty(orgAcceptDto.getSrmsCreateTime())){
Date createTime = DateUtils.str2Date(orgAcceptDto.getSrmsCreateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"));
sysDepart.setCreateTime(createTime);
}
sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
if (StrUtil.isNotEmpty(orgAcceptDto.getSrmsUpdateTime())){
Date updateTime = DateUtils.str2Date(orgAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"));
sysDepart.setCreateTime(updateTime);
}
sysDepart.setCompany(orgAcceptDto.getSrmsCompany());
sysDepart.setHeadOfDepartment(orgAcceptDto.getSrmsHeadOfDepartment());
sysDepart.setLeadersInCharge(orgAcceptDto.getSrmsLeadersInCharge());
sysDepart.setDeputyLeader(orgAcceptDto.getSrmsDeputyLeader());
// 存储到组织机构表中
this.sysDepartService.save(sysDepart);
iamOrgCreateResponse.setOrgId(sysDepart.getId());
return iamOrgCreateResponse;
}
/**
* 处理统一响应PO层,并加密业务字段
* @param acceptMessageHeader