From fb75cbf23020b5f17864eed1934b863c18eedc25 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 8 Nov 2025 11:04:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(printer):=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=89=93=E5=8D=B0=E7=BA=B8=E5=BC=A0=E5=B0=BA=E5=AF=B8?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 引入Redis缓存存储打印纸张尺寸信息 - 优先从Redis中获取纸张尺寸,减少数据库查询 - 在创建订单时将打印机偏好纸张存入Redis,有效期60秒 - 修复打印机对象作用域问题,避免空指针异常 - 统一打印机状态校验逻辑,提高代码可读性 --- .../service/pc/impl/OrderServiceImpl.java | 14 +++++++++--- .../printer/impl/PrinterServiceImpl.java | 22 ++++++++++--------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java index dcb4e2ed..24ede82e 100644 --- a/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java +++ b/src/main/java/com/ycwl/basic/service/pc/impl/OrderServiceImpl.java @@ -70,6 +70,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -140,6 +141,8 @@ public class OrderServiceImpl implements OrderService { private ICouponService iCouponService; @Autowired private MemberRelationRepository memberRelationRepository; + @Autowired + private RedisTemplate redisTemplate; @Override public ApiResponse> pageQuery(OrderReqQuery query) { @@ -583,9 +586,14 @@ public class OrderServiceImpl implements OrderService { if (orderAppRespVO != null && orderAppRespVO.getOrderItemList() != null && !orderAppRespVO.getOrderItemList().isEmpty()) { orderAppRespVO.getOrderItemList().forEach(orderItem -> { if (orderItem.getGoodsType() == 3) { - PrintTaskResp printTaskResp = printerMapper.queryTaskByMpId(Math.toIntExact(orderItem.getGoodsId())); - if (printTaskResp != null) { - orderItem.setPrinterPaper(printTaskResp.getPaper()); + String size = redisTemplate.opsForValue().get("printer_size:" + id); + if (size != null) { + orderItem.setPrinterPaper(size); + } else { + PrintTaskResp printTaskResp = printerMapper.queryTaskByMpId(Math.toIntExact(orderItem.getGoodsId())); + if (printTaskResp != null) { + orderItem.setPrinterPaper(printTaskResp.getPaper()); + } } } }); 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 bb65b2df..44f9302b 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 @@ -483,6 +483,7 @@ public class PrinterServiceImpl implements PrinterService { @Override public Map createOrder(Long memberId, Long scenicId, Integer printerId, Long faceId) { + PrinterEntity printer = null; if (printerId == null) { List printerList = printerMapper.listByScenicId(scenicId); if (printerList.size() != 1) { @@ -491,16 +492,16 @@ public class PrinterServiceImpl implements PrinterService { printerId = printerList.getFirst().getId(); } } else { - PrinterEntity printer = printerMapper.getById(printerId); - if (printer == null) { - throw new BaseException("打印机不存在"); - } - if (printer.getStatus() != 1) { - throw new BaseException("打印机已停用"); - } - if (!printer.getScenicId().equals(scenicId)) { - throw new BaseException("打印机不属于该景区"); - } + printer = printerMapper.getById(printerId); + } + if (printer == null) { + throw new BaseException("打印机不存在"); + } + if (printer.getStatus() != 1) { + throw new BaseException("打印机已停用"); + } + if (!printer.getScenicId().equals(scenicId)) { + throw new BaseException("打印机不属于该景区"); } // 验证照片数量 List userPhotoList = getUserPhotoList(memberId, scenicId, faceId); @@ -511,6 +512,7 @@ public class PrinterServiceImpl implements PrinterService { OrderEntity order = new OrderEntity(); Long orderId = SnowFlakeUtil.getLongId(); + redisTemplate.opsForValue().set("printer_size:"+orderId, printer.getPreferPaper(), 60, TimeUnit.SECONDS); order.setId(orderId); order.setMemberId(memberId); order.setFaceId(faceId);