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 4b1cc284a..bbf988c8e 100644 --- a/iam/src/main/java/com/baiyue/iam/service/ProfileResourceService.java +++ b/iam/src/main/java/com/baiyue/iam/service/ProfileResourceService.java @@ -62,7 +62,10 @@ public class ProfileResourceService { public List platformQualifications(long tenantId) { requireMerchant(tenantId); - return qualifications(tenantId); + return repository.findQualifications(tenantId).stream() + .filter(item -> !"SUPERSEDED".equals(item.getStatus())) + .map(this::toQualificationResponse) + .toList(); } public QualificationResponse platformQualification(long tenantId, long qualificationId) { diff --git a/iam/src/test/java/com/baiyue/iam/service/MerchantQualificationUploadTest.java b/iam/src/test/java/com/baiyue/iam/service/MerchantQualificationUploadTest.java index ef40a7b22..0abe53673 100644 --- a/iam/src/test/java/com/baiyue/iam/service/MerchantQualificationUploadTest.java +++ b/iam/src/test/java/com/baiyue/iam/service/MerchantQualificationUploadTest.java @@ -169,6 +169,27 @@ class MerchantQualificationUploadTest { assertEquals(LocalDateTime.of(2026, 9, 11, 10, 30), response.get(0).updatedAt()); } + @Test + void platformQualificationListHidesSupersededFilesButMerchantHistoryRetainsThem() { + IamTenant tenant = new IamTenant(); + tenant.setId(10001L); + tenant.setTenantType("MERCHANT"); + IamTenantQualification current = qualification( + "BUSINESS_LICENSE", "/files/qualification/current-license.png"); + current.setId(2L); + IamTenantQualification superseded = qualification( + "BUSINESS_LICENSE", "/files/qualification/replaced-license.png"); + superseded.setStatus("SUPERSEDED"); + when(tenantRepository.findTenant(10001L)).thenReturn(tenant); + when(profileRepository.findQualifications(10001L)).thenReturn(List.of(current, superseded)); + + assertEquals(2, service.qualifications(10001L).size()); + var platformQualifications = service.platformQualifications(10001L); + + assertEquals(1, platformQualifications.size()); + assertEquals(2L, platformQualifications.get(0).id()); + } + @Test void deletesDraftQualificationWithTenantLock() { IamTenant tenant = new IamTenant();