You've already forked FrameTour-BE
feat(image): 引入图片来源和处理场景枚举支持
- 新增 ImageSource 枚举定义图片来源类型(IPC、相机、手机等) - 新增 PipelineScene 枚举定义管线处理场景(打印、增强等) - 在 PhotoProcessContext 中添加 scenicConfigManager、scene 和 source 字段 - 在 PrinterServiceImpl 中根据 sourceId 判断并设置图片来源 - 在 PrinterServiceImpl 中设置默认管线场景为图片打印 - 修改 prepareNormalPhotoContext 和 prepareStorageAdapter 方法签名 - 优化配置获取逻辑,统一从 context 中获取 scenicConfigManager
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user