From ea86cc455053b205e1b8ca88de4e91e6c64ec298 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期四, 07 五月 2026 18:23:59 +0800
Subject: [PATCH] 免密

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |  110 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 91 insertions(+), 19 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index b694dfd..c708ebd 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -21,6 +21,9 @@
 import com.xiaopeng.api.dto.map.RouteAndFareDto;
 import com.xiaopeng.api.dto.operation.LonLatDto;
 import com.xiaopeng.api.dto.order.*;
+import com.xiaopeng.api.dto.payFront.CreditOrderCreateDto;
+import com.xiaopeng.api.dto.payFront.CreditPaySignQueryDto;
+import com.xiaopeng.api.dto.payFront.CreditPrecreateDto;
 import com.xiaopeng.api.dto.pushMessage.SendMessageDTO;
 import com.xiaopeng.api.dto.statistics.DailyCountDTO;
 import com.xiaopeng.api.dto.statistics.OrderStatisticsDTO;
@@ -36,6 +39,7 @@
 import com.xiaopeng.api.feignClient.map.XpMapClient;
 import com.xiaopeng.api.feignClient.operation.*;
 import com.xiaopeng.api.feignClient.order.XpCruiseOrderClient;
+import com.xiaopeng.api.feignClient.payFront.XpPayFrontClient;
 import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.*;
 import com.xiaopeng.api.model.maintenance.XpTaskRule;
@@ -55,6 +59,8 @@
 import com.xiaopeng.api.vo.operation.NearestNextVo;
 import com.xiaopeng.api.vo.operation.RouteVo;
 import com.xiaopeng.api.vo.order.*;
+import com.xiaopeng.api.vo.payFront.CreditOrderCreateVo;
+import com.xiaopeng.api.vo.payFront.CreditPaySignQueryVo;
 import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo;
 import com.xiaopeng.api.vo.vehicleConvoy.BluetoothDeliverVo;
 import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo;
@@ -196,6 +202,9 @@
 
     @Resource
     private OfficialPartnerUtil officialPartnerUtil;
+
+    @Resource
+    private XpPayFrontClient xpPayFrontClient;
 
     @Value("${robotaxi.appId:xp_robotaxi_api}")
     private String appid;
@@ -3218,27 +3227,90 @@
 
     @Override
     public R payment(XpOrderPayDto dto, String uid) {
-        // mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
-        XpOrder order = this.getById(dto.getOrderId());
-        order.setStatus(9);
-        order.setAppUserId(null);
-        if (order.getCouponId() != null) {
-            UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
-            useUserCouponDto.setUserCouponId(order.getCouponId());
-            R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
-            if (decimalR.getCode() == 200) {
-                order.setCouponMoney(decimalR.getData());
-                if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
-                    order.setPayMoney(BigDecimal.ZERO);
-                    order.setCouponMoney(order.getOrderMoney());
-                } else {
-                    order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
-                }
+
+        // 1.0 免密  //查询是否开通免密
+        // 1先查用户是否申请  申请了拿到通过的businessOrderId
+        boolean signed = false;
+        CreditPaySignQueryDto creditPaySignQueryDto = new CreditPaySignQueryDto();
+        creditPaySignQueryDto.setUid(Long.valueOf(uid));
+        creditPaySignQueryDto.setBusinessId(appid);
+        creditPaySignQueryDto.setCategory("xp_robotaxi_api");
+        creditPaySignQueryDto.setBusinessOrderId("");
+        R<CreditPaySignQueryVo> creditPaySignQueryVoR = xpPayFrontClient.queryCreditPaySign(creditPaySignQueryDto);
+        if (creditPaySignQueryVoR.getCode()==200) {
+            CreditPaySignQueryVo data = creditPaySignQueryVoR.getData();
+            // 查看是否有签约的
+            long count = data.getSignList().stream().filter(e -> e.getStatus().equals("VALID")).count();
+            if (count > 0){
+                signed = true;
             }
         }
-        baseMapper.updateById(order);
-        bootCommonService.setCache_orderStatus(order.getId(), order, null);
-        return R.ok();
+
+
+        if(signed){
+            // y已签约 1.信用下单
+            CreditOrderCreateDto creditOrderCreateDto = new CreditOrderCreateDto();
+            creditOrderCreateDto.setUid(Long.valueOf(uid));
+            creditOrderCreateDto.setBusinessId(appid);
+            creditOrderCreateDto.setCategory("xp_robotaxi_api");
+            creditOrderCreateDto.setBusinessOrderId("");
+            creditOrderCreateDto.setSubject("信用下单");
+            creditOrderCreateDto.setPayType("13");
+
+
+            // 信用下单
+            ArrayList<CreditOrderCreateDto.PostPayment> postPayments = new ArrayList<>(1);
+            CreditOrderCreateDto.PostPayment postPayment = new CreditOrderCreateDto.PostPayment();
+            postPayment.setName("收费标准");
+            postPayment.setDescription("行程价格动态浮动,具体详情可在费用详情或计价规则查看");
+            postPayments.add(postPayment);
+            creditOrderCreateDto.setPostPayments(postPayments);
+            R<CreditOrderCreateVo> creditOrderCreateVoR = xpPayFrontClient.createCreditOrder(creditOrderCreateDto);
+            if(creditOrderCreateVoR.getCode()==200){
+                CreditOrderCreateVo data = creditOrderCreateVoR.getData();
+                return R.ok(data.getPackageValue());
+            }
+
+        }else {
+
+            // 未签约
+            // 调用预下单接口
+            XpOrder order = this.getById(dto.getOrderId());
+            CreditPrecreateDto creditPrecreateDto = new CreditPrecreateDto();
+            creditPrecreateDto.setUid(uid);
+            creditPrecreateDto.setBizId(appid);
+            creditPrecreateDto.setBizOrderId("");
+            creditPrecreateDto.setPayScene(99);
+            creditPrecreateDto.setAmount(order.getOrderMoney().multiply(new BigDecimal(100)).intValue());
+            creditPrecreateDto.setCategory("信用下单");
+            creditPrecreateDto.setTitle("信用下单");
+            creditPrecreateDto.setDetail("信用下单");
+
+        }
+
+
+
+        // mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可
+//        XpOrder order = this.getById(dto.getOrderId());
+//        order.setStatus(9);
+//        order.setAppUserId(null);
+//        if (order.getCouponId() != null) {
+//            UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
+//            useUserCouponDto.setUserCouponId(order.getCouponId());
+//            R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
+//            if (decimalR.getCode() == 200) {
+//                order.setCouponMoney(decimalR.getData());
+//                if (order.getCouponMoney().compareTo(order.getOrderMoney()) > 0) {
+//                    order.setPayMoney(BigDecimal.ZERO);
+//                    order.setCouponMoney(order.getOrderMoney());
+//                } else {
+//                    order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
+//                }
+//            }
+//        }
+//        baseMapper.updateById(order);
+//        bootCommonService.setCache_orderStatus(order.getId(), order, null);
+        return R.fail();
     }
 
     /**

--
Gitblit v1.7.1