From d127ce785f072e540b161666a568e05fe7a3f469 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Wed, 17 Jun 2026 13:02:28 +0800 Subject: [PATCH] =?UTF-8?q?fix(update-service):=20=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=BC=80=E9=80=9A=E6=A3=80=E6=9F=A5=E6=94=B9=E4=B8=BA=E6=9F=A5?= =?UTF-8?q?=20t=5Ffeature=5Fservice.enabled=EF=BC=8C=E8=80=8C=E9=9D=9E=20e?= =?UTF-8?q?xistsByAppKey?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit existsByAppKey 在服务关闭但历史版本仍存在时会误判为已开通。 改为调 tenant-service 内部接口 /services/{platform}/UPDATE 查 enabled 字段。 Co-Authored-By: Claude Sonnet 4.6 --- .../controller/AppVersionController.java | 2 +- .../repository/AppVersionRepository.java | 2 -- .../update/service/UpdateTenantClient.java | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java b/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java index 40628cb..bfcc80d 100644 --- a/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java +++ b/update-service/src/main/java/com/xuqm/update/controller/AppVersionController.java @@ -75,7 +75,7 @@ public class AppVersionController { @RequestParam(required = false) String userId) { String resolvedAppKey = resolveAndValidate(appKey, platform, licenseFile); - boolean serviceActivated = versionRepository.existsByAppKey(resolvedAppKey); + boolean serviceActivated = tenantClient.isUpdateServiceEnabled(resolvedAppKey, platform.name()); boolean allowAnonymousCheck = publishConfigService.allowAnonymousUpdateCheck(resolvedAppKey); if (!serviceActivated) { diff --git a/update-service/src/main/java/com/xuqm/update/repository/AppVersionRepository.java b/update-service/src/main/java/com/xuqm/update/repository/AppVersionRepository.java index 092f8a6..7a42bb2 100644 --- a/update-service/src/main/java/com/xuqm/update/repository/AppVersionRepository.java +++ b/update-service/src/main/java/com/xuqm/update/repository/AppVersionRepository.java @@ -56,6 +56,4 @@ public interface AppVersionRepository extends JpaRepository findByAppKeyAndPlatformAndPackageNameAndVersionCodeAndPublishStatus( String appKey, AppVersionEntity.Platform platform, String packageName, int versionCode, AppVersionEntity.PublishStatus publishStatus); - - boolean existsByAppKey(String appKey); } diff --git a/update-service/src/main/java/com/xuqm/update/service/UpdateTenantClient.java b/update-service/src/main/java/com/xuqm/update/service/UpdateTenantClient.java index 51c07d5..37b5afa 100644 --- a/update-service/src/main/java/com/xuqm/update/service/UpdateTenantClient.java +++ b/update-service/src/main/java/com/xuqm/update/service/UpdateTenantClient.java @@ -32,6 +32,24 @@ public class UpdateTenantClient { return cache.computeIfAbsent(appKey, this::fetchPlatformInfo); } + public boolean isUpdateServiceEnabled(String appKey, String platform) { + String url = UriComponentsBuilder.fromHttpUrl(tenantServiceUrl) + .path("/api/internal/sdk/apps/{appKey}/services/{platform}/UPDATE") + .buildAndExpand(appKey, platform) + .toUriString(); + HttpHeaders headers = new HttpHeaders(); + headers.set("X-Internal-Token", internalToken); + try { + ResponseEntity response = restTemplate.exchange( + url, HttpMethod.GET, new HttpEntity<>(headers), JsonNode.class); + JsonNode data = response.getBody() == null ? null : response.getBody().path("data"); + if (response.getStatusCode().is2xxSuccessful() && data != null && !data.isMissingNode()) { + return data.path("enabled").asBoolean(false); + } + } catch (RestClientException ignored) {} + return false; + } + private PlatformInfo fetchPlatformInfo(String appKey) { String url = UriComponentsBuilder.fromHttpUrl(tenantServiceUrl) .path("/api/internal/sdk/apps/{appKey}/platform-info")