From 249da309a34ea613bacf88af8445929edc89d502 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Tue, 5 May 2026 22:02:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(push):=20=E6=B7=BB=E5=8A=A0=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E6=9C=8D=E5=8A=A1=E5=8A=9F=E8=83=BD=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现了 ConversationViewModel 来管理对话列表的刷新和状态 - 集成了 FCM 推送服务支持并实现了自动令牌获取机制 - 构建了完整的 PushSDK 推送系统,支持华为、小米、OPPO、VIVO、荣耀等厂商推送 - 添加了推送配置管理和设备注册/注销功能 - 实现了跨平台推送令牌管理和服务绑定逻辑 - 扩展了服务器端功能服务管理器以支持推送服务激活请求流程 --- .../tenant/service/FeatureServiceManager.java | 17 +++++++++++++---- 1 file changed, 13 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 666c5b2..8c3709b 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 @@ -8,6 +8,7 @@ import com.xuqm.common.exception.BusinessException; import com.xuqm.tenant.entity.FeatureServiceEntity; import com.xuqm.tenant.entity.ServiceActivationRequestEntity; import com.xuqm.tenant.entity.ServiceActivationRequestEntity.Status; +import com.xuqm.tenant.repository.AppRepository; import com.xuqm.tenant.repository.FeatureServiceRepository; import com.xuqm.tenant.repository.ServiceActivationRequestRepository; import org.springframework.stereotype.Service; @@ -23,13 +24,16 @@ public class FeatureServiceManager { private final FeatureServiceRepository repository; private final ServiceActivationRequestRepository requestRepository; + private final AppRepository appRepository; private final ObjectMapper objectMapper; public FeatureServiceManager(FeatureServiceRepository repository, ServiceActivationRequestRepository requestRepository, + AppRepository appRepository, ObjectMapper objectMapper) { this.repository = repository; this.requestRepository = requestRepository; + this.appRepository = appRepository; this.objectMapper = objectMapper; } @@ -121,13 +125,18 @@ public class FeatureServiceManager { req.setReviewedAt(LocalDateTime.now()); requestRepository.save(req); + // Normalize to appKey so SdkConfigController queries are consistent + String normalizedAppId = appRepository.findById(req.getAppId()) + .map(app -> app.getAppKey()) + .orElse(req.getAppId()); + if (isAppWideService(req.getServiceType())) { - List services = repository.findByAppIdAndServiceType(req.getAppId(), req.getServiceType()); + List services = repository.findByAppIdAndServiceType(normalizedAppId, req.getServiceType()); if (services.isEmpty()) { for (FeatureServiceEntity.Platform platform : FeatureServiceEntity.Platform.values()) { FeatureServiceEntity created = new FeatureServiceEntity(); created.setId(UUID.randomUUID().toString()); - created.setAppId(req.getAppId()); + created.setAppId(normalizedAppId); created.setPlatform(platform); created.setServiceType(req.getServiceType()); created.setEnabled(true); @@ -142,11 +151,11 @@ public class FeatureServiceManager { } FeatureServiceEntity entity = repository - .findByAppIdAndPlatformAndServiceType(req.getAppId(), req.getPlatform(), req.getServiceType()) + .findByAppIdAndPlatformAndServiceType(normalizedAppId, req.getPlatform(), req.getServiceType()) .orElseGet(() -> { FeatureServiceEntity e = new FeatureServiceEntity(); e.setId(UUID.randomUUID().toString()); - e.setAppId(req.getAppId()); + e.setAppId(normalizedAppId); e.setPlatform(req.getPlatform()); e.setServiceType(req.getServiceType()); e.setCreatedAt(LocalDateTime.now());