feat(image): 引入图片来源和处理场景枚举支持

- 新增 ImageSource 枚举定义图片来源类型(IPC、相机、手机等)
- 新增 PipelineScene 枚举定义管线处理场景(打印、增强等)
- 在 PhotoProcessContext 中添加 scenicConfigManager、scene 和 source 字段
- 在 PrinterServiceImpl 中根据 sourceId 判断并设置图片来源
- 在 PrinterServiceImpl 中设置默认管线场景为图片打印
- 修改 prepareNormalPhotoContext 和 prepareStorageAdapter 方法签名
- 优化配置获取逻辑,统一从 context 中获取 scenicConfigManager
This commit is contained in:
2025-11-24 23:54:22 +08:00
parent e418a5ccdb
commit 4a86849372
4 changed files with 170 additions and 5 deletions

View File

@@ -7,6 +7,8 @@ import com.ycwl.basic.exception.BaseException;
import com.ycwl.basic.image.pipeline.core.PhotoProcessContext;
import com.ycwl.basic.image.pipeline.core.Pipeline;
import com.ycwl.basic.image.pipeline.core.PipelineBuilder;
import com.ycwl.basic.image.pipeline.enums.ImageSource;
import com.ycwl.basic.image.pipeline.enums.PipelineScene;
import com.ycwl.basic.image.pipeline.stages.CleanupStage;
import com.ycwl.basic.image.pipeline.stages.ConditionalRotateStage;
import com.ycwl.basic.image.pipeline.stages.DownloadStage;
@@ -778,12 +780,29 @@ public class PrinterServiceImpl implements PrinterService {
context.setQrcodeFile(qrCodeFile);
try {
// 设置景区配置管理器到context
ScenicConfigManager scenicConfig = scenicRepository.getScenicConfigManager(scenicId);
context.setScenicConfigManager(scenicConfig);
// 设置管线场景为图片打印
context.setScene(PipelineScene.IMAGE_PRINT);
// 根据sourceId判断图片来源
// sourceId > 0: IPC设备拍摄
// sourceId == null: 手机上传
// sourceId == 0: 拼图(暂定为UNKNOWN)
if (item.getSourceId() != null && item.getSourceId() > 0) {
context.setSource(ImageSource.IPC);
} else if (item.getSourceId() == null) {
context.setSource(ImageSource.PHONE);
} else {
context.setSource(ImageSource.UNKNOWN);
}
if (context.isNormalPhoto()) {
prepareNormalPhotoContext(context, scenicConfig);
prepareNormalPhotoContext(context);
} else if (context.isPuzzle()) {
prepareStorageAdapter(context, scenicConfig);
prepareStorageAdapter(context);
}
Pipeline<PhotoProcessContext> pipeline = context.isPuzzle()
@@ -813,8 +832,15 @@ public class PrinterServiceImpl implements PrinterService {
/**
* 准备普通照片的Context配置
* 从context中的scenicConfigManager获取配置
*/
private void prepareNormalPhotoContext(PhotoProcessContext context, ScenicConfigManager scenicConfig) {
private void prepareNormalPhotoContext(PhotoProcessContext context) {
ScenicConfigManager scenicConfig = context.getScenicConfigManager();
if (scenicConfig == null) {
log.warn("scenicConfigManager未设置,跳过配置准备");
return;
}
String printWatermarkType = scenicConfig.getString("print_watermark_type");
if (StringUtils.isNotBlank(printWatermarkType)) {
ImageWatermarkOperatorEnum watermarkType = ImageWatermarkOperatorEnum.getByCode(printWatermarkType);
@@ -827,13 +853,20 @@ public class PrinterServiceImpl implements PrinterService {
String dateFormat = scenicConfig.getString("print_watermark_dt_format", "yyyy.MM.dd");
context.setDateFormat(dateFormat);
prepareStorageAdapter(context, scenicConfig);
prepareStorageAdapter(context);
}
/**
* 准备存储适配器
* 从context中的scenicConfigManager获取配置
*/
private void prepareStorageAdapter(PhotoProcessContext context, ScenicConfigManager scenicConfig) {
private void prepareStorageAdapter(PhotoProcessContext context) {
ScenicConfigManager scenicConfig = context.getScenicConfigManager();
if (scenicConfig == null) {
log.warn("scenicConfigManager未设置,将使用默认存储");
return;
}
try {
String storeType = scenicConfig.getString("store_type");
if (storeType != null) {