fix(tenant): listByApp 按平台去重,返回每个平台的服务记录
原实现按 serviceType findFirst,导致同一 serviceType 下不同平台 的配置(如 ANDROID/IOS/HARMONY PUSH)只返回第一条,ANDROID 推送 配置对外不可见。改为按 (serviceType, platform) 组合去重。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
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)) {
|
||||
for (FeatureServiceEntity.Platform platform : FeatureServiceEntity.Platform.values()) {
|
||||
services.stream()
|
||||
.filter(service -> service.getServiceType() == serviceType)
|
||||
.filter(s -> s.getServiceType() == serviceType && s.getPlatform() == platform)
|
||||
.findFirst()
|
||||
.ifPresent(normalized::add);
|
||||
.ifPresent(s -> {
|
||||
String key = serviceType + ":" + platform;
|
||||
if (seen.add(key)) normalized.add(s);
|
||||
});
|
||||
}
|
||||
}
|
||||
return normalized.isEmpty() ? services : normalized;
|
||||
}
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户