From 22365a84b9e181c2fc2d9084c90024a2728d200e Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 30 Jun 2026 17:02:03 +0800
Subject: [PATCH] feat(order): 添加XT支付功能和确认收款功能

---
 src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java |   45 ++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 44 insertions(+), 1 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java
index 1c27fb6..2cf681e 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java
@@ -176,6 +176,49 @@
         return new FebsResponse().success().data(iXcxPayService.getTemplateId());
     }
 
+    // ==================== XT 支付 ====================
+
+    /**
+     * 创建订单并通过 XT 支付
+     * <p>
+     * 流程:创建订单 → 通过 XT 支付链接
+     * <p>
+     */
+    @ApiOperation(value = "创建订单-XT支付", notes = "创建订单并返回XT支付")
+    @PostMapping(value = "/createOrderByXtPay")
+    @Limit(key = "createOrderByXtPay", period = 1, count = 1, name = "XT下单", prefix = "limit", limitType = LimitType.IP)
+    public FebsResponse createOrderByXtPay(@RequestBody @Validated XtPayCreateOrderDto lwPayDto) {
+        // 1. 创建订单
+        AddOrderDto addOrderDto = lwPayDto.getOrder();
+        Long orderId = mallOrderInfoService.createOrder(addOrderDto);
+
+        // 2. 获取订单详情
+        MallOrderInfo order = mallOrderInfoService.getById(orderId);
+        if (order != null
+                && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()
+        ){
+            return mallOrderInfoService.createOrderByXtPay();
+        }
+        return new FebsResponse().fail().message("Payment channel exception");
+    }
+
+    @ApiOperation(value = "XT支付", notes = "XT支付")
+    @PostMapping(value = "/payOrderByXtPay", produces = "application/json")
+    public FebsResponse payOrderByXtPay(@RequestBody @Validated ApiOrderPayDto payDto) {
+
+        Long orderId = payDto.getOrderId();
+        Integer payType = payDto.getPayType();
+        // 2. 获取订单详情
+        MallOrderInfo order = mallOrderInfoService.getById(orderId);
+        if (order != null
+                && OrderConstants.PAY_TYPE_XT == payType
+                && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()
+        ){
+            return mallOrderInfoService.createOrderByXtPay();
+        }
+        return new FebsResponse().fail().message("Payment channel exception");
+    }
+
     // ==================== LWPAY 支付 ====================
 
     /**
@@ -260,7 +303,7 @@
                 result.put("orderNo", order.getOrderNo());
                 result.put("amount", order.getAmount());
                 result.put("payUrl", payUrl);
-                return new FebsResponse().success().data(result).message("下单成功");
+                return new FebsResponse().success().data(result).message("success");
             } catch (Exception e) {
                 log.error("LWPAY 代收下单失败: orderId={}", orderId, e);
                 return new FebsResponse().fail().message("Payment channel exception: " + e.getMessage());

--
Gitblit v1.9.1