From 13378d4aa6192756e87e5851188653820b5021fb Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期四, 09 七月 2026 20:51:22 +0800
Subject: [PATCH] 用户端代为退款
---
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
index 7dacca3..297e6a2 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -29,6 +29,7 @@
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -47,6 +48,8 @@
@RestController
@RequestMapping("")
public class OrderController {
+
+ private static final String PREPAY_REFUND_PENDING_PREFIX = "PREPAY_REFUND_PENDING:";
@Autowired
private IOrderService orderService;
@@ -78,6 +81,9 @@
@Autowired
private IOrderTaxiService orderTaxiService;
+
+ @Resource
+ private RedisTemplate<String, Object> redisTemplate;
@Autowired
private IOrderPrivateCarService orderPrivateCarService;
@@ -1209,4 +1215,45 @@
e.printStackTrace();
}
}
+
+ /**
+ * 内部服务调用:预支付多退退款成功后完成司机端订单状态。
+ */
+ @ResponseBody
+ @PostMapping("/base/internal/prepayRefundCallback")
+ public ResultUtil prepayRefundCallback(Integer orderId, Integer orderType, String refundNo, String refundId) {
+ try {
+ if (orderId == null || orderType == null || ToolUtil.isEmpty(refundNo)) {
+ return ResultUtil.paranErr();
+ }
+ if (orderType == 1) {
+ orderPrivateCarService.payPrepaidRefundCallback(orderId, refundNo, refundId);
+ } else if (orderType == 2) {
+ orderTaxiService.payPrepaidRefundCallback(orderId, refundNo, refundId);
+ } else {
+ return ResultUtil.paranErr();
+ }
+ return ResultUtil.success();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+ /**
+ * 内部服务调用:查询先付退款是否还在等待回调/状态完成,避免用户端重复发起二次支付。
+ */
+ @ResponseBody
+ @PostMapping("/base/internal/prepayRefundPending")
+ public ResultUtil prepayRefundPending(Integer orderId, Integer orderType) {
+ if (orderId == null || orderType == null) {
+ return ResultUtil.paranErr();
+ }
+ Map<String, Object> data = new HashMap<>();
+ String key = PREPAY_REFUND_PENDING_PREFIX + orderType + ":" + orderId;
+ Object marker = redisTemplate.opsForValue().get(key);
+ data.put("pending", marker != null);
+ data.put("marker", marker);
+ return ResultUtil.success(data);
+ }
}
--
Gitblit v1.7.1