iam数据同步修改

This commit is contained in:
梁琦涛
2024-08-05 16:56:17 +08:00
parent 7b09f0bff8
commit 4fb523c5eb
9 changed files with 190 additions and 100 deletions
@@ -46,7 +46,7 @@ public class TestClient {
// testClient.sendUserCreate(i);
// }
// 创建用户接口测试
// testClient.sendUserUpdate(); // 更新用户接口测试
testClient.sendUserUpdate(); // 更新用户接口测试
// testClient.sendUserDel(); // 更新用户接口测试
// testClient.sendOrgCreate(); // 组织创建接口测试
// testClient.sendOrgUpdate(); // 组织修改接口测试
@@ -54,7 +54,7 @@ public class TestClient {
// testClient.sendQueryAllUserIdsService(); // 查询所有用户ID接口测试
// testClient.sendQueryAllOrgIdsService(); // 查询所有组织ID接口测试
// testClient.sendQueryOrgByIdService(); // 查询指定id的组织数据测试
testClient.sendQueryUserByIdService(); // 查询指定id的用户数据测试
// testClient.sendQueryUserByIdService(); // 查询指定id的用户数据测试
// testClient.decryptSting("8rAKWPUwkEZ3yYLy/1TuGGkIGCYtc+MD56pShLi97OmMttoFooo5GXZ/lY4NrQ5DiWmVUX23zqDwyQqufXLZNDU+KuJO/9UonpqUlZxM91w=");
}
@@ -203,7 +203,7 @@ public class TestClient {
private void sendUserUpdate() throws JsonProcessingException {
// 封装 IamUserAcceptDto 为用户数据层
IamUserAcceptDto iamUserAcceptDto = new IamUserAcceptDto();
iamUserAcceptDto.setBimUid("1803973103451799554"); // 数据库中取到的ID
iamUserAcceptDto.setBimUid("1820381905836400641"); // 数据库中取到的ID
iamUserAcceptDto.setBirthday("2018-12-05 00:00:00");
iamUserAcceptDto.setBirthday("2024-05-01");
iamUserAcceptDto.setEntryTime("2024-06-01");
@@ -212,6 +212,7 @@ public class TestClient {
iamUserAcceptDto.setEmployeeNo("feishuid");
iamUserAcceptDto.setBimRemoteUser("srmsIam");
iamUserAcceptDto.setBimRemotePwd("srmsIam2023");
iamUserAcceptDto.set__ENABLE__(true);
StringBuilder sb = getStringBuilder(iamUserAcceptDto);
@@ -276,9 +277,13 @@ public class TestClient {
// 封装 IamUserAcceptDto 为用户数据层
IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto();
iamOrgAcceptDto.setSrmsOrgCode("IA00104");
iamOrgAcceptDto.setSrmsDepartName("测试IAM部门");
iamOrgAcceptDto.setSrmsParentCode("");
// iamOrgAcceptDto.setSrmsOrgCode("D10000001");
// iamOrgAcceptDto.setSrmsDepartName("奇瑞机构部门");
// iamOrgAcceptDto.setSrmsParentCode("");
iamOrgAcceptDto.setSrmsOrgCode("D10000005");
iamOrgAcceptDto.setSrmsDepartName("销售部");
iamOrgAcceptDto.setSrmsParentCode("D10000001");
iamOrgAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
@@ -350,7 +355,7 @@ public class TestClient {
private void sendOrgDel() throws JsonProcessingException {
// 封装 IamUserAcceptDto 为用户数据层
IamOrgAcceptDto iamOrgAcceptDto = new IamOrgAcceptDto();
iamOrgAcceptDto.setBimOrgId("IA00104");
iamOrgAcceptDto.setBimOrgId("D10000004");
iamOrgAcceptDto.setBimRequestId(UUIDUtils.randomUUID20());
iamOrgAcceptDto.setBimRemoteUser("srmsIam");
@@ -196,6 +196,7 @@ public class SyncIamByCheryController {
}
@PostMapping({"/OrgDeleteService"})
@CacheEvict(value= {CacheConstant.SYS_DEPARTS_CACHE,CacheConstant.SYS_DEPART_IDS_CACHE}, allEntries=true)
public String orgDeleteService(HttpServletRequest req) {
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
try {
@@ -82,4 +82,10 @@ public class IamUserAcceptDto extends IamCommonAcceptDto {
*/
@IamProperty(required = true, multivalued = false)
private String resignationTime;
/**
* 启用状态
*/
@IamProperty(required = true, multivalued = false)
private Boolean __ENABLE__;
}
@@ -31,6 +31,7 @@ import com.jero.modules.docking.iam.po.encrypt.SendPoEncryptPo;
import com.jero.modules.docking.utils.BamboocloudCheryUtils;
import com.jero.modules.docking.utils.DockingConstant;
import com.jero.modules.system.entity.*;
import com.jero.modules.system.mapper.SysDepartMapper;
import com.jero.modules.system.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -85,6 +86,8 @@ public class SyncIamService {
@Resource
private ISysBaseAPI sysBaseAPI;
@Resource
private SysDepartMapper sysDepartMapper;
private String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
@@ -253,7 +256,6 @@ public class SyncIamService {
sysUser.setEmail(userAcceptDto.getSrmsEmail());
sysUser.setPhone(userAcceptDto.getSrmsPhone());
sysUser.setTelephone(userAcceptDto.getSrmsPhone());
sysUser.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
@@ -295,70 +297,81 @@ public class SyncIamService {
throw new IamGlobalException(userAcceptDto.getBimRequestId(), "未查询到id为(" + userAcceptDto.getBimUid() + ")用户,无法更新");
}
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUsername())){
sysUser.setUsername(userAcceptDto.getSrmsUsername());
}
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsRealname())){
sysUser.setRealname(userAcceptDto.getSrmsRealname());
}
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsSex()) && NumberUtil.isInteger(userAcceptDto.getSrmsSex())){
sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex()));
}
// 手机号 和 邮箱有加密,需要单独处理
sysUser.setEmail(userAcceptDto.getSrmsEmail());
sysUser.setPhone(userAcceptDto.getSrmsPhone());
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
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()));
if(!Objects.isNull(userAcceptDto.get__ENABLE__())){
LambdaUpdateWrapper<SysUser> querySysUser = new LambdaUpdateWrapper<>();
querySysUser.eq(SysUser::getId,userAcceptDto.getBimUid());
querySysUser.set(SysUser::getStatus,userAcceptDto.get__ENABLE__() ? 1 : 2);
querySysUser.set(SysUser::getUpdateTime,new Date());
querySysUser.set(SysUser::getUpdateTime,new Date());
sysUser.setCreateBy(DockingConstant.IAM_SYSTEM_NAME);
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
this.sysUserService.update(querySysUser);
}else{
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsUsername())){
sysUser.setUsername(userAcceptDto.getSrmsUsername());
}
} 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)");
}
// 设置飞书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(","));
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsRealname())){
sysUser.setRealname(userAcceptDto.getSrmsRealname());
}
}
// 编辑存储到用户表中,角色是系统自己处理的,更新不会影响角色,所以不传
this.sysUserService.editUser(sysUser, null, selectedDeparts);
if (CharSequenceUtil.isNotEmpty(userAcceptDto.getSrmsSex()) && NumberUtil.isInteger(userAcceptDto.getSrmsSex())){
sysUser.setSex(Integer.valueOf(userAcceptDto.getSrmsSex()));
}
sysUser.setEmail(userAcceptDto.getSrmsEmail());
sysUser.setPhone(userAcceptDto.getSrmsPhone());
sysUser.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
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)");
}
// 设置飞书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(","));
}
}
// 编辑存储到用户表中,角色是系统自己处理的,更新不会影响角色,所以不传
this.sysUserService.editUser(sysUser, null, selectedDeparts);
}
IamUserCreateResponse iamUserCreateResponse = new IamUserCreateResponse();
iamUserCreateResponse.setBimRequestId(userAcceptDto.getBimRequestId());
@@ -389,6 +402,7 @@ public class SyncIamService {
updateSysUser.eq(SysUser::getId,userAcceptDto.getBimUid());
updateSysUser.set(SysUser::getStatus,"2");
updateSysUser.set(SysUser::getUpdateTime,new Date());
updateSysUser.set(SysUser::getUpdateBy,DockingConstant.IAM_SYSTEM_NAME);
this.sysUserService.update(updateSysUser);
IamCommonResponseDto iamCommonResponseDto = new IamCommonResponseDto();
@@ -421,21 +435,49 @@ public class SyncIamService {
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());
// 生成orgCode
JSONObject formData = new JSONObject();
formData.put("parentId", orgAcceptDto.getSrmsParentCode());
String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.DEPART, formData);
sysDepart.setOrgCode(codeArray[0]);
sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName());
sysDepart.setDepartOrder(100); // 接入数据无排序,都设置为100
SysDepart listSysDepart = sysDepartMapper.queryId(orgAcceptDto.getSrmsOrgCode());
if(!Objects.isNull(listSysDepart)){
sysDepartMapper.updateId(orgAcceptDto.getSrmsOrgCode());
// 将iam的数据转换成sysDepart数据存入数据库
SysDepart sysDepart = this.sysDepartService.getById(orgAcceptDto.getSrmsOrgCode());
if (sysDepart == null){
throw new IamGlobalException(orgAcceptDto.getBimRequestId(), "未查询到id为(" + orgAcceptDto.getSrmsOrgCode() + ")组织,无法更新");
}
// 存储到组织机构表中
this.sysDepartService.save(sysDepart);
iamOrgCreateResponse.setUid(sysDepart.getId());
if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsParentCode())){
sysDepart.setParentId(orgAcceptDto.getSrmsParentCode());
}
if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsDepartName())){
sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName());
}
sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
sysDepart.setUpdateTime(new Date());
// 存储到组织机构表中
this.sysDepartService.updateById(sysDepart);
iamOrgCreateResponse.setUid(orgAcceptDto.getSrmsOrgCode());
}else{
// 将iam的数据转换成sysDepart数据存入数据库
SysDepart sysDepart = new SysDepart();
sysDepart.setId(orgAcceptDto.getSrmsOrgCode());
sysDepart.setParentId(orgAcceptDto.getSrmsParentCode());
if(StringUtils.isEmpty(orgAcceptDto.getSrmsParentCode())){
sysDepart.setOrgType("1");
}else{
sysDepart.setOrgType("2");
}
// 生成orgCode
JSONObject formData = new JSONObject();
formData.put("parentId", orgAcceptDto.getSrmsParentCode());
String[] codeArray = (String[]) FillRuleUtil.executeRule(FillRuleConstant.DEPART, formData);
sysDepart.setOrgCode(codeArray[0]);
sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName());
sysDepart.setDepartOrder(100); // 接入数据无排序,都设置为100
// 存储到组织机构表中
this.sysDepartService.save(sysDepart);
iamOrgCreateResponse.setUid(sysDepart.getId());
}
return iamOrgCreateResponse;
}
@@ -469,6 +511,8 @@ public class SyncIamService {
if (CharSequenceUtil.isNotEmpty(orgAcceptDto.getSrmsDepartName())){
sysDepart.setDepartName(orgAcceptDto.getSrmsDepartName());
}
sysDepart.setUpdateBy(DockingConstant.IAM_SYSTEM_NAME);
sysDepart.setUpdateTime(new Date());
// 存储到组织机构表中
this.sysDepartService.updateById(sysDepart);