refactor(repository):重构景区配置管理逻辑- 引入 ScenicConfigManager 管理配置信息

- 移除手动构建 configMap 的逻辑
- 修改 convertToScenicEntity 方法签名,支持传入配置管理器
- 使用 configManager 替代直接从 DTO 获取配置值的方式
- 统一配置项获取方式,增强代码可维护性与扩展性
This commit is contained in:
2025-10-11 00:10:25 +08:00
parent 99857db006
commit d68b062951

View File

@@ -54,15 +54,7 @@ public class ScenicRepository {
public ScenicEntity getScenic(Long id) {
// 分别获取景区基础信息和配置信息
ScenicV2DTO scenicBasic = scenicIntegrationService.getScenic(id);
List<ScenicConfigV2DTO> configList = scenicConfigIntegrationService.listConfigs(id);
// 将配置列表转换为Map
Map<String, Object> configMap = new HashMap<>();
if (configList != null) {
for (ScenicConfigV2DTO config : configList) {
configMap.put(config.getConfigKey(), config.getConfigValue());
}
}
ScenicConfigManager configManager = getScenicConfigManager(id);
// 手动组合成WithConfig对象用于转换
ScenicV2WithConfigDTO scenicWithConfig = new ScenicV2WithConfigDTO();
@@ -70,9 +62,8 @@ public class ScenicRepository {
scenicWithConfig.setName(scenicBasic.getName());
scenicWithConfig.setMpId(scenicBasic.getMpId());
scenicWithConfig.setStatus(scenicBasic.getStatus());
scenicWithConfig.setConfig(configMap);
ScenicEntity scenicEntity = convertToScenicEntity(scenicWithConfig);
ScenicEntity scenicEntity = convertToScenicEntity(scenicWithConfig, configManager);
return scenicEntity;
}
@@ -239,7 +230,7 @@ public class ScenicRepository {
}
}
private ScenicEntity convertToScenicEntity(ScenicV2WithConfigDTO dto) {
private ScenicEntity convertToScenicEntity(ScenicV2WithConfigDTO dto, ScenicConfigManager configManager) {
if (dto == null) {
return null;
}
@@ -248,19 +239,17 @@ public class ScenicRepository {
entity.setName(dto.getName());
entity.setMpId(dto.getMpId());
entity.setStatus(dto.getStatus().toString());
if (dto.getConfig() != null) {
entity.setAddress(ConfigValueUtil.getStringValue(dto.getConfig(), "address"));
entity.setArea(ConfigValueUtil.getStringValue(dto.getConfig(), "area"));
entity.setCity(ConfigValueUtil.getStringValue(dto.getConfig(), "city"));
entity.setProvince(ConfigValueUtil.getStringValue(dto.getConfig(), "province"));
entity.setLatitude(ConfigValueUtil.getBigDecimalValue(dto.getConfig(), "latitude"));
entity.setLongitude(ConfigValueUtil.getBigDecimalValue(dto.getConfig(), "longitude"));
entity.setRadius(ConfigValueUtil.getBigDecimalValue(dto.getConfig(), "radius"));
entity.setPhone(ConfigValueUtil.getStringValue(dto.getConfig(), "phone"));
entity.setLogoUrl(ConfigValueUtil.getStringValue(dto.getConfig(), "logoUrl"));
entity.setCoverUrl(ConfigValueUtil.getStringValue(dto.getConfig(), "coverUrl"));
entity.setKfCodeUrl(ConfigValueUtil.getStringValue(dto.getConfig(), "kfCodeUrl"));
}
entity.setAddress(configManager.getString("address"));
entity.setArea(configManager.getString("area"));
entity.setCity(configManager.getString("city"));
entity.setProvince(configManager.getString("province"));
entity.setLatitude(configManager.getBigDecimal("latitude"));
entity.setLongitude(configManager.getBigDecimal("longitude"));
entity.setRadius(configManager.getBigDecimal("radius"));
entity.setPhone(configManager.getString("phone"));
entity.setLogoUrl(configManager.getString("logo_url"));
entity.setCoverUrl(configManager.getString("cover_url"));
entity.setKfCodeUrl(configManager.getString("kf_code_url"));
return entity;
}