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