feat(human): 更新人资用户状态同步功能

master
zhaokai 2026-06-30 10:11:33 +08:00
parent 02f479a7db
commit 8442b0d976
4 changed files with 58 additions and 13 deletions

View File

@ -39,3 +39,5 @@ archives:
humanresources:
appKey: A5EF205479D2DFB5E621E159AA8FF34B
appSecret: 53130AAAAC791D5B7AFD6D89C51853510190C903405242C49B83DECBBA0ADA5E
commonCorpRoleId: 2008483569812549634
stockCorpRoleId: 2008483240551297026

View File

@ -42,6 +42,9 @@ openapi:
protocol: HTTP
defaultPlatform: true
##ciphertext plaintext
humanresources:
commonCorpRoleId: 2008483569812549634
stockCorpRoleId: 2008483240551297026
type: plaintext
apiPlatform:
- name: default

View File

@ -1,5 +1,6 @@
package com.zcloud.human.user.command;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONConfig;
@ -315,16 +316,19 @@ public class HumanUserSyncExe {
String employeeName = jsonObject.getStr("employee_name");
String phone = jsonObject.getStr("phone_number");
String postName = resolvePostName(jsonObject);
String idCardNumber = jsonObject.getStr("id_card_number");
String encodedIdCardNumber = StringUtils.isNotEmpty(idCardNumber) ? Base64.encodeToString(idCardNumber) : null;
ZcloudUserAddCmd cmd = new ZcloudUserAddCmd();
cmd.setPhone(phone);
cmd.setName(employeeName);
cmd.setUserIdCard(encodedIdCardNumber);
cmd.setCorpinfoId(corpId);
cmd.setCorpinfoName(SYSTEM_CORP_NAME);
cmd.setDepartmentId(deptId);
cmd.setPostId(postId);
cmd.setPostName(postName);
cmd.setRoleId(getDefaultRoleId());
cmd.setRoleId(getCorpRoleId(corpId));
SingleResponse<Long> result = zcloudUserFacade.addHumanUser(cmd);
if (result.getData() != null) {
return result.getData();
@ -336,6 +340,18 @@ public class HumanUserSyncExe {
}
}
private Long getCorpRoleId(Long corpId) {
ZcloudCorpInfoCO corpInfo = getCorpInfo(corpId);
if (corpInfo == null) {
log.warn("未找到企业信息无法按企业类型匹配角色corpId={}", corpId);
return null;
}
if (Integer.valueOf(2).equals(corpInfo.getType())) {
return humanResourcesConfig.getStockCorpRoleId();
}
return humanResourcesConfig.getCommonCorpRoleId();
}
/**
* ID
*/
@ -355,17 +371,31 @@ public class HumanUserSyncExe {
* ID
*/
private Long getTargetCorpId(String corpName) {
MultiResponse<ZcloudCorpInfoCO> response = zcloudCorpFacade.getCorpList();
if (response == null || !response.isSuccess() || response.getData() == null) {
return null;
}
return response.getData().stream()
return getCorpList().stream()
.filter(corp -> corpName.equals(corp.getCorpName()))
.map(ZcloudCorpInfoCO::getId)
.findFirst()
.orElse(null);
}
private ZcloudCorpInfoCO getCorpInfo(Long corpId) {
if (corpId == null) {
return null;
}
return getCorpList().stream()
.filter(corp -> corpId.equals(corp.getId()))
.findFirst()
.orElse(null);
}
private List<ZcloudCorpInfoCO> getCorpList() {
MultiResponse<ZcloudCorpInfoCO> response = zcloudCorpFacade.getCorpList();
if (response == null || !response.isSuccess() || response.getData() == null) {
return Collections.emptyList();
}
return response.getData();
}
/**
* IDID
*
@ -1185,22 +1215,28 @@ public class HumanUserSyncExe {
String phoneNumber = StringUtils.isNotEmpty(humanUser.getPhoneNumber()) ? humanUser.getPhoneNumber() : null;
String idCardNumber = StringUtils.isNotEmpty(humanUser.getIdCardNumber()) ? Base64.encodeToString(humanUser.getIdCardNumber()) :null;
Long existingUserId = isUserExists(idCardNumber,phoneNumber);
SingleResponse<ZcloudUserCo> infoByUserId = zcloudUserFacade.getInfoByUserId(existingUserId);
if (infoByUserId == null || !infoByUserId.isSuccess() || infoByUserId.getData() == null) {
log.warn("获取统一用户详情失败userId={}", humanUser.getUserId());
// Long existingUserId = isUserExists(idCardNumber,phoneNumber);
ZcloudUserInfoQry qry = new ZcloudUserInfoQry();
qry.setUserIdCard(idCardNumber);
qry.setPhone(phoneNumber);
MultiResponse<ZcloudUserCo> response = zcloudUserFacade.listUserByInfo(qry);
if (response == null || !response.isSuccess() || response.getData() == null || CollUtil.isEmpty(response.getData())) {
log.error("获取统一用户列表失败userIdCard={},phone={}", idCardNumber, phoneNumber);
return false;
}
List<ZcloudUserCo> data = response.getData();
ZcloudUserCo detail = data.get(0);
ZcloudUserCo detail = infoByUserId.getData();
String employeeName = StringUtils.isNotEmpty(humanUser.getEmployeeName()) ? humanUser.getEmployeeName() : detail.getName();
ZcloudUserUpdateCmd cmd = new ZcloudUserUpdateCmd();
cmd.setId(existingUserId);
cmd.setId(detail.getId());
cmd.setName(employeeName);
cmd.setPhone(phoneNumber);
cmd.setUserIdCard(idCardNumber);
cmd.setRoleId(getCorpRoleId(corpId));
if (corpId != null) {
cmd.setCorpinfoId(corpId);
}

View File

@ -23,4 +23,8 @@ public class HumanResourcesConfig {
*
*/
private String appSecret;
private Long commonCorpRoleId;
private Long stockCorpRoleId;
}