refactor(pc): 重构景区配置管理

- 引入 ScenicConfigManager 类替代 ScenicConfigEntity
- 优化景区存储、临时存储、本地存储、人脸身体识别和支付适配器的获取逻辑
- 使用 getString 和 getObject 方法替代直接解析 JSON 对象
This commit is contained in:
2025-08-28 15:57:36 +08:00
parent f451b835b9
commit 46fb255e66

View File

@@ -12,6 +12,7 @@ import com.ycwl.basic.service.pc.ScenicService;
import com.ycwl.basic.storage.StorageFactory; import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter; import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.exceptions.StorageUnsupportedException; import com.ycwl.basic.storage.exceptions.StorageUnsupportedException;
import com.ycwl.basic.util.ScenicConfigManager;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.JacksonUtil; import com.ycwl.basic.utils.JacksonUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -43,11 +44,11 @@ public class ScenicServiceImpl implements ScenicService {
public IStorageAdapter getScenicStorageAdapter(Long scenicId) { public IStorageAdapter getScenicStorageAdapter(Long scenicId) {
return scenicStorageAdapterMap.computeIfAbsent(scenicId, (key) -> { return scenicStorageAdapterMap.computeIfAbsent(scenicId, (key) -> {
IStorageAdapter adapter; IStorageAdapter adapter;
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
if (scenicConfig != null && scenicConfig.getStoreType() != null) { if (scenicConfig.getString("store_type") != null) {
try { try {
adapter = StorageFactory.get(scenicConfig.getStoreType()); adapter = StorageFactory.get(scenicConfig.getString("store_type"));
adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getStoreConfigJson(), Map.class)); adapter.loadConfig(scenicConfig.getObject("store_config_json", Map.class));
} catch (StorageUnsupportedException ignored) { } catch (StorageUnsupportedException ignored) {
return StorageFactory.use("video"); return StorageFactory.use("video");
} }
@@ -62,11 +63,11 @@ public class ScenicServiceImpl implements ScenicService {
public IStorageAdapter getScenicTmpStorageAdapter(Long scenicId) { public IStorageAdapter getScenicTmpStorageAdapter(Long scenicId) {
return scenicTmpStorageAdapterMap.computeIfAbsent(scenicId, (key) -> { return scenicTmpStorageAdapterMap.computeIfAbsent(scenicId, (key) -> {
IStorageAdapter adapter; IStorageAdapter adapter;
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
if (scenicConfig != null && scenicConfig.getTmpStoreType() != null) { if (scenicConfig.getString("tmp_store_type") != null) {
try { try {
adapter = StorageFactory.get(scenicConfig.getTmpStoreType()); adapter = StorageFactory.get(scenicConfig.getString("tmp_store_type"));
adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getTmpStoreConfigJson(), Map.class)); adapter.loadConfig(scenicConfig.getObject("tmp_store_config_json", Map.class));
} catch (StorageUnsupportedException ignored) { } catch (StorageUnsupportedException ignored) {
return getScenicStorageAdapter(scenicId); return getScenicStorageAdapter(scenicId);
} }
@@ -81,11 +82,11 @@ public class ScenicServiceImpl implements ScenicService {
public IStorageAdapter getScenicLocalStorageAdapter(Long scenicId) { public IStorageAdapter getScenicLocalStorageAdapter(Long scenicId) {
return scenicLocalStorageAdapterMap.computeIfAbsent(scenicId, (key) -> { return scenicLocalStorageAdapterMap.computeIfAbsent(scenicId, (key) -> {
IStorageAdapter adapter; IStorageAdapter adapter;
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
if (scenicConfig != null && scenicConfig.getLocalStoreType() != null) { if (scenicConfig.getString("local_store_type") != null) {
try { try {
adapter = StorageFactory.get(scenicConfig.getLocalStoreType()); adapter = StorageFactory.get(scenicConfig.getString("local_store_type"));
adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getLocalStoreConfigJson(), Map.class)); adapter.loadConfig(scenicConfig.getObject("local_store_config_json", Map.class));
} catch (StorageUnsupportedException ignored) { } catch (StorageUnsupportedException ignored) {
return getScenicStorageAdapter(scenicId); return getScenicStorageAdapter(scenicId);
} }
@@ -101,10 +102,10 @@ public class ScenicServiceImpl implements ScenicService {
public IFaceBodyAdapter getScenicFaceBodyAdapter(Long scenicId) { public IFaceBodyAdapter getScenicFaceBodyAdapter(Long scenicId) {
return scenicFaceBodyAdapterMap.computeIfAbsent(scenicId, (key) -> { return scenicFaceBodyAdapterMap.computeIfAbsent(scenicId, (key) -> {
IFaceBodyAdapter adapter; IFaceBodyAdapter adapter;
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
if (scenicConfig != null && scenicConfig.getFaceType() != null) { if (scenicConfig.getString("face_type") != null) {
adapter = FaceBodyFactory.getAdapter(scenicConfig.getFaceType()); adapter = FaceBodyFactory.getAdapter(scenicConfig.getString("face_type"));
adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getFaceConfigJson(), Map.class)); adapter.loadConfig(scenicConfig.getObject("face_config_json", Map.class));
} else { } else {
adapter = FaceBodyFactory.use(); adapter = FaceBodyFactory.use();
} }
@@ -117,10 +118,10 @@ public class ScenicServiceImpl implements ScenicService {
public IPayAdapter getScenicPayAdapter(Long scenicId) { public IPayAdapter getScenicPayAdapter(Long scenicId) {
return scenicPayAdapterMap.computeIfAbsent(scenicId, (key) -> { return scenicPayAdapterMap.computeIfAbsent(scenicId, (key) -> {
IPayAdapter adapter; IPayAdapter adapter;
ScenicConfigEntity scenicConfig = scenicRepository.getScenicConfig(scenicId); ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
if (scenicConfig != null && scenicConfig.getPayType() != null) { if (scenicConfig.getString("pay_type") != null) {
adapter = PayFactory.getAdapter(scenicConfig.getPayType()); adapter = PayFactory.getAdapter(scenicConfig.getString("pay_type"));
adapter.loadConfig(JacksonUtil.parseObject(scenicConfig.getPayConfigJson(), Map.class)); adapter.loadConfig(scenicConfig.getObject("pay_config_json", Map.class));
} else { } else {
adapter = PayFactory.use(); adapter = PayFactory.use();
} }