refactor(basic): 重构景区配置管理逻辑

- 移除 AppOrderV2Controller 中的价格缓存逻辑
- 修正 VoucherServiceImpl 中的购买数量计算方式- 重构 ScenicRepository 中的景区配置获取逻辑
-增加 ScenicConfigManager 的扁平化配置和驼峰转换功能
This commit is contained in:
2025-08-30 16:21:40 +08:00
parent 047feec045
commit ada7158a48
4 changed files with 133 additions and 31 deletions

View File

@@ -97,28 +97,71 @@ public class ScenicRepository {
}
public ScenicConfigEntity getScenicConfig(Long scenicId) {
String key = String.format(SCENIC_CONFIG_CACHE_KEY, scenicId);
try {
ScenicV2WithConfigDTO scenicWithConfigDTO = scenicIntegrationService.getScenicWithConfig(scenicId);
ScenicConfigEntity configEntity = convertToScenicConfigEntity(scenicWithConfigDTO, scenicId);
// 请求成功,写入缓存
if (configEntity != null) {
redisTemplate.opsForValue().set(
key,
JacksonUtil.toJSONString(configEntity)
);
}
return configEntity;
} catch (Exception e) {
// 请求失败,尝试从缓存获取历史成功数据
String cacheKey = key;
if (redisTemplate.hasKey(cacheKey)) {
return JacksonUtil.parseObject(redisTemplate.opsForValue().get(cacheKey), ScenicConfigEntity.class);
}
// 缓存也没有,返回null
return null;
}
ScenicConfigManager scenicConfigManager = getScenicConfigManager(scenicId);
ScenicConfigEntity config = new ScenicConfigEntity();
// 基础配置
config.setScenicId(scenicId);
// 业务流程配置
config.setBookRoutine(scenicConfigManager.getInteger("book_routine"));
config.setForceFinishTime(scenicConfigManager.getInteger("force_finish_time"));
config.setTourTime(scenicConfigManager.getInteger("tour_time"));
// 存储时间配置
config.setSampleStoreDay(scenicConfigManager.getInteger("sample_store_day"));
config.setFaceStoreDay(scenicConfigManager.getInteger("face_store_day"));
config.setVideoStoreDay(scenicConfigManager.getInteger("video_store_day"));
config.setVideoSourceStoreDay(scenicConfigManager.getInteger("video_source_store_day"));
config.setImageSourceStoreDay(scenicConfigManager.getInteger("image_source_store_day"));
config.setUserSourceExpireDay(scenicConfigManager.getInteger("user_source_expire_day"));
// 功能开关配置
config.setAllFree(scenicConfigManager.getBoolean("all_free"));
config.setDisableSourceVideo(scenicConfigManager.getBoolean("disable_source_video"));
config.setDisableSourceImage(scenicConfigManager.getBoolean("disable_source_image"));
config.setVoucherEnable(scenicConfigManager.getBoolean("voucher_enable"));
// 模板和防录屏配置
config.setTemplateNewVideoType(scenicConfigManager.getInteger("template_new_video_type"));
config.setAntiScreenRecordType(scenicConfigManager.getInteger("anti_screen_record_type"));
// 人脸识别配置
config.setFaceScoreThreshold(scenicConfigManager.getFloat("face_score_threshold"));
config.setFaceDetectHelperThreshold(scenicConfigManager.getInteger("face_detect_helper_threshold"));
config.setFaceType(scenicConfigManager.getEnum("face_type", FaceBodyAdapterType.class));
config.setFaceConfigJson(scenicConfigManager.getString("face_config_json"));
// 存储配置
config.setStoreType(scenicConfigManager.getEnum("store_type", StorageType.class));
config.setStoreConfigJson(scenicConfigManager.getString("store_config_json"));
config.setTmpStoreType(scenicConfigManager.getEnum("tmp_store_type", StorageType.class));
config.setTmpStoreConfigJson(scenicConfigManager.getString("tmp_store_config_json"));
config.setLocalStoreType(scenicConfigManager.getEnum("local_store_type", StorageType.class));
config.setLocalStoreConfigJson(scenicConfigManager.getString("local_store_config_json"));
// 支付配置
config.setPayType(scenicConfigManager.getEnum("pay_type", PayAdapterType.class));
config.setPayConfigJson(scenicConfigManager.getString("pay_config_json"));
// 推客配置
config.setBrokerDirectRate(scenicConfigManager.getBigDecimal("broker_direct_rate"));
// 水印配置
config.setWatermarkType(scenicConfigManager.getString("watermark_type"));
config.setWatermarkScenicText(scenicConfigManager.getString("watermark_scenic_text"));
config.setWatermarkDtFormat(scenicConfigManager.getString("watermark_dt_format"));
// 提示信息配置
config.setImageSourcePackHint(scenicConfigManager.getString("image_source_pack_hint"));
config.setVideoSourcePackHint(scenicConfigManager.getString("video_source_pack_hint"));
config.setExtraNotificationTime(scenicConfigManager.getString("extra_notification_time"));
// 免费数量配置
config.setPhotoFreeNum(scenicConfigManager.getInteger("photo_free_num"));
config.setVideoFreeNum(scenicConfigManager.getInteger("video_free_num"));
return config;
}
public MpConfigEntity getScenicMpConfig(Long scenicId) {