From 96d001dfc0ccd0651ba8860cc79b0fe9e0dc56e3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 7 Nov 2025 20:32:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(printer):=20=E6=96=B0=E5=A2=9E=E6=A0=B7?= =?UTF-8?q?=E5=93=81=E4=BD=BF=E7=94=A8=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=89=93=E5=8D=B0=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AppPrinterController中新增/useSample接口用于使用样品- PrinterServiceImpl中实现生成微信小程序二维码逻辑 - 更新setUserIsBuyItem方法签名以支持异常抛出- 添加useSample方法占位实现 - 引入相关依赖类如MpConfigEntity、OrderRepository和WxMpUtil --- .../mobile/AppPrinterController.java | 6 ++++++ .../basic/service/printer/PrinterService.java | 2 ++ .../printer/impl/PrinterServiceImpl.java | 21 +++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java b/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java index 20cb34b9..b45e38ff 100644 --- a/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java +++ b/src/main/java/com/ycwl/basic/controller/mobile/AppPrinterController.java @@ -36,6 +36,12 @@ public class AppPrinterController { return ApiResponse.success(printerService.listByScenicId(scenicId)); } + @PostMapping("/useSample/{sampleId}") + public ApiResponse useSample(@PathVariable("sampleId") Long sampleId) throws IOException { + JwtInfo worker = JwtTokenUtil.getWorker(); + return ApiResponse.success(printerService.useSample(worker.getUserId(), sampleId)); + } + @GetMapping("/getListFor/{scenicId}") public ApiResponse> getListFor(@PathVariable("scenicId") Long scenicId, @RequestParam(required = false) String faceId) { JwtInfo worker = JwtTokenUtil.getWorker(); diff --git a/src/main/java/com/ycwl/basic/service/printer/PrinterService.java b/src/main/java/com/ycwl/basic/service/printer/PrinterService.java index 1b1081aa..f9571c3b 100644 --- a/src/main/java/com/ycwl/basic/service/printer/PrinterService.java +++ b/src/main/java/com/ycwl/basic/service/printer/PrinterService.java @@ -55,4 +55,6 @@ public interface PrinterService { void batchSetUserPhotoListToPrinter(Long memberId, Long scenicId, Integer printerId); void setUserIsBuyItem(Long memberId, Long id, Long orderId); + + Object useSample(Long userId, Long sampleId); } \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java b/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java index 68e643d7..6bb82bc2 100644 --- a/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/printer/impl/PrinterServiceImpl.java @@ -18,6 +18,7 @@ import com.ycwl.basic.mapper.PrinterMapper; import com.ycwl.basic.mapper.SourceMapper; import com.ycwl.basic.model.mobile.order.PriceObj; import com.ycwl.basic.model.pc.member.resp.MemberRespVO; +import com.ycwl.basic.model.pc.mp.MpConfigEntity; import com.ycwl.basic.model.pc.order.entity.OrderEntity; import com.ycwl.basic.model.pc.order.entity.OrderItemEntity; import com.ycwl.basic.pricing.dto.PriceCalculationRequest; @@ -36,6 +37,7 @@ import com.ycwl.basic.model.printer.req.PrinterSyncReq; import com.ycwl.basic.model.printer.req.WorkerAuthReqVo; import com.ycwl.basic.model.printer.resp.PrintTaskResp; import com.ycwl.basic.model.wx.WXPayOrderReqVO; +import com.ycwl.basic.repository.OrderRepository; import com.ycwl.basic.repository.ScenicRepository; import com.ycwl.basic.service.mobile.WxPayService; import com.ycwl.basic.service.printer.PrinterService; @@ -46,6 +48,7 @@ import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ImageUtils; import com.ycwl.basic.utils.JacksonUtil; import com.ycwl.basic.utils.SnowFlakeUtil; +import com.ycwl.basic.utils.WxMpUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.Strings; @@ -92,6 +95,8 @@ public class PrinterServiceImpl implements PrinterService { private IPriceCalculationService priceCalculationService; @Autowired private ScenicRepository scenicRepository; + @Autowired + private OrderRepository orderRepository; @Override public List listByScenicId(Long scenicId) { @@ -571,6 +576,14 @@ public class PrinterServiceImpl implements PrinterService { printerMapper.setUserIsBuyItem(memberId, id, orderId); // 创建打印任务 List userPhotoListByOrderId = getUserPhotoListByOrderId(orderId); + File qrCodeFile = new File("qrCodeFile" + orderId + ".png"); + OrderEntity order = orderRepository.getOrder(orderId); + MpConfigEntity scenicMpConfig = scenicRepository.getScenicMpConfig(order.getScenicId()); + try { + WxMpUtil.generateWXAQRCode(scenicMpConfig.getAppId(), scenicMpConfig.getAppSecret(), scenicMpConfig.getState(), "pages/my/orderDetailNew?id="+orderId, "qrCodeFile" + orderId + ".png"); + } catch (Exception e) { + throw new RuntimeException(e); + } userPhotoListByOrderId.forEach(item -> { PrinterEntity printer = printerMapper.getById(item.getPrinterId()); @@ -627,6 +640,9 @@ public class PrinterServiceImpl implements PrinterService { WatermarkInfo watermarkInfo = new WatermarkInfo(); watermarkInfo.setOriginalFile(needRotation ? rotatedOriginalFile : originalFile); watermarkInfo.setWatermarkedFile(watermarkedFile); + watermarkInfo.setQrcodeFile(qrCodeFile); + watermarkInfo.setDatetime(new Date()); + watermarkInfo.setDtFormat("yyyy-MM-dd"); operator.process(watermarkInfo); @@ -698,6 +714,11 @@ public class PrinterServiceImpl implements PrinterService { }); } + @Override + public Object useSample(Long userId, Long sampleId) { + return null; + } + /** * 获取下一个要使用的打印机名称(轮询逻辑) *