feat(printer): 添加图像增强功能支持

- 在CreateVirtualOrderRequest中新增needEnhance字段
- 修改createVirtualOrder方法支持图像增强参数传递
- 更新setUserIsBuyItem方法以支持图像增强选项
- 在processPhotoWithPipeline调用中传入图像增强参数
- 为虚拟订单创建流程添加图像增强功能支持
This commit is contained in:
2026-01-10 14:12:25 +08:00
parent 42000df311
commit 74c146c104
4 changed files with 33 additions and 3 deletions

View File

@@ -64,7 +64,8 @@ public class SourceController {
Map<String, Object> result = printerService.createVirtualOrder( Map<String, Object> result = printerService.createVirtualOrder(
request.getSourceId(), request.getSourceId(),
request.getScenicId(), request.getScenicId(),
request.getPrinterId() request.getPrinterId(),
request.getNeedEnhance()
); );
return ApiResponse.success(result); return ApiResponse.success(result);
} catch (Exception e) { } catch (Exception e) {

View File

@@ -21,4 +21,9 @@ public class CreateVirtualOrderRequest {
* 打印机ID(可选) * 打印机ID(可选)
*/ */
private Integer printerId; private Integer printerId;
/**
* 是否需要图像增强(可选,默认不增强)
*/
private Boolean needEnhance;
} }

View File

@@ -60,6 +60,8 @@ public interface PrinterService {
void setUserIsBuyItem(Long memberId, Long id, Long orderId); void setUserIsBuyItem(Long memberId, Long id, Long orderId);
void setUserIsBuyItem(Long memberId, Long id, Long orderId, Boolean needEnhance);
FaceRecognizeResp useSample(Long userId, Long sampleId); FaceRecognizeResp useSample(Long userId, Long sampleId);
List<SourceEntity> autoAddPhotosToPreferPrint(Long faceId); List<SourceEntity> autoAddPhotosToPreferPrint(Long faceId);
@@ -118,4 +120,15 @@ public interface PrinterService {
* @return 订单信息 * @return 订单信息
*/ */
Map<String, Object> createVirtualOrder(Long sourceId, Long scenicId, Integer printerId); Map<String, Object> createVirtualOrder(Long sourceId, Long scenicId, Integer printerId);
/**
* 创建虚拟用户0元订单(支持图像增强选项)
*
* @param sourceId source记录ID
* @param scenicId 景区ID
* @param printerId 打印机ID(可选)
* @param needEnhance 是否需要图像增强(可选)
* @return 订单信息
*/
Map<String, Object> createVirtualOrder(Long sourceId, Long scenicId, Integer printerId, Boolean needEnhance);
} }

View File

@@ -1089,6 +1089,11 @@ public class PrinterServiceImpl implements PrinterService {
@Override @Override
public void setUserIsBuyItem(Long memberId, Long id, Long orderId) { public void setUserIsBuyItem(Long memberId, Long id, Long orderId) {
setUserIsBuyItem(memberId, id, orderId, null);
}
@Override
public void setUserIsBuyItem(Long memberId, Long id, Long orderId, Boolean needEnhance) {
if (redisTemplate.opsForValue().get(USER_PHOTO_LIST_TO_PRINTER + memberId + ":" + orderId) != null) { if (redisTemplate.opsForValue().get(USER_PHOTO_LIST_TO_PRINTER + memberId + ":" + orderId) != null) {
return; return;
} }
@@ -1107,12 +1112,13 @@ public class PrinterServiceImpl implements PrinterService {
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
final Boolean finalNeedEnhance = needEnhance;
Thread.ofVirtual().start(() -> { Thread.ofVirtual().start(() -> {
userPhotoListByOrderId.forEach(item -> { userPhotoListByOrderId.forEach(item -> {
PrinterEntity printer = printerMapper.getById(item.getPrinterId()); PrinterEntity printer = printerMapper.getById(item.getPrinterId());
// 使用管线处理照片 // 使用管线处理照片
String printUrl = processPhotoWithPipeline(item, item.getScenicId(), qrCodeFile); String printUrl = processPhotoWithPipeline(item, item.getScenicId(), qrCodeFile, finalNeedEnhance);
// 根据数量创建多个打印任务 // 根据数量创建多个打印任务
Integer quantity = item.getQuantity(); Integer quantity = item.getQuantity();
@@ -1654,6 +1660,11 @@ public class PrinterServiceImpl implements PrinterService {
@Override @Override
public Map<String, Object> createVirtualOrder(Long sourceId, Long scenicId, Integer printerId) { public Map<String, Object> createVirtualOrder(Long sourceId, Long scenicId, Integer printerId) {
return createVirtualOrder(sourceId, scenicId, printerId, null);
}
@Override
public Map<String, Object> createVirtualOrder(Long sourceId, Long scenicId, Integer printerId, Boolean needEnhance) {
// 1. 查询source记录 // 1. 查询source记录
SourceEntity source = sourceMapper.getEntity(sourceId); SourceEntity source = sourceMapper.getEntity(sourceId);
FaceSampleEntity faceSample = faceSampleMapper.getEntity(source.getFaceSampleId()); FaceSampleEntity faceSample = faceSampleMapper.getEntity(source.getFaceSampleId());
@@ -1759,7 +1770,7 @@ public class PrinterServiceImpl implements PrinterService {
log.info("创建0元订单成功: orderId={}, virtualMemberId={}, faceId={}", orderId, virtualMemberId, faceId); log.info("创建0元订单成功: orderId={}, virtualMemberId={}, faceId={}", orderId, virtualMemberId, faceId);
// 7. 触发购买后逻辑(调用setUserIsBuyItem) // 7. 触发购买后逻辑(调用setUserIsBuyItem)
setUserIsBuyItem(virtualMemberId, memberPrintId.longValue(), orderId); setUserIsBuyItem(virtualMemberId, memberPrintId.longValue(), orderId, needEnhance);
log.info("触发购买后逻辑完成: orderId={}", orderId); log.info("触发购买后逻辑完成: orderId={}", orderId);
// 8. 返回结果 // 8. 返回结果