feat(storage): 集成动态存储配置管理

- 引入ScenicConfigManager以支持景区级别的存储配置
- 添加StorageFactory和IStorageAdapter以实现灵活的存储适配
- 在图像处理流程中集成存储适配器的初始化逻辑
- 支持从配置中加载存储类型和相关参数
- 提供降级机制,默认使用assets存储适配器
- 增强SourceRepository对存储配置的依赖注入支持
This commit is contained in:
2025-12-06 21:06:22 +08:00
parent f71149fd06
commit 554f55a7c1

View File

@@ -6,6 +6,7 @@ import com.ycwl.basic.image.pipeline.enums.ImageSource;
import com.ycwl.basic.image.pipeline.enums.ImageType;
import com.ycwl.basic.image.pipeline.enums.PipelineScene;
import com.ycwl.basic.image.pipeline.stages.*;
import com.ycwl.basic.integration.common.manager.ScenicConfigManager;
import com.ycwl.basic.mapper.SourceMapper;
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
import com.ycwl.basic.model.pc.source.entity.MemberSourceEntity;
@@ -16,6 +17,9 @@ import com.ycwl.basic.pipeline.core.PipelineBuilder;
import com.ycwl.basic.pricing.dto.VoucherInfo;
import com.ycwl.basic.pricing.enums.VoucherDiscountType;
import com.ycwl.basic.pricing.service.IVoucherService;
import com.ycwl.basic.storage.StorageFactory;
import com.ycwl.basic.storage.adapters.IStorageAdapter;
import com.ycwl.basic.storage.exceptions.StorageUnsupportedException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
@@ -43,6 +47,8 @@ public class SourceRepository {
private DeviceRepository deviceRepository;
@Autowired
private MemberRelationRepository memberRelationRepository;
@Autowired
private ScenicRepository scenicRepository;
public void addSource(SourceEntity source) {
sourceMapper.add(source);
@@ -127,6 +133,15 @@ public class SourceRepository {
.build();
context.enableStage("image_sr");
context.enableStage("image_enhance");
ScenicConfigManager configManager = scenicRepository.getScenicConfigManager(source.getScenicId());
IStorageAdapter adapter;
try {
adapter = StorageFactory.get(configManager.getString("store_type"));
adapter.loadConfig(configManager.getObject("store_config_json", Map.class));
} catch (StorageUnsupportedException ignored) {
adapter = StorageFactory.use("assets");
}
context.setStorageAdapter(adapter);
// 2. 设置结果URL回调 - 更新source记录
context.setResultUrlCallback(newUrl -> {