From 2d0312de30b3783ecf254d146dc6322d74690762 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 19 五月 2026 09:28:57 +0800
Subject: [PATCH] Merge branch '1.1' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java |   85 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 80 insertions(+), 5 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
index 8bc7575..201b275 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -16,6 +16,7 @@
 import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto;
 import com.xiaopeng.api.dto.vehicleConvoy.BleInfoResponseDto;
 import com.xiaopeng.api.feignClient.account.SysGroupMenuClient;
+import com.xiaopeng.api.feignClient.frdXfipEvent.XpFrdXfipEventClient;
 import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient;
 import com.xiaopeng.api.feignClient.operation.XpWhiteListClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.BluetoothUnlockClient;
@@ -24,6 +25,7 @@
 import com.xiaopeng.api.model.operation.XpOfficialPartner;
 import com.xiaopeng.api.model.operation.XpSystemSetting;
 import com.xiaopeng.api.model.operation.XpWhitelist;
+import com.xiaopeng.api.model.order.OrderTrajectory;
 import com.xiaopeng.api.model.order.XpOrder;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.account.LoginUser;
@@ -40,13 +42,11 @@
 import com.xiaopeng.common.core.utils.StringUtils;
 import com.xiaopeng.common.core.utils.WebUtils;
 import com.xiaopeng.common.core.web.page.PageInfo;
-import com.xiaopeng.common.log.annotation.AdminOperationLog;
-import com.xiaopeng.common.log.enums.AdminBusinessType;
-import com.xiaopeng.common.log.enums.AdminOperationType;
 import com.xiaopeng.common.redis.service.RedisService;
 import com.xiaopeng.common.security.service.TokenService;
 import com.xiaopeng.order.config.BluetoothDebugConfig;
 import com.xiaopeng.order.dto.OrderNavigationDto;
+import com.xiaopeng.order.model.dto.*;
 import com.xiaopeng.api.model.order.OrderTrajectory;
 import com.xiaopeng.order.mangodb.service.OrderTrajectoryService;
 import com.xiaopeng.order.model.dto.XpOrderCommentDto;
@@ -57,6 +57,7 @@
 import com.xiaopeng.order.model.query.XpHistoryOrderListQuery;
 import com.xiaopeng.order.model.query.XpOrderExcelQuery;
 import com.xiaopeng.order.model.query.XpOrderPageQuery;
+import com.xiaopeng.order.model.vo.CreditPayCallVo;
 import com.xiaopeng.order.model.vo.XpOrderDetailVO;
 import com.xiaopeng.order.model.vo.XpOrderHistoryVO;
 import com.xiaopeng.order.model.vo.XpOrderPageVO;
@@ -116,8 +117,6 @@
 
     @Resource
     private  VehicleMacClient vehicleMacClient;
-    @Resource
-    private SysGroupMenuClient groupMenuClient;
 
     @Resource
     private XpWhiteListClient xpWhiteListClient;
@@ -164,6 +163,23 @@
         }
         return R.ok(0L);
 
+    }
+
+    /**
+     * 查询是否有未支付订单
+     * 返回0 可以下单,非0为未支付订单ID
+     */
+    @PostMapping("/logan/inner/order/has-unpay-order")
+    @ApiOperation(value = "查询是否有未支付订单", tags = {"内部接口"})
+    public R<Long> hasUnPayOrder(String uid) {
+        XpOrder order = xpOrderService.getOne(new LambdaQueryWrapper<XpOrder>()
+                .eq(XpOrder::getAppUserId, Long.parseLong(uid))
+                .eq(XpOrder::getStatus, 8)
+                .last("LIMIT 1"));
+        if (order != null) {
+            return R.ok(order.getId());
+        }
+        return R.ok(0L);
     }
 
     /**
@@ -1011,6 +1027,7 @@
     }
 
 
+
     /**
      * 将订单推单状态还原重新推单
      * @param orderId
@@ -1028,4 +1045,62 @@
         }
         return R.ok();
     }
+
+
+
+
+    /**
+     * 信用支付下单回调
+     */
+    @PostMapping("/base/v1/mini-program/order/creditPayCall")
+    @ApiOperation(value = "信用支付下单回调", tags = {"小程序-发起支付"}, response = CreditPayCallVo.class)
+    public CreditPayCallVo creditPayCall(@RequestBody CreditPayCallDto dto) {
+        CreditPayCallVo vo = new CreditPayCallVo();
+        vo.setRetCode("0");
+        vo.setRetMsg("成功");
+
+        if (dto == null || (StringUtils.isBlank(dto.getAuthOrderId()) || StringUtils.isBlank(dto.getBusinessOrderId()))) {
+            return vo;
+        }
+
+        LambdaQueryWrapper<XpOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(XpOrder::getAuthOrderId, dto.getAuthOrderId());
+        XpOrder order = xpOrderService.getOne(wrapper.last("LIMIT 1"));
+        if (order == null) {
+            return vo;
+        }
+        if ("SUCCESS".equals(dto.getCreditOrderStatus())) {
+            // 发起扣款
+            xpOrderService.creditPayCall(order);
+        }
+        return vo;
+    }
+
+    /**
+     * 信用扣款回调
+     */
+    @PostMapping("/base/v1/mini-program/order/creditPaySuccessCall")
+    @ApiOperation(value = "信用扣款回调", tags = {"小程序-发起支付"}, response = CreditPayCallVo.class)
+    public CreditPayCallVo creditPaySuccessCall(@RequestBody CreditPaySuccessCallDto dto) {
+
+        LambdaQueryWrapper<XpOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(XpOrder::getAuthOrderId, dto.getAuthOrderId());
+        XpOrder order = xpOrderService.getOne(wrapper.last("LIMIT 1"));
+        if(dto.getPayStatus()==1){
+            order.setStatus(9);
+            order.setAppUserId(null);
+            xpOrderService.updateById(order);
+            CreditPayCallVo vo = new CreditPayCallVo();
+            vo.setRetCode("0");
+            vo.setRetMsg("成功");
+
+            // 对接财务
+            xpOrderService.xpFrdXfipEventPush(order,dto.getPayFee(),dto.getOrderId());
+
+            return vo;
+        }
+        return null;
+
+    }
+
 }

--
Gitblit v1.7.1