1. 修复 iwork 请求错误未记录具体的错误信息问题

This commit is contained in:
chenbowen
2025-12-02 09:03:26 +08:00
parent 95d905e76f
commit 55dd8df69c
2 changed files with 19 additions and 8 deletions

View File

@@ -10,13 +10,13 @@ public interface IWorkIntegrationErrorCodeConstants {
ErrorCode IWORK_BASE_URL_MISSING = new ErrorCode(1_010_200_001, "iWork 集成未配置网关地址");
ErrorCode IWORK_CONFIGURATION_INVALID = new ErrorCode(1_010_200_002,
"iWork 集成缺少必填配置appId/userId/workflowId或配置无效");
ErrorCode IWORK_REGISTER_FAILED = new ErrorCode(1_010_200_003, "iWork 注册授权失败");
ErrorCode IWORK_APPLY_TOKEN_FAILED = new ErrorCode(1_010_200_004, "iWork 令牌申请失败");
ErrorCode IWORK_REMOTE_REQUEST_FAILED = new ErrorCode(1_010_200_005, "iWork 接口请求失败");
ErrorCode IWORK_REGISTER_FAILED = new ErrorCode(1_010_200_003, "iWork 注册授权失败{}");
ErrorCode IWORK_APPLY_TOKEN_FAILED = new ErrorCode(1_010_200_004, "iWork 令牌申请失败{}");
ErrorCode IWORK_REMOTE_REQUEST_FAILED = new ErrorCode(1_010_200_005, "iWork 接口请求失败{}");
ErrorCode IWORK_USER_IDENTIFIER_MISSING = new ErrorCode(1_010_200_006, "缺少用户识别信息,无法调用 iWork 接口");
ErrorCode IWORK_OPERATOR_USER_MISSING = new ErrorCode(1_010_200_007, "缺少 iWork 操作人用户编号");
ErrorCode IWORK_WORKFLOW_ID_MISSING = new ErrorCode(1_010_200_008, "缺少 iWork 流程模板编号");
ErrorCode IWORK_ORG_IDENTIFIER_MISSING = new ErrorCode(1_010_200_009, "iWork 人力组织接口缺少认证标识");
ErrorCode IWORK_ORG_REMOTE_FAILED = new ErrorCode(1_010_200_010, "iWork 人力组织接口请求失败{}");
ErrorCode IWORK_ORG_REMOTE_FAILED = new ErrorCode(1_010_200_010, "iWork 人力组织接口请求失败{}");
ErrorCode IWORK_SEAL_REQUIRED_FIELD_MISSING = new ErrorCode(1_010_200_011, "缺少用印必填字段:{}");
}

View File

@@ -850,15 +850,26 @@ public class IWorkIntegrationServiceImpl implements IWorkIntegrationService {
}
private ServiceException buildRemoteException(ErrorCode errorCode, int statusCode, String responseBody) {
StringBuilder message = new StringBuilder(errorCode.getMsg());
String detail = buildRemoteErrorDetail(statusCode, responseBody);
if (!StringUtils.hasText(detail)) {
detail = "未知错误";
}
return ServiceExceptionUtil.exception(errorCode, detail);
}
private String buildRemoteErrorDetail(int statusCode, String responseBody) {
StringBuilder detail = new StringBuilder();
if (statusCode > 0) {
message.append("HTTP ").append(statusCode).append("");
detail.append("HTTP ").append(statusCode);
}
String reason = extractReadableReason(responseBody);
if (StringUtils.hasText(reason)) {
message.append("").append(reason);
if (detail.length() > 0) {
detail.append("");
}
detail.append(reason);
}
return ServiceExceptionUtil.exception0(errorCode.getCode(), message.toString());
return detail.toString();
}
private String extractReadableReason(String responseBody) {