diff --git a/start/src/main/resources/sdk-prod.yml b/start/src/main/resources/sdk-prod.yml index 3352eeb..9bb56e9 100644 --- a/start/src/main/resources/sdk-prod.yml +++ b/start/src/main/resources/sdk-prod.yml @@ -38,4 +38,6 @@ archives: keepAliveSeconds: 60 humanresources: appKey: A5EF205479D2DFB5E621E159AA8FF34B - appSecret: 53130AAAAC791D5B7AFD6D89C51853510190C903405242C49B83DECBBA0ADA5E \ No newline at end of file + appSecret: 53130AAAAC791D5B7AFD6D89C51853510190C903405242C49B83DECBBA0ADA5E + commonCorpRoleId: 2008483569812549634 + stockCorpRoleId: 2008483240551297026 diff --git a/start/src/main/resources/sdk.yml b/start/src/main/resources/sdk.yml index c8d29c1..8549c6b 100644 --- a/start/src/main/resources/sdk.yml +++ b/start/src/main/resources/sdk.yml @@ -42,6 +42,9 @@ openapi: protocol: HTTP defaultPlatform: true ##ciphertext plaintext +humanresources: + commonCorpRoleId: 2008483569812549634 + stockCorpRoleId: 2008483240551297026 type: plaintext apiPlatform: - name: default diff --git a/web-app/src/main/java/com/zcloud/human/user/command/HumanUserSyncExe.java b/web-app/src/main/java/com/zcloud/human/user/command/HumanUserSyncExe.java index 4637ad2..e45f713 100644 --- a/web-app/src/main/java/com/zcloud/human/user/command/HumanUserSyncExe.java +++ b/web-app/src/main/java/com/zcloud/human/user/command/HumanUserSyncExe.java @@ -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 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 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 getCorpList() { + MultiResponse response = zcloudCorpFacade.getCorpList(); + if (response == null || !response.isSuccess() || response.getData() == null) { + return Collections.emptyList(); + } + return response.getData(); + } + /** * 根据企业ID获取该企业下的部门名称与部门ID映射。 * @@ -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 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 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 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); } diff --git a/web-app/src/main/java/com/zcloud/human/user/config/HumanResourcesConfig.java b/web-app/src/main/java/com/zcloud/human/user/config/HumanResourcesConfig.java index 4b62a18..aca8af5 100644 --- a/web-app/src/main/java/com/zcloud/human/user/config/HumanResourcesConfig.java +++ b/web-app/src/main/java/com/zcloud/human/user/config/HumanResourcesConfig.java @@ -23,4 +23,8 @@ public class HumanResourcesConfig { * 人资接口应用密钥。 */ private String appSecret; + + private Long commonCorpRoleId; + + private Long stockCorpRoleId; }