From c1d61f4ed5af1630b83bf6f3453e5ccf543d49f3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 8 Sep 2025 10:47:30 +0800 Subject: [PATCH] =?UTF-8?q?refactor(basic):=20=E9=87=8D=E6=9E=84=E6=99=AF?= =?UTF-8?q?=E5=8C=BA=E9=85=8D=E7=BD=AE=E8=8E=B7=E5=8F=96=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ScenicConfigIntegrationService 中使用 fallback 机制封装景区配置获取方法 - 优化 ScenicRepository 中的 getScenicConfigManager 方法,提高代码健壮性 --- .../ScenicConfigIntegrationService.java | 22 +++++++++++++++---- .../basic/repository/ScenicRepository.java | 7 +++--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicConfigIntegrationService.java b/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicConfigIntegrationService.java index abb3914..31f189e 100644 --- a/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicConfigIntegrationService.java +++ b/src/main/java/com/ycwl/basic/integration/scenic/service/ScenicConfigIntegrationService.java @@ -24,14 +24,28 @@ public class ScenicConfigIntegrationService { public List listConfigs(Long scenicId) { log.info("获取景区配置列表, scenicId: {}", scenicId); - CommonResponse> response = scenicConfigV2Client.listConfigs(scenicId); - return handleResponse(response, "获取景区配置列表失败"); + return fallbackService.executeWithFallback( + SERVICE_NAME, + "scenic:configs:" + scenicId, + () -> { + CommonResponse> response = scenicConfigV2Client.listConfigs(scenicId); + return handleResponse(response, "获取景区配置列表失败"); + }, + List.class + ); } public ScenicConfigV2DTO getConfigByKey(Long scenicId, String configKey) { log.info("根据键获取景区配置, scenicId: {}, configKey: {}", scenicId, configKey); - CommonResponse response = scenicConfigV2Client.getConfigByKey(scenicId, configKey); - return handleResponse(response, "根据键获取景区配置失败"); + return fallbackService.executeWithFallback( + SERVICE_NAME, + "scenic:config:" + scenicId + ":" + configKey, + () -> { + CommonResponse response = scenicConfigV2Client.getConfigByKey(scenicId, configKey); + return handleResponse(response, "根据键获取景区配置失败"); + }, + ScenicConfigV2DTO.class + ); } public Map getFlatConfigs(Long scenicId) { diff --git a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java index cdfa9bf..bd34640 100644 --- a/src/main/java/com/ycwl/basic/repository/ScenicRepository.java +++ b/src/main/java/com/ycwl/basic/repository/ScenicRepository.java @@ -24,7 +24,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; +import java.util.Collections; import java.util.List; +import java.util.Objects; @Component public class ScenicRepository { @@ -332,10 +334,7 @@ public class ScenicRepository { public ScenicConfigManager getScenicConfigManager(Long scenicId) { try { List configList = scenicConfigIntegrationService.listConfigs(scenicId); - if (configList != null) { - return new ScenicConfigManager(configList); - } - return null; + return new ScenicConfigManager(Objects.requireNonNullElse(configList, Collections.emptyList())); } catch (Exception e) { return null; }