From 66a43c74f2a3c3546da652b9e7fd3179312a9796 Mon Sep 17 00:00:00 2001 From: chenbowen Date: Fri, 5 Dec 2025 18:16:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E7=B2=BE=E7=AE=80=20iwork=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E7=9A=84=E9=9B=86=E6=88=90=E9=85=8D=E7=BD=AE=E4=B8=8E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iwork/IWorkIntegrationController.java | 24 ----- .../iwork/vo/IWorkHrSyncRespVO.java | 74 ---------------- .../iwork/vo/IWorkOrgSyncReqVO.java | 19 ---- .../config/IWorkIntegrationConfiguration.java | 23 +++++ .../iwork/config/IWorkProperties.java | 87 ++++++++++++++----- .../iwork/IWorkOrgRestService.java | 9 -- .../impl/IWorkIntegrationServiceImpl.java | 32 +++++-- .../iwork/impl/IWorkOrgRestServiceImpl.java | 51 ----------- 8 files changed, 114 insertions(+), 205 deletions(-) delete mode 100644 zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrSyncRespVO.java delete mode 100644 zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkOrgSyncReqVO.java diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/IWorkIntegrationController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/IWorkIntegrationController.java index e69863fe..ac795e86 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/IWorkIntegrationController.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/IWorkIntegrationController.java @@ -97,30 +97,6 @@ public class IWorkIntegrationController { return success(orgRestService.listUsers(reqVO)); } -// @PostMapping("/hr/subcompany/sync") -// @Operation(summary = "同步分部信息至 iWork") -// public CommonResult syncSubcompanies(@Valid @RequestBody IWorkOrgSyncReqVO reqVO) { -// return success(orgRestService.syncSubcompanies(reqVO)); -// } -// -// @PostMapping("/hr/department/sync") -// @Operation(summary = "同步部门信息至 iWork") -// public CommonResult syncDepartments(@Valid @RequestBody IWorkOrgSyncReqVO reqVO) { -// return success(orgRestService.syncDepartments(reqVO)); -// } -// -// @PostMapping("/hr/job-title/sync") -// @Operation(summary = "同步岗位信息至 iWork") -// public CommonResult syncJobTitles(@Valid @RequestBody IWorkOrgSyncReqVO reqVO) { -// return success(orgRestService.syncJobTitles(reqVO)); -// } -// -// @PostMapping("/hr/user/sync") -// @Operation(summary = "同步人员信息至 iWork") -// public CommonResult syncUsers(@Valid @RequestBody IWorkOrgSyncReqVO reqVO) { -// return success(orgRestService.syncUsers(reqVO)); -// } - // ----------------- 同步到本地 ----------------- @PostMapping("/hr/departments/full-sync") diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrSyncRespVO.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrSyncRespVO.java deleted file mode 100644 index c0e17393..00000000 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkHrSyncRespVO.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.zt.plat.module.system.controller.admin.integration.iwork.vo; - -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; - -/** - * iWork 人力同步响应。 - */ -@Data -@Schema(description = "iWork 人力同步响应") -public class IWorkHrSyncRespVO { - - @Schema(description = "响应码") - private String code; - - @Schema(description = "提示信息") - private String message; - - @Schema(description = "是否成功") - private boolean success; - - @Schema(description = "同步结果明细") - private List result; - - @Data - @Schema(description = "同步结果项") - public static class SyncResult { - - @Schema(description = "操作动作 add/update/delete") - @JsonProperty("@action") - private String action; - - @Schema(description = "外部编码") - @JsonProperty("code") - private String code; - - @Schema(description = "执行结果 success/fail") - @JsonProperty("result") - private String result; - - @Schema(description = "是否成功") - @JsonProperty("success") - private Boolean success; - - @Schema(description = "失败描述") - @JsonProperty("message") - private String message; - - @JsonIgnore - private Map attributes; - - @JsonAnySetter - public void putAttribute(String key, Object value) { - if (attributes == null) { - attributes = new LinkedHashMap<>(); - } - attributes.put(key, value); - } - - @JsonAnyGetter - public Map any() { - return attributes == null ? Collections.emptyMap() : attributes; - } - } -} diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkOrgSyncReqVO.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkOrgSyncReqVO.java deleted file mode 100644 index 52120368..00000000 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/integration/iwork/vo/IWorkOrgSyncReqVO.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.zt.plat.module.system.controller.admin.integration.iwork.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -import java.util.List; -import java.util.Map; - -/** - * 同步 iWork 人力组织信息的请求。 - */ -@Data -public class IWorkOrgSyncReqVO { - - @Schema(description = "同步数据集合,将被序列化为 data 传给 iWork", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "同步数据不能为空") - private List> data; -} diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkIntegrationConfiguration.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkIntegrationConfiguration.java index 02fb1f76..3efc5c7e 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkIntegrationConfiguration.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkIntegrationConfiguration.java @@ -1,12 +1,35 @@ package com.zt.plat.module.system.framework.integration.iwork.config; +import jakarta.annotation.PostConstruct; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; +import java.util.List; + /** * 负责加载 {@link IWorkProperties} 的自动配置类。 */ +@Slf4j @Configuration +@RequiredArgsConstructor @EnableConfigurationProperties(IWorkProperties.class) public class IWorkIntegrationConfiguration { + + private final IWorkProperties properties; + + @PostConstruct + void reportConfigurationStatus() { + if (!properties.hasAnyConfiguredValue()) { + log.info("[iWork] 未检测到集成配置,默认关闭 iWork 功能。需要时请在配置文件中补充 iwork.* 项。"); + return; + } + List issues = properties.collectCriticalIssues(); + if (!issues.isEmpty()) { + log.warn("[iWork] 配置不完整:{}。系统会继续启动,但 iWork 能力将不可用。", String.join(";", issues)); + return; + } + log.info("[iWork] 已检测到完整配置,iWork 集成能力已启用。"); + } } diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkProperties.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkProperties.java index 9443464e..6097f31a 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkProperties.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/framework/integration/iwork/config/IWorkProperties.java @@ -1,21 +1,18 @@ package com.zt.plat.module.system.framework.integration.iwork.config; -import jakarta.validation.Valid; -import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.Getter; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.validation.annotation.Validated; +import org.springframework.util.StringUtils; import java.time.Duration; +import java.util.ArrayList; +import java.util.List; /** * iWork 集成所需的配置项。 */ @Data -@Validated @ConfigurationProperties(prefix = "iwork") public class IWorkProperties { @@ -39,16 +36,11 @@ public class IWorkProperties { */ private String userId; - @Valid private final Paths paths = new Paths(); private final Headers headers = new Headers(); - @Valid private final Token token = new Token(); - @Valid private final Client client = new Client(); - @Valid private final OrgRest org = new OrgRest(); - @Valid private final Workflow workflow = new Workflow(); @Data @@ -56,27 +48,22 @@ public class IWorkProperties { /** * 负责交换公钥和密钥的注册接口路径。 */ - @NotBlank(message = "iWork 注册接口路径不能为空") private String register; /** * 申请访问令牌的接口路径。 */ - @NotBlank(message = "iWork 申请 Token 接口路径不能为空") private String applyToken; /** * 查询用户信息的接口路径。 */ - @NotBlank(message = "iWork 用户信息接口路径不能为空") private String userInfo; /** * 发起流程的接口路径。 */ - @NotBlank(message = "iWork 发起流程接口路径不能为空") private String createWorkflow; /** * 干预或作废流程的接口路径。 */ - @NotBlank(message = "iWork 作废流程接口路径不能为空") private String voidWorkflow; } @@ -95,7 +82,6 @@ public class IWorkProperties { /** * 向 iWork 申请的 Token 有效期(单位秒)。 */ - @Min(value = 1, message = "iWork Token 有效期必须大于 0") private long ttlSeconds; } @@ -104,12 +90,10 @@ public class IWorkProperties { /** * Reactor Netty 连接超时时间。 */ - @NotNull(message = "iWork 客户端连接超时时间不能为空") private Duration connectTimeout; /** * Reactor Netty 响应超时时间。 */ - @NotNull(message = "iWork 客户端响应超时时间不能为空") private Duration responseTimeout; } @@ -119,7 +103,6 @@ public class IWorkProperties { * 认证所需的标识(与 iWork 约定)。 */ private String tokenSeed; - @Valid private final OrgPaths paths = new OrgPaths(); } @@ -140,7 +123,69 @@ public class IWorkProperties { /** * 用印流程对应的 iWork 模板编号。 */ - @NotBlank(message = "iWork 用印流程模板编号不能为空") private String sealWorkflowId; } + + /** + * 是否显式配置了关键参数,用于判断是否需要提示用户。 + */ + public boolean hasAnyConfiguredValue() { + return hasText(baseUrl) + || hasText(appId) + || hasText(clientPublicKey) + || hasText(userId) + || hasAnyPathConfigured() + || token.getTtlSeconds() > 0 + || client.getConnectTimeout() != null + || client.getResponseTimeout() != null + || hasText(org.getTokenSeed()) + || hasText(workflow.getSealWorkflowId()); + } + + /** + * 收集关键配置缺失信息,用于提示或日志告警。 + */ + public List collectCriticalIssues() { + List issues = new ArrayList<>(); + if (!hasText(baseUrl)) { + issues.add("iwork.base-url 未配置"); + } + if (!hasText(appId)) { + issues.add("iwork.app-id 未配置"); + } + if (!hasText(paths.getRegister())) { + issues.add("iwork.paths.register 未配置"); + } + if (!hasText(paths.getApplyToken())) { + issues.add("iwork.paths.apply-token 未配置"); + } + if (!hasText(paths.getUserInfo())) { + issues.add("iwork.paths.user-info 未配置"); + } + if (!hasText(paths.getCreateWorkflow())) { + issues.add("iwork.paths.create-workflow 未配置"); + } + if (!hasText(paths.getVoidWorkflow())) { + issues.add("iwork.paths.void-workflow 未配置"); + } + if (token.getTtlSeconds() <= 0) { + issues.add("iwork.token.ttl-seconds 需要大于 0"); + } + if (!hasText(workflow.getSealWorkflowId())) { + issues.add("iwork.workflow.seal-workflow-id 未配置"); + } + return issues; + } + + private boolean hasAnyPathConfigured() { + return hasText(paths.getRegister()) + || hasText(paths.getApplyToken()) + || hasText(paths.getUserInfo()) + || hasText(paths.getCreateWorkflow()) + || hasText(paths.getVoidWorkflow()); + } + + private boolean hasText(String value) { + return StringUtils.hasText(value); + } } diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkOrgRestService.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkOrgRestService.java index 2e291fe3..7e63695a 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkOrgRestService.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/IWorkOrgRestService.java @@ -4,10 +4,8 @@ import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkDepa import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrDepartmentPageRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrJobTitlePageRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSubcompanyPageRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSyncRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrUserPageRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkJobTitleQueryReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkOrgSyncReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSubcompanyQueryReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkUserQueryReqVO; @@ -24,11 +22,4 @@ public interface IWorkOrgRestService { IWorkHrUserPageRespVO listUsers(IWorkUserQueryReqVO reqVO); - IWorkHrSyncRespVO syncSubcompanies(IWorkOrgSyncReqVO reqVO); - - IWorkHrSyncRespVO syncDepartments(IWorkOrgSyncReqVO reqVO); - - IWorkHrSyncRespVO syncJobTitles(IWorkOrgSyncReqVO reqVO); - - IWorkHrSyncRespVO syncUsers(IWorkOrgSyncReqVO reqVO); } diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkIntegrationServiceImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkIntegrationServiceImpl.java index c3a7a5cd..ef43ce49 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkIntegrationServiceImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkIntegrationServiceImpl.java @@ -124,7 +124,8 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { IWorkSession session = createSession(appId, clientKeyPair, operatorUserId, Boolean.TRUE.equals(reqVO.getForceRefreshToken())); Map payload = buildUserPayload(reqVO); - String responseBody = executeJsonRequest(properties.getPaths().getUserInfo(), reqVO.getQueryParams(), appId, session, payload); + String userInfoPath = requireConfiguredPath(properties.getPaths().getUserInfo(), "iwork.paths.user-info"); + String responseBody = executeJsonRequest(userInfoPath, reqVO.getQueryParams(), appId, session, payload); return buildUserInfoResponse(responseBody); } @@ -138,7 +139,8 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { IWorkSession session = createSession(appId, clientKeyPair, operatorUserId, Boolean.TRUE.equals(reqVO.getForceRefreshToken())); Map payload = buildCreatePayload(reqVO); - String responseBody = executeFormRequest(properties.getPaths().getCreateWorkflow(), null, appId, session, payload); + String createWorkflowPath = requireConfiguredPath(properties.getPaths().getCreateWorkflow(), "iwork.paths.create-workflow"); + String responseBody = executeFormRequest(createWorkflowPath, null, appId, session, payload); return buildOperationResponse(responseBody); } @@ -154,7 +156,8 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { IWorkSession session = createSession(appId, clientKeyPair, operatorUserId, Boolean.TRUE.equals(reqVO.getForceRefreshToken())); Map payload = buildVoidPayload(reqVO); - String responseBody = executeJsonRequest(properties.getPaths().getVoidWorkflow(), null, appId, session, payload); + String voidWorkflowPath = requireConfiguredPath(properties.getPaths().getVoidWorkflow(), "iwork.paths.void-workflow"); + String responseBody = executeJsonRequest(voidWorkflowPath, null, appId, session, payload); return buildOperationResponse(responseBody); } @@ -293,6 +296,17 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { return StringUtils.trimWhitespace(value); } + private String requireConfiguredPath(String value, String propertyPath) { + if (!StringUtils.hasText(value)) { + throw ServiceExceptionUtil.exception(IWORK_CONFIGURATION_INVALID, propertyPath + " 未配置"); + } + return StringUtils.trimWhitespace(value); + } + + private long resolveTokenTtlSeconds() { + return Math.max(1L, properties.getToken().getTtlSeconds()); + } + private ClientKeyPair resolveClientKeyPair(String appId, boolean forceRefresh) { String configured = properties.getClientPublicKey(); if (StringUtils.hasText(configured)) { @@ -333,7 +347,8 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { String encryptedSecret = encryptWithPublicKey(registration.secret(), registration.spk()); String encryptedUserId = encryptWithPublicKey(operatorUserId, registration.spk()); String token = applyToken(appId, encryptedSecret); - Instant expiresAt = Instant.now().plusSeconds(Math.max(1L, properties.getToken().getTtlSeconds())); + long ttlSeconds = resolveTokenTtlSeconds(); + Instant expiresAt = Instant.now().plusSeconds(ttlSeconds); return new IWorkSession(token, encryptedUserId, expiresAt, registration.spk()); } @@ -359,8 +374,9 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { } private RegistrationState register(String appId, ClientKeyPair clientKeyPair) { + String registerPath = requireConfiguredPath(properties.getPaths().getRegister(), "iwork.paths.register"); Request request = new Request.Builder() - .url(resolveUrl(properties.getPaths().getRegister())) + .url(resolveUrl(registerPath)) .header(properties.getHeaders().getAppId(), appId) .header(properties.getHeaders().getClientPublicKey(), clientKeyPair.publicKey()) .post(RequestBody.create(null, new byte[0])) @@ -376,11 +392,13 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService { } private String applyToken(String appId, String encryptedSecret) { + String applyTokenPath = requireConfiguredPath(properties.getPaths().getApplyToken(), "iwork.paths.apply-token"); + long ttlSeconds = resolveTokenTtlSeconds(); Request request = new Request.Builder() - .url(resolveUrl(properties.getPaths().getApplyToken())) + .url(resolveUrl(applyTokenPath)) .header(properties.getHeaders().getAppId(), appId) .header(properties.getHeaders().getSecret(), encryptedSecret) - .header(properties.getHeaders().getTime(), String.valueOf(properties.getToken().getTtlSeconds())) + .header(properties.getHeaders().getTime(), String.valueOf(ttlSeconds)) .post(RequestBody.create(null, new byte[0])) .build(); String responseBody = executeRequest(request, IWORK_APPLY_TOKEN_FAILED); diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkOrgRestServiceImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkOrgRestServiceImpl.java index 89133941..f31003a1 100644 --- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkOrgRestServiceImpl.java +++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/service/integration/iwork/impl/IWorkOrgRestServiceImpl.java @@ -9,11 +9,9 @@ import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkDepa import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrDepartmentPageRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrJobTitlePageRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSubcompanyPageRespVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSyncRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrUserPageRespVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkJobTitleQueryReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkOrgBaseQueryReqVO; -import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkOrgSyncReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSubcompanyQueryReqVO; import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkUserQueryReqVO; import com.zt.plat.module.system.framework.integration.iwork.config.IWorkProperties; @@ -62,9 +60,6 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService { private static final TypeReference> USER_LIST_TYPE = new TypeReference<>() { }; - private static final TypeReference> SYNC_RESULT_LIST_TYPE = - new TypeReference<>() { - }; private static final okhttp3.MediaType JSON_MEDIA_TYPE = okhttp3.MediaType.get("application/json; charset=UTF-8"); private final IWorkProperties properties; @@ -178,34 +173,6 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService { return params; } - @Override - public IWorkHrSyncRespVO syncSubcompanies(IWorkOrgSyncReqVO reqVO) { - String path = orgPaths().getSyncSubcompany(); - JsonNode node = invokeDataEndpoint(path, reqVO.getData()); - return buildSyncResp(node); - } - - @Override - public IWorkHrSyncRespVO syncDepartments(IWorkOrgSyncReqVO reqVO) { - String path = orgPaths().getSyncDepartment(); - JsonNode node = invokeDataEndpoint(path, reqVO.getData()); - return buildSyncResp(node); - } - - @Override - public IWorkHrSyncRespVO syncJobTitles(IWorkOrgSyncReqVO reqVO) { - String path = orgPaths().getSyncJobTitle(); - JsonNode node = invokeDataEndpoint(path, reqVO.getData()); - return buildSyncResp(node); - } - - @Override - public IWorkHrSyncRespVO syncUsers(IWorkOrgSyncReqVO reqVO) { - String path = orgPaths().getSyncUser(); - JsonNode node = invokeDataEndpoint(path, reqVO.getData()); - return buildSyncResp(node); - } - private JsonNode invokeParamsEndpoint(String path, Map params) { Objects.requireNonNull(params, "查询参数不能为空"); Map payload = new HashMap<>(); @@ -213,13 +180,6 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService { return executeJson(path, payload); } - private JsonNode invokeDataEndpoint(String path, Object data) { - Objects.requireNonNull(data, "同步数据不能为空"); - Map payload = new HashMap<>(); - payload.put("data", data); - return executeJson(path, payload); - } - private JsonNode executeJson(String path, Map payload) { // 统一封装请求体并发送 POST 调用 assertOrgConfigured(path); @@ -369,17 +329,6 @@ public class IWorkOrgRestServiceImpl implements IWorkOrgRestService { return respVO; } - // 解析并封装同步结果 - private IWorkHrSyncRespVO buildSyncResp(JsonNode node) { - ParsedEnvelope envelope = parseEnvelope(node); - IWorkHrSyncRespVO respVO = new IWorkHrSyncRespVO(); - respVO.setCode(envelope.code()); - respVO.setMessage(envelope.message()); - respVO.setSuccess(envelope.success()); - respVO.setResult(readList(envelope.root(), "result", SYNC_RESULT_LIST_TYPE)); - return respVO; - } - private JsonNode parseJson(String body) { try { return objectMapper.readTree(body);