From 554f55a7c1d26a244c2738038cc5bdce7ed3f4cb Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 6 Dec 2025 21:06:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(storage):=20=E9=9B=86=E6=88=90=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=AD=98=E5=82=A8=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入ScenicConfigManager以支持景区级别的存储配置 - 添加StorageFactory和IStorageAdapter以实现灵活的存储适配 - 在图像处理流程中集成存储适配器的初始化逻辑 - 支持从配置中加载存储类型和相关参数 - 提供降级机制,默认使用assets存储适配器 - 增强SourceRepository对存储配置的依赖注入支持 --- .../ycwl/basic/repository/SourceRepository.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/com/ycwl/basic/repository/SourceRepository.java b/src/main/java/com/ycwl/basic/repository/SourceRepository.java index 0f42c810..254ee793 100644 --- a/src/main/java/com/ycwl/basic/repository/SourceRepository.java +++ b/src/main/java/com/ycwl/basic/repository/SourceRepository.java @@ -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 -> {