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