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