diff --git a/iam/src/main/java/com/baiyue/iam/dto/OnboardingDtos.java b/iam/src/main/java/com/baiyue/iam/dto/OnboardingDtos.java index 3b3d5fdb8..8fd172624 100644 --- a/iam/src/main/java/com/baiyue/iam/dto/OnboardingDtos.java +++ b/iam/src/main/java/com/baiyue/iam/dto/OnboardingDtos.java @@ -58,7 +58,7 @@ public final class OnboardingDtos { @NotNull Long tenantId, @NotBlank @Pattern(regexp = "[0-9A-Za-z]{18}") String unifiedSocialCreditCode, @NotBlank String businessLicenseDocumentUrl, - @NotBlank @Size(max = 255) String businessLicenseOriginalFileName, + @Size(max = 255) String businessLicenseOriginalFileName, LocalDate businessLicenseValidTo, boolean replaceBusinessLicense, String legalPersonIdDocumentUrl, diff --git a/iam/src/main/java/com/baiyue/iam/service/ProfileResourceService.java b/iam/src/main/java/com/baiyue/iam/service/ProfileResourceService.java index 68f11852d..e3b07d0fa 100644 --- a/iam/src/main/java/com/baiyue/iam/service/ProfileResourceService.java +++ b/iam/src/main/java/com/baiyue/iam/service/ProfileResourceService.java @@ -212,14 +212,16 @@ public class ProfileResourceService { String replacedBusinessLicenseUrl = supersede(businessLicenses, replacementComment); String replacedLegalPersonIdUrl = hasLegalPersonId ? supersede(legalPersonIds, replacementComment) : null; IamTenantQualification businessLicense = createQualification(tenant.getId(), "BUSINESS_LICENSE", - creditCode, request.businessLicenseDocumentUrl(), request.businessLicenseOriginalFileName()); + creditCode, request.businessLicenseDocumentUrl(), + normalizeOriginalFileName(request.businessLicenseOriginalFileName(), request.businessLicenseDocumentUrl(), platformManaged)); businessLicense.setValidTo(request.businessLicenseValidTo()); if (platformManaged) markPlatformQualificationApproved(tenant, businessLicense); repository.saveQualification(businessLicense); IamTenantQualification legalPersonId = null; if (hasLegalPersonId) { legalPersonId = createQualification(tenant.getId(), "LEGAL_PERSON_ID", - null, request.legalPersonIdDocumentUrl().trim(), request.legalPersonIdOriginalFileName()); + null, request.legalPersonIdDocumentUrl().trim(), + normalizeOriginalFileName(request.legalPersonIdOriginalFileName(), request.legalPersonIdDocumentUrl(), platformManaged)); legalPersonId.setValidTo(request.legalPersonIdValidTo()); if (platformManaged) markPlatformQualificationApproved(tenant, legalPersonId); repository.saveQualification(legalPersonId); @@ -297,7 +299,15 @@ public class ProfileResourceService { } private String normalizeOriginalFileName(String originalFileName) { + return normalizeOriginalFileName(originalFileName, null, false); + } + + private String normalizeOriginalFileName(String originalFileName, String documentUrl, boolean platformManaged) { if (!StringUtils.hasText(originalFileName)) { + if (platformManaged && StringUtils.hasText(documentUrl)) { + String value = documentUrl.substring(documentUrl.lastIndexOf('/') + 1).trim(); + if (StringUtils.hasText(value) && value.length() <= 255) return value; + } throw new BizException(ResultCode.BAD_REQUEST, "Original file name is required / 必须提供上传时原始文件名"); } String normalized = originalFileName.trim();