From dbcf3151bd9b2cc2246a9a6c83a4892f2cf928d2 Mon Sep 17 00:00:00 2001 From: wyn <1074145239@qq.com> Date: Wed, 1 Jul 2026 09:52:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/controller/BuyOrderController.java | 11 ++++ .../modules/book/service/BuyOrderService.java | 8 +++ .../service/impl/BuyOrderServiceImpl.java | 50 +++++++++++++++++++ .../vo/request/BuyOrderListRequestVo.java | 5 ++ 4 files changed, 74 insertions(+) diff --git a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java index b978821..fb2e817 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -1222,6 +1222,17 @@ public class BuyOrderController { return buyOrderService.delivery(expressCompanyCode, buyOrderProductId); } + /** + * 批量订单发货(仅支持单商品且数量为1的订单,快递公司固定顺丰 SF) + * + * @param orderIds 订单 ID 列表 + * @return R,存在不符合条件的订单时 msg 为逗号拼接的订单号 + */ + @RequestMapping(value = "/batchDelivery", method = RequestMethod.POST) + public R batchDelivery(@RequestBody List orderIds) throws Exception { + return buyOrderService.batchDelivery("SF", orderIds); + } + @RequestMapping("/mytest") public R mytest() throws IOException { String mytest = buyOrderService.mytest(); diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index c29d79c..337df0d 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -55,6 +55,14 @@ public interface BuyOrderService extends IService { */ R delivery(String expressCompanyCode, List buyOrderDetailId); + /** + * 批量订单发货(仅支持单商品且数量为1的订单) + * + * @param expressCompanyCode 快递公司代码 + * @param orderIds 订单 ID 列表 + */ + R batchDelivery(String expressCompanyCode, List orderIds); + Page orderList(BuyOrderListRequestVo requestVo, Boolean isHT); Page getUserOrderList(UserOrderDto userOrderDto); diff --git a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java index b01250e..89bc605 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java @@ -437,6 +437,22 @@ public class BuyOrderServiceImpl extends ServiceImpl impl List collect = buyOrderProductDao.selectJoinList(BuyOrderProduct.class, buyOrderProductMPJLambdaWrapper).stream().map(BuyOrderProduct::getOrderId).collect(Collectors.toList()); wrapper.in(BuyOrder::getOrderId,collect); } + if(requestVo.getShowOne()!=null && requestVo.getShowOne()==1){ + List> list = buyOrderProductService.listMaps( + new QueryWrapper() + .select("order_id orderId") + .groupBy("order_id") + .having("COUNT(*) = 1 AND SUM(quantity) = 1") + ); + List collect = list.stream() + .map(map -> ((Number) map.get("orderId")).intValue()) + .collect(Collectors.toList()); + if (collect.size() > 0) { + wrapper.in(BuyOrder::getOrderId, collect); + } else { + wrapper.eq(BuyOrder::getOrderId, -1); + } + } Page buyOrderPage = getBaseMapper().selectPage(new Page(requestVo.getPageIndex(), requestVo.getPageSize()), wrapper); //丰富订单内容 for (BuyOrder b : buyOrderPage.getRecords()){ @@ -720,6 +736,40 @@ public class BuyOrderServiceImpl extends ServiceImpl impl } } + @Override + public R batchDelivery(String expressCompanyCode, List orderIds) { + if (orderIds == null || orderIds.isEmpty()) { + return R.error("订单列表不能为空"); + } + List distinctOrderIds = orderIds.stream().distinct().collect(Collectors.toList()); + List invalidOrderSns = new ArrayList<>(); + List buyOrderProductIds = new ArrayList<>(); + for (Integer orderId : distinctOrderIds) { + BuyOrder buyOrder = getById(orderId); + if (buyOrder == null) { + invalidOrderSns.add(String.valueOf(orderId)); + continue; + } + List products = buyOrderProductService.list( + new LambdaQueryWrapper().eq(BuyOrderProduct::getOrderId, orderId)); + if (products.size() != 1 || products.get(0).getQuantity() != 1) { + invalidOrderSns.add(buyOrder.getOrderSn()); + } else { + buyOrderProductIds.add(products.get(0).getId()); + } + } + if (!invalidOrderSns.isEmpty()) { + return R.error(String.join(",", invalidOrderSns)); + } + for (Integer buyOrderProductId : buyOrderProductIds) { + R result = delivery(expressCompanyCode, Collections.singletonList(buyOrderProductId)); + if (!Integer.valueOf(0).equals(result.get("code"))) { + return result; + } + } + return R.ok(); + } + public String mytest() throws IOException { String html = ""; File file = new File("D:/1.html"); diff --git a/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java b/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java index 42a9633..3b85cea 100644 --- a/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java +++ b/src/main/java/com/peanut/modules/book/vo/request/BuyOrderListRequestVo.java @@ -55,4 +55,9 @@ public class BuyOrderListRequestVo { * 数据起始位置 */ private Integer index; + + /** + * 过滤预售 + */ + private Integer showOne; }