diff --git a/tenant-service/src/main/java/com/xuqm/tenant/service/FeatureServiceManager.java b/tenant-service/src/main/java/com/xuqm/tenant/service/FeatureServiceManager.java index 7f820c9..a347fb6 100644 --- a/tenant-service/src/main/java/com/xuqm/tenant/service/FeatureServiceManager.java +++ b/tenant-service/src/main/java/com/xuqm/tenant/service/FeatureServiceManager.java @@ -59,7 +59,9 @@ public class FeatureServiceManager { return services; } + // Deduplicate by (serviceType, platform) — preserve each platform's service record List normalized = new ArrayList<>(); + java.util.Set seen = new java.util.LinkedHashSet<>(); for (FeatureServiceEntity.ServiceType serviceType : List.of( FeatureServiceEntity.ServiceType.IM, FeatureServiceEntity.ServiceType.PUSH, @@ -67,10 +69,15 @@ public class FeatureServiceManager { FeatureServiceEntity.ServiceType.FILE, FeatureServiceEntity.ServiceType.LICENSE, FeatureServiceEntity.ServiceType.BUG_COLLECT)) { - services.stream() - .filter(service -> service.getServiceType() == serviceType) - .findFirst() - .ifPresent(normalized::add); + for (FeatureServiceEntity.Platform platform : FeatureServiceEntity.Platform.values()) { + services.stream() + .filter(s -> s.getServiceType() == serviceType && s.getPlatform() == platform) + .findFirst() + .ifPresent(s -> { + String key = serviceType + ":" + platform; + if (seen.add(key)) normalized.add(s); + }); + } } return normalized.isEmpty() ? services : normalized; }