From 8ba2a94e978f7eee68157ff3bb3f01389ab0a139 Mon Sep 17 00:00:00 2001 From: huk Date: Sat, 27 Sep 2025 16:51:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=96=B0=E5=A2=9E=E5=95=86?= =?UTF-8?q?=E5=AE=B6=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../merchant/AppMerchantOrderController.java | 16 +++- .../soopin/order/business/IOrderBusiness.java | 6 ++ .../business/impl/OrderBusinessImpl.java | 11 +++ .../soopin/order/mapper/OrderItemMapper.java | 40 ++++---- .../order/service/OrderItemService.java | 5 + .../service/impl/OrderItemServiceImpl.java | 18 ++++ .../main/resources/mapper/OrderItemMapper.xml | 96 ++++++++++++++----- 7 files changed, 146 insertions(+), 46 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java b/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java index 6886fd3ba..c5db684a2 100644 --- a/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java +++ b/ruoyi-admin/src/main/java/org/dromara/app/merchant/AppMerchantOrderController.java @@ -3,9 +3,7 @@ package org.dromara.app.merchant; import com.baomidou.mybatisplus.core.metadata.IPage; import com.wzj.soopin.order.business.IOrderBusiness; import com.wzj.soopin.order.domain.bo.OrderItemBo; -import com.wzj.soopin.order.domain.entity.Order; import com.wzj.soopin.order.domain.vo.MerchantOrderVO; -import com.wzj.soopin.order.domain.vo.OrderVO; import com.wzj.soopin.order.service.IMerchantOrderService; import com.wzj.soopin.order.service.VerificationCodeService; import io.swagger.v3.oas.annotations.Operation; @@ -33,6 +31,15 @@ public class AppMerchantOrderController { private final IMerchantOrderService merchantOrderService; private final IOrderBusiness orderBusiness; + + + @Operation(summary = "获取该商家订单子项详细信息") + @GetMapping(value = "/{orderItemId}") + public R getInfo(@PathVariable("orderItemId") Long orderItemId) { + return R.ok(orderBusiness.itemInfo(orderItemId)); + } + + /** * 扫码核销接口 * @return 核销结果 @@ -49,9 +56,8 @@ public class AppMerchantOrderController { */ @GetMapping("/scan") @Operation(summary = "查询核销码对应的订单") - public R scan(@RequestParam("code") String code) { - Order order = verificationCodeService.scan(code); - return R.ok(orderBusiness.info(order.getId())); + public R scan(@RequestParam("code") String code) { + return R.ok(orderBusiness.getItemInfoByVerificationCode(code)); } @PostMapping("/page") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/IOrderBusiness.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/IOrderBusiness.java index 3fc3baf51..08174129d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/IOrderBusiness.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/IOrderBusiness.java @@ -1,8 +1,14 @@ package com.wzj.soopin.order.business; import com.wzj.soopin.order.domain.bo.OrderBo; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; import com.wzj.soopin.order.domain.vo.OrderVO; import org.dromara.common.web.core.IBusiness; public interface IOrderBusiness extends IBusiness { + + + MerchantOrderVO itemInfo(Long orderItemId); + + MerchantOrderVO getItemInfoByVerificationCode(String verificationCode); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/impl/OrderBusinessImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/impl/OrderBusinessImpl.java index d3a7ec0ac..389cef4d4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/impl/OrderBusinessImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/business/impl/OrderBusinessImpl.java @@ -8,6 +8,7 @@ import com.wzj.soopin.order.convert.OrderItemConvert; import com.wzj.soopin.order.domain.bo.OrderBo; import com.wzj.soopin.order.domain.entity.Order; import com.wzj.soopin.order.domain.entity.OrderItem; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; import com.wzj.soopin.order.domain.vo.OrderItemVO; import com.wzj.soopin.order.domain.vo.OrderVO; import com.wzj.soopin.order.service.OrderItemService; @@ -62,4 +63,14 @@ public class OrderBusinessImpl extends BusinessImpl * @return 商品名称 */ @Select("SELECT p.name " + - "FROM oms_order_item oi " + - "JOIN pms_product p ON oi.product_id = p.id " + - "WHERE oi.order_id = #{orderId} " + - "LIMIT 1") + "FROM oms_order_item oi " + + "JOIN pms_product p ON oi.product_id = p.id " + + "WHERE oi.order_id = #{orderId} " + + "LIMIT 1") String getName(Long orderId); /** @@ -50,25 +50,27 @@ public interface OrderItemMapper extends BaseMapperPlus * @return 商品交易量信息列表 */ @Select("SELECT " + - " oi.product_id, " + - " oi.product_name, " + - " oi.pic, " + - " oi.out_product_id, " + - " oi.product_category_id, " + - " SUM(oi.quantity) as total_quantity, " + - " SUM(oi.quantity * oi.sale_price) as total_amount, " + - " COUNT(DISTINCT o.id) as order_count " + - "FROM oms_order_item oi " + - "JOIN oms_order o ON oi.order_id = o.id " + - "WHERE o.status = 3 " + // 已完成订单 - " AND o.delete_status = 0 " + // 未删除订单 - "GROUP BY oi.product_id, oi.product_name, oi.pic, oi.out_product_id, oi.product_category_id " + - "ORDER BY total_quantity DESC " + - "LIMIT #{limit}") + " oi.product_id, " + + " oi.product_name, " + + " oi.pic, " + + " oi.out_product_id, " + + " oi.product_category_id, " + + " SUM(oi.quantity) as total_quantity, " + + " SUM(oi.quantity * oi.sale_price) as total_amount, " + + " COUNT(DISTINCT o.id) as order_count " + + "FROM oms_order_item oi " + + "JOIN oms_order o ON oi.order_id = o.id " + + "WHERE o.status = 3 " + // 已完成订单 + " AND o.delete_status = 0 " + // 未删除订单 + "GROUP BY oi.product_id, oi.product_name, oi.pic, oi.out_product_id, oi.product_category_id " + + "ORDER BY total_quantity DESC " + + "LIMIT #{limit}") List> selectTopTradingProducts(int limit); @Select("SELECT * FROM oms_order_item WHERE order_id = #{orderId}") List findByOrderId(Long orderId); IPage selectMerchatOrderPage(@Param("page") Page page, @Param("query") OrderItemBo query); + + MerchantOrderVO selectMerchatOrder(@Param("tenantId") String tenantId, @Param("orderItemId") Long orderItemId, @Param("verificationCode") String verificationCode); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderItemService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderItemService.java index 2b4586033..b08abd930 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderItemService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderItemService.java @@ -2,6 +2,7 @@ package com.wzj.soopin.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.wzj.soopin.order.domain.entity.OrderItem; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; import java.util.List; @@ -14,4 +15,8 @@ public interface OrderItemService extends IService { * @param limit 查询数量限制 */ void cacheTopTradingProducts(int limit); + + MerchantOrderVO getMerchantOrder(Long orderItemId); + + MerchantOrderVO getMerchantOrder(String code); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderItemServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderItemServiceImpl.java index ed551602c..e2696fdd5 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderItemServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderItemServiceImpl.java @@ -1,12 +1,16 @@ package com.wzj.soopin.order.service.impl; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import com.wzj.soopin.order.domain.entity.OrderItem; +import com.wzj.soopin.order.domain.vo.MerchantOrderVO; import com.wzj.soopin.order.mapper.OrderItemMapper; import com.wzj.soopin.order.service.OrderItemService; import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.redis.redis.RedisCache; +import org.dromara.common.tenant.helper.TenantHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -62,4 +66,18 @@ public class OrderItemServiceImpl extends ServiceImpl ServiceException.of("您无权查看商户订单")); + return baseMapper.selectMerchatOrder(tenantId, orderItemId, null); + } + + @Override + public MerchantOrderVO getMerchantOrder(String code) { + String tenantId = TenantHelper.getTenantId(); + Assert.notEmpty(tenantId, () -> ServiceException.of("您无权查看商户订单")); + return baseMapper.selectMerchatOrder(tenantId,null, code); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml index bbd68659a..c61ed9eae 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/OrderItemMapper.xml @@ -73,28 +73,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + +