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(
request.getSourceId(),
request.getScenicId(),
request.getPrinterId()
request.getPrinterId(),
request.getNeedEnhance()
);
return ApiResponse.success(result);
} catch (Exception e) {

View File

@@ -21,4 +21,9 @@ public class CreateVirtualOrderRequest {
* 打印机ID(可选)
*/
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, Boolean needEnhance);
FaceRecognizeResp useSample(Long userId, Long sampleId);
List<SourceEntity> autoAddPhotosToPreferPrint(Long faceId);
@@ -118,4 +120,15 @@ public interface PrinterService {
* @return 订单信息
*/
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
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) {
return;
}
@@ -1107,12 +1112,13 @@ public class PrinterServiceImpl implements PrinterService {
} catch (Exception e) {
throw new RuntimeException(e);
}
final Boolean finalNeedEnhance = needEnhance;
Thread.ofVirtual().start(() -> {
userPhotoListByOrderId.forEach(item -> {
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();
@@ -1654,6 +1660,11 @@ public class PrinterServiceImpl implements PrinterService {
@Override
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记录
SourceEntity source = sourceMapper.getEntity(sourceId);
FaceSampleEntity faceSample = faceSampleMapper.getEntity(source.getFaceSampleId());
@@ -1759,7 +1770,7 @@ public class PrinterServiceImpl implements PrinterService {
log.info("创建0元订单成功: orderId={}, virtualMemberId={}, faceId={}", orderId, virtualMemberId, faceId);
// 7. 触发购买后逻辑(调用setUserIsBuyItem)
setUserIsBuyItem(virtualMemberId, memberPrintId.longValue(), orderId);
setUserIsBuyItem(virtualMemberId, memberPrintId.longValue(), orderId, needEnhance);
log.info("触发购买后逻辑完成: orderId={}", orderId);
// 8. 返回结果