refactor(basic): 重构景区配置获取方法并优化配置管理初始化

- 在 ScenicConfigIntegrationService 中使用 fallback 机制封装景区配置获取方法
- 优化 ScenicRepository 中的 getScenicConfigManager 方法,提高代码健壮性
This commit is contained in:
2025-09-08 10:47:30 +08:00
parent c3101ceb6b
commit c1d61f4ed5
2 changed files with 21 additions and 8 deletions

View File

@@ -24,14 +24,28 @@ public class ScenicConfigIntegrationService {
public List<ScenicConfigV2DTO> listConfigs(Long scenicId) {
log.info("获取景区配置列表, scenicId: {}", scenicId);
CommonResponse<List<ScenicConfigV2DTO>> response = scenicConfigV2Client.listConfigs(scenicId);
return handleResponse(response, "获取景区配置列表失败");
return fallbackService.executeWithFallback(
SERVICE_NAME,
"scenic:configs:" + scenicId,
() -> {
CommonResponse<List<ScenicConfigV2DTO>> response = scenicConfigV2Client.listConfigs(scenicId);
return handleResponse(response, "获取景区配置列表失败");
},
List.class
);
}
public ScenicConfigV2DTO getConfigByKey(Long scenicId, String configKey) {
log.info("根据键获取景区配置, scenicId: {}, configKey: {}", scenicId, configKey);
CommonResponse<ScenicConfigV2DTO> response = scenicConfigV2Client.getConfigByKey(scenicId, configKey);
return handleResponse(response, "根据键获取景区配置失败");
return fallbackService.executeWithFallback(
SERVICE_NAME,
"scenic:config:" + scenicId + ":" + configKey,
() -> {
CommonResponse<ScenicConfigV2DTO> response = scenicConfigV2Client.getConfigByKey(scenicId, configKey);
return handleResponse(response, "根据键获取景区配置失败");
},
ScenicConfigV2DTO.class
);
}
public Map<String, Object> getFlatConfigs(Long scenicId) {

View File

@@ -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<ScenicConfigV2DTO> 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;
}