From ca5887028acd0fa2ddf9103210739e01f5707283 Mon Sep 17 00:00:00 2001 From: "pikachu1995@126.com" Date: Thu, 28 Aug 2025 11:22:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=B7=BB=E5=8A=A0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=95=B0=E9=87=8F=E7=BB=9F=E8=AE=A1=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 OrderNumVO 类用于订单数量统计 - 在 OrderService 接口中添加 getOrderNumVO 方法 - 在 OrderServiceImpl 类中实现 getOrderNumVO 方法 - 在 OrderMapper 接口中添加 getOrderNumVO SQL 查询 - 在 OrderManagerController 和 OrderStoreController 中添加获取订单数量的 API 接口- 优化物流公司的获取方式, --- .../order/order/entity/vo/OrderNumVO.java | 27 +++++++++++++++++++ .../order/order/mapper/OrderMapper.java | 12 +++++++++ .../order/order/service/OrderService.java | 10 ++++++- .../order/serviceimpl/OrderServiceImpl.java | 23 ++++++++-------- .../order/OrderManagerController.java | 8 +++++- .../order/OrderStoreController.java | 7 ++++- 6 files changed, 73 insertions(+), 14 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderNumVO.java diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderNumVO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderNumVO.java new file mode 100644 index 000000000..0221606e9 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/OrderNumVO.java @@ -0,0 +1,27 @@ +package cn.lili.modules.order.order.entity.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class OrderNumVO { + + @ApiModelProperty(value = "未付款订单数量") + private Integer waitPayNum; + @ApiModelProperty(value = "已付款订单数量") + private Integer waitDeliveryNum; + @ApiModelProperty(value = "待发货订单数量") + private Integer waitShipNum; + @ApiModelProperty(value = "部分发货订单数量") + private Integer partsDeliveredNumNum; + @ApiModelProperty(value = "待收货订单数量") + private Integer deliveredNum; + @ApiModelProperty(value = "待核验订单数量") + private Integer waitCheckNum; + @ApiModelProperty(value = "待自提订单数量") + private Integer waitSelfPickNum; + @ApiModelProperty(value = "已完成订单数量") + private Integer finishNum; + @ApiModelProperty(value = "已关闭订单数量") + private Integer closeNum; +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java index f26d0fc0d..58c1cd485 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java +++ b/framework/src/main/java/cn/lili/modules/order/order/mapper/OrderMapper.java @@ -2,6 +2,7 @@ package cn.lili.modules.order.order.mapper; import cn.lili.modules.order.order.entity.dos.Order; import cn.lili.modules.order.order.entity.dto.OrderExportDTO; +import cn.lili.modules.order.order.entity.vo.OrderNumVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -97,6 +98,17 @@ public interface OrderMapper extends BaseMapper { " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") IPage queryByParams(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + @Select("select COUNT(CASE WHEN order_status = 'UNPAID' THEN 1 END) as waitPayNum,"+ + "COUNT(CASE WHEN order_status = 'PAID' THEN 1 END) as waitDeliveryNum,"+ + "COUNT(CASE WHEN order_status = 'UNDELIVERED' THEN 1 END) as waitShipNum,"+ + "COUNT(CASE WHEN order_status = 'PARTS_DELIVERED' THEN 1 END) as partsDeliveredNumNum,"+ + "COUNT(CASE WHEN order_status = 'DELIVERED' THEN 1 END) as deliveredNum,"+ + "COUNT(CASE WHEN order_status = 'TAKE' THEN 1 END) as waitCheckNum,"+ + "COUNT(CASE WHEN order_status = 'STAY_PICKED_UP' THEN 1 END) as waitSelfPickNum,"+ + "COUNT(CASE WHEN order_status = 'COMPLETED' THEN 1 END) as finishNum,"+ + "COUNT(CASE WHEN order_status = 'CANCELLED' THEN 1 END) as closeNum "+ + " FROM li_order o LEFT JOIN li_order_item AS oi on o.sn = oi.order_sn ${ew.customSqlSegment} ") + OrderNumVO getOrderNumVO(@Param(Constants.WRAPPER) Wrapper queryWrapper); /** * 查询订单信息 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java index 00be1e064..050d79f91 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java +++ b/framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java @@ -3,11 +3,11 @@ package cn.lili.modules.order.order.service; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; +import cn.lili.modules.order.order.entity.vo.OrderNumVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.entity.vo.PaymentLog; import cn.lili.modules.system.entity.vo.Traces; @@ -54,6 +54,14 @@ public interface OrderService extends IService { */ IPage queryByParams(OrderSearchParams orderSearchParams); + /** + * 获取订单数量 + * + * @param orderSearchParams 查询参数 + * @return 订单数量 + */ + OrderNumVO getOrderNumVO(OrderSearchParams orderSearchParams); + /** * 订单信息 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 68daa668c..4d3dc059c 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -22,17 +22,13 @@ import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; -import cn.lili.modules.order.aftersale.entity.enums.ComplaintStatusEnum; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum; import cn.lili.modules.order.order.aop.OrderLogPoint; import cn.lili.modules.order.order.entity.dos.*; import cn.lili.modules.order.order.entity.dto.*; import cn.lili.modules.order.order.entity.enums.*; -import cn.lili.modules.order.order.entity.vo.OrderDetailVO; -import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; -import cn.lili.modules.order.order.entity.vo.OrderVO; -import cn.lili.modules.order.order.entity.vo.PaymentLog; +import cn.lili.modules.order.order.entity.vo.*; import cn.lili.modules.order.order.mapper.OrderMapper; import cn.lili.modules.order.order.service.*; import cn.lili.modules.order.trade.entity.dos.OrderLog; @@ -225,6 +221,11 @@ public class OrderServiceImpl extends ServiceImpl implements return this.baseMapper.queryByParams(PageUtil.initPage(orderSearchParams), queryWrapper); } + @Override + public OrderNumVO getOrderNumVO(OrderSearchParams orderSearchParams) { + return this.baseMapper.getOrderNumVO(orderSearchParams.queryWrapper()); + } + /** * 订单信息 * @@ -785,7 +786,8 @@ public class OrderServiceImpl extends ServiceImpl implements */ private void checkBatchDeliver(List list) { - List logistics = logisticsService.list(); + Map logisticsMap = logisticsService.list().stream() + .collect(Collectors.toMap(Logistics::getName, Logistics::getId)); for (OrderBatchDeliverDTO orderBatchDeliverDTO : list) { //查看订单号是否存在-是否是当前店铺的订单 Order order = this.getOne(new LambdaQueryWrapper() @@ -797,11 +799,10 @@ public class OrderServiceImpl extends ServiceImpl implements throw new ServiceException("订单编号:'" + orderBatchDeliverDTO.getOrderSn() + " '不能发货"); } //获取物流公司 - logistics.forEach(item -> { - if (item.getName().equals(orderBatchDeliverDTO.getLogisticsName())) { - orderBatchDeliverDTO.setLogisticsId(item.getId()); - } - }); + String logisticsId = logisticsMap.get(orderBatchDeliverDTO.getLogisticsName()); + if (logisticsId != null) { + orderBatchDeliverDTO.setLogisticsId(logisticsId); + } if (CharSequenceUtil.isEmpty(orderBatchDeliverDTO.getLogisticsId())) { throw new ServiceException("物流公司:'" + orderBatchDeliverDTO.getLogisticsName() + " '不存在"); } diff --git a/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java b/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java index db3c26796..8991c4926 100644 --- a/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java @@ -9,9 +9,9 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; +import cn.lili.modules.order.order.entity.vo.OrderNumVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.service.OrderPriceService; import cn.lili.modules.order.order.service.OrderService; @@ -56,6 +56,12 @@ public class OrderManagerController { return ResultUtil.data(orderService.queryByParams(orderSearchParams)); } + @ApiOperation(value = "获取订单数量") + @GetMapping(value = "/orderNum") + public ResultMessage getOrderNumVO(OrderSearchParams orderSearchParams) { + return ResultUtil.data(orderService.getOrderNumVO(orderSearchParams)); + } + @ApiOperation(value = "查询订单导出列表") @GetMapping("/queryExportOrder") public void queryExportOrder(OrderSearchParams orderSearchParams) { diff --git a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java index 784c8320c..25eea3d43 100644 --- a/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/order/OrderStoreController.java @@ -11,10 +11,10 @@ import cn.lili.common.security.context.UserContext; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.member.service.StoreLogisticsService; -import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderSearchParams; import cn.lili.modules.order.order.entity.dto.PartDeliveryParamsDTO; import cn.lili.modules.order.order.entity.vo.OrderDetailVO; +import cn.lili.modules.order.order.entity.vo.OrderNumVO; import cn.lili.modules.order.order.entity.vo.OrderSimpleVO; import cn.lili.modules.order.order.service.OrderPackageService; import cn.lili.modules.order.order.service.OrderPriceService; @@ -82,6 +82,11 @@ public class OrderStoreController { return ResultUtil.data(orderService.queryByParams(orderSearchParams)); } + @ApiOperation(value = "获取订单数量") + @GetMapping(value = "/orderNum") + public ResultMessage getOrderNumVO(OrderSearchParams orderSearchParams) { + return ResultUtil.data(orderService.getOrderNumVO(orderSearchParams)); + } @ApiOperation(value = "订单明细") @ApiImplicitParams({