From 7616ba1882b602f9ed249a6f60847e6cb6a353af Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 01 九月 2025 17:00:00 +0800
Subject: [PATCH] mq处理订单失败后的手动补偿机制

---
 framework/src/main/java/cn/lili/modules/order/order/service/OrderService.java         |    3 +++
 framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java |   20 ++++++++++++++++++++
 manager-api/src/main/java/cn/lili/controller/order/OrderManagerController.java        |    5 +++++
 3 files changed, 28 insertions(+), 0 deletions(-)

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 4e230ac..616e2c3 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
@@ -1,5 +1,6 @@
 package cn.lili.modules.order.order.service;
 
+import cn.lili.common.vo.ResultMessage;
 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;
@@ -12,6 +13,7 @@
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -117,6 +119,7 @@
      */
     OrderDetailVO queryDetail(String orderSn);
 
+    String sendMqMessage(String  snNo);
     /**
      * 鍒涘缓璁㈠崟
      * 1.妫�鏌ヤ氦鏄撲俊鎭�
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 b41cddb..2b65ab7 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
@@ -23,6 +23,7 @@
 import cn.lili.common.utils.CurrencyUtil;
 import cn.lili.common.utils.SnowFlake;
 import cn.lili.common.utils.StringUtils;
+import cn.lili.common.vo.ResultMessage;
 import cn.lili.modules.goods.entity.dos.Goods;
 import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage;
 import cn.lili.modules.goods.service.GoodsService;
@@ -443,6 +444,25 @@
     }
 
     @Override
+    @Transactional
+    public String sendMqMessage(String snNo) {
+        Order order = this.getBySn(snNo);
+        if (order == null) {
+            throw new ServiceException(ResultCode.ORDER_NOT_EXIST);
+        }
+        if (!OrderStatusEnum.PAID.name().equals(order.getOrderStatus())) {
+            throw new ServiceException("璁㈠崟鐘舵�佷笉鏄凡鏀粯鐘舵��");
+        }
+        OrderMessage orderMessage = new OrderMessage();
+        //鍙戦�佽鍗曞凡浠樻娑堟伅
+        orderMessage.setOrderSn(order.getSn());
+        orderMessage.setPaymentMethod(order.getPaymentMethod());
+        orderMessage.setNewStatus(OrderStatusEnum.PAID);
+        this.sendUpdateStatusMessage(orderMessage);
+        return null;
+    }
+
+    @Override
     @OrderLogPoint(description = "'璁㈠崟['+#orderSn+']鍙栨秷锛屽師鍥犱负锛�'+#reason", orderSn = "#orderSn")
     @Transactional(rollbackFor = Exception.class)
     public Order cancel(String orderSn, String reason) {
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 52b5e6b..34c3d4d 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
@@ -63,6 +63,11 @@
     public ResultMessage<IPage<OrderSimpleVO>> queryMineOrder(OrderSearchParams orderSearchParams) {
         return ResultUtil.data(orderService.queryByParams(orderSearchParams));
     }
+    @ApiOperation(value = "鏇存柊璁㈠崟鐘舵��")
+    @GetMapping("/sendMessage/{snNo}")
+    public ResultMessage<String> sendMqMessage(@PathVariable String  snNo) {
+        return ResultUtil.data(orderService.sendMqMessage(snNo));
+    }
 
     @ApiOperation(value = "鏌ヨ璁㈠崟瀵煎嚭鍒楄〃")
     @GetMapping("/queryExportOrder")

--
Gitblit v1.8.0