fix(tenant): listByApp 按平台去重,返回每个平台的服务记录

原实现按 serviceType findFirst,导致同一 serviceType 下不同平台
的配置(如 ANDROID/IOS/HARMONY PUSH)只返回第一条,ANDROID 推送
配置对外不可见。改为按 (serviceType, platform) 组合去重。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-06-26 16:16:44 +08:00
父节点 6830237a0e
当前提交 a20dd0db16

查看文件

@ -59,7 +59,9 @@ public class FeatureServiceManager {
return services;
}
// Deduplicate by (serviceType, platform) preserve each platform's service record
List<FeatureServiceEntity> normalized = new ArrayList<>();
java.util.Set<String> 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;
}