From a20dd0db16d2a4c532e550737b50e6f381c9affc Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Fri, 26 Jun 2026 16:16:44 +0800 Subject: [PATCH] =?UTF-8?q?fix(tenant):=20listByApp=20=E6=8C=89=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=8E=BB=E9=87=8D=EF=BC=8C=E8=BF=94=E5=9B=9E=E6=AF=8F?= =?UTF-8?q?=E4=B8=AA=E5=B9=B3=E5=8F=B0=E7=9A=84=E6=9C=8D=E5=8A=A1=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原实现按 serviceType findFirst,导致同一 serviceType 下不同平台 的配置(如 ANDROID/IOS/HARMONY PUSH)只返回第一条,ANDROID 推送 配置对外不可见。改为按 (serviceType, platform) 组合去重。 Co-Authored-By: Claude Sonnet 4.6 --- .../tenant/service/FeatureServiceManager.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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; }