【添加】用户创建接口的核心逻辑处理完毕

This commit is contained in:
zer0Black
2023-10-01 21:27:01 +08:00
parent 23e010ad13
commit b3c77a17c6
6 changed files with 125 additions and 7 deletions
@@ -84,10 +84,10 @@ public class SyncIamController {
// TODO 处理业务逻辑,存储用户,返回用户id
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
SendPoSystemPo sendPoSystemPo = new SendPoSystemPo();
// 处理统一响应PO层,并加密业务字段
MessageHeader acceptMessageHeader = iamUserInfo.getMessageHeader();
sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamUserCreateResponse);
SendPoSystemPo sendPoSystemPo = this.syncIamService.handlerGloablResponse(acceptMessageHeader, iamUserCreateResponse);
return sendPoSystemPo;
}
@@ -1,28 +1,42 @@
package com.jero.modules.docking.iam.service;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.bamboocloud.codec.BamboocloudFacade;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jero.common.aspect.annotation.Translation;
import com.jero.common.constant.CommonConstant;
import com.jero.common.util.DateUtils;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.UUIDGenerator;
import com.jero.common.util.oConvertUtils;
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.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.SysUser;
import com.jero.modules.system.service.ISysUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.print.Doc;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -40,6 +54,9 @@ public class SyncIamService {
@Value("${iam.bimRemotePwd}")
private String bimRemotePwd;
@Resource
private ISysUserService sysUserService;
/**
* 校验IAM调用时的账号密码是否正确
* 校验通过了正常走后续,不通过直接返回
@@ -106,10 +123,96 @@ public class SyncIamService {
}
}
/**
* 转换Iam传来的用户数据,进行转换后存储
* @param userAcceptDto
* @return
*/
public IamUserCreateResponse userCreateService(IamUserAcceptDto userAcceptDto){
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId());
iamUserCreateResponse.setResultCode(DockingConstant.IAM_SUCCESS_RESULT_CODE);
iamUserCreateResponse.setMessage(DockingConstant.IAM_SUCCESS_MESSAGE);
// 将iam的数据转换成sysUser数据存入数据库
SysUser sysUser = new SysUser();
sysUser.setUsername(userAcceptDto.getSrmsUsername());
sysUser.setRealname(userAcceptDto.getSrmsRealname());
sysUser.setPassword(CommonConstant.DEFAULT_PASSWORD);
String salt = oConvertUtils.randomGen(8);
sysUser.setSalt(salt);
String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), sysUser.getPassword(), salt);
sysUser.setPassword(passwordEncode);
if (NumberUtil.isInteger(userAcceptDto.getSrmsSex())){
sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex()));
}
sysUser.setEmail(userAcceptDto.getSrmsEmail());
sysUser.setPhone(userAcceptDto.getSrmsPhone());
if ("1".equals(userAcceptDto.getSrmsStatus())){
sysUser.setStatus(CommonConstant.USER_UNFREEZE);
sysUser.setDelFlag(CommonConstant.DEL_FLAG_0);
} else {
sysUser.setStatus(CommonConstant.USER_FREEZE);
sysUser.setDelFlag(CommonConstant.DEL_FLAG_1);
}
sysUser.setTelephone(userAcceptDto.getSrmsOfficePhone());
sysUser.setCreateBy("IAM");
sysUser.setUpdateBy("IAM");
if (StrUtil.isNotEmpty(userAcceptDto.getSrmsCreateTime())){
Date createTime = DateUtils.str2Date(userAcceptDto.getSrmsCreateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"));
sysUser.setCreateTime(createTime);
}
if (StrUtil.isNotEmpty(userAcceptDto.getSrmsUpdateTime())){
Date updateTime = DateUtils.str2Date(userAcceptDto.getSrmsUpdateTime(), new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"));
sysUser.setCreateTime(updateTime);
}
sysUser.setActivitiSync(0);
sysUser.setUserIdentity(0);
sysUser.setTypeId(userAcceptDto.getSrmsTypeId());
sysUser.setPost(userAcceptDto.getSrmsPost());
sysUser.setDutyLevelId(userAcceptDto.getSrmsDutyLevelId());
sysUser.setRace(userAcceptDto.getSrmsRace());
sysUser.setPostSequence(userAcceptDto.getSrmsPostSequence());
sysUser.setTechnicalPosition(userAcceptDto.getSrmsTechnicalPosition());
sysUser.setDirectLeadership(userAcceptDto.getSrmsDirectLeadership());
sysUser.setPostStatus(userAcceptDto.getSrmsPostStatus());
sysUser.setIdNumber(userAcceptDto.getSrmsIdNumber());
sysUser.setEducation(userAcceptDto.getSrmsEducation());
sysUser.setDepartmentBeforeTransfer(userAcceptDto.getSrmsDepartmentBeforeTransfer());
sysUser.setLaborDispatchCode(userAcceptDto.getSrmsLaborDispatchCode());
sysUser.setLaborDispatchName(userAcceptDto.getSrmsLaborDispatchName());
sysUser.setProfessionalQualification(userAcceptDto.getSrmsProfessionalQualification());
sysUser.setProfessionalLevel(userAcceptDto.getSrmsProfessionalLevel());
sysUser.setEntryTime(userAcceptDto.getSrmsEntryTime());
// 获取组织机构(多个逗号分隔),TODO 有两个和组织关联在字段,用哪个还需要再和IAM沟通
String companyCode = userAcceptDto.getSrmsCompanyCode();
String orgCode = userAcceptDto.getSrmsOrgCode();
String selectedDeparts = orgCode;
// 获取角色(多个逗号分隔),针对大部分角用户默认写死一般用户(TODO 需要根据实际情况再沟通一遍角色怎么自动赋予)
String selectedRoles = "123"; // 一般用户的角色ID
// 存储到用户表中
this.sysUserService.saveUser(sysUser, selectedRoles, selectedDeparts);
iamUserCreateResponse.setUid(sysUser.getId()); // TODO sysUser处理完毕得到用户id后,设置
return iamUserCreateResponse;
}
/**
* 处理统一响应PO层,并加密业务字段
* @param acceptMessageHeader
* @param iamSchemaResponse
* @param object
* @return
* @throws JsonProcessingException
*/
@@ -25,4 +25,14 @@ public class DockingConstant {
*/
public static String IAM_ENCRYPT_SECRET = "123456";
/**
* IAM正确时的返回码
*/
public static String IAM_SUCCESS_RESULT_CODE = "0";
/**
* IAM正确时的返回消息
*/
public static String IAM_SUCCESS_MESSAGE = "success";
}