From 5f4b99714b633c9c838d94ccc240ab23333e3343 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 28 四月 2026 18:55:24 +0800
Subject: [PATCH] 添加计算优惠金额的接口

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 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 caeb89a..cbfd372 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
@@ -46,6 +46,7 @@
 import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
 import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
 import com.xiaopeng.api.vo.OrderType;
+import com.xiaopeng.api.vo.account.CalculateDiscountAmountVo;
 import com.xiaopeng.api.vo.account.UserCouponVo;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.automaticPilot.protobuf.OrderOperationType;
@@ -3096,8 +3097,15 @@
     }
 
     @Override
-    public R<FareBreakdownVo> fareBreakdown(Long orderId, String uid) {
-        XpOrder order = this.getById(orderId);
+    public R<FareBreakdownVo> fareBreakdown(com.xiaopeng.order.vo.FareBreakdownVo vo, String uid) {
+        XpOrder order = this.getById(vo.getOrderId());
+        //根据新的优惠券计算优惠金额
+        if(null != order.getCouponId()){
+            CalculateDiscountAmountVo discountAmountVo = new CalculateDiscountAmountVo();
+            BigDecimal data = xpAppUserCouponClient.calculateDiscountAmount(discountAmountVo).getData();
+            order.setCouponId(vo.getUserCouponId());
+            order.setCouponMoney(data);
+        }
         order.setAppUserId(null);
         FareBreakdownVo res = new FareBreakdownVo();
         res.setChangeMoneyFlag(order.getChangeMoneyFlag());
@@ -3107,7 +3115,7 @@
         List<FareBreakdownDetailVo> duration = new ArrayList<>();
         List<FareBreakdownDetailVo> longDistance = new ArrayList<>();
 
-        List<XpOrderDetail> xpOrderDetails = xpOrderDetailMapper.selectList(new LambdaQueryWrapper<XpOrderDetail>().eq(XpOrderDetail::getOrderId, orderId));
+        List<XpOrderDetail> xpOrderDetails = xpOrderDetailMapper.selectList(new LambdaQueryWrapper<XpOrderDetail>().eq(XpOrderDetail::getOrderId, vo.getOrderId()));
         for (XpOrderDetail xpOrderDetail : xpOrderDetails) {
             FareBreakdownDetailVo detail = new FareBreakdownDetailVo();
             detail.setType(xpOrderDetail.getType());
@@ -3131,6 +3139,7 @@
         res.setDuration(duration);
         res.setLongDistance(longDistance);
         res.setRedPacketMoney(order.getRedPacketMoney());
+        res.setUserCouponId(order.getCouponId());
         res.setCouponMoney(order.getCouponMoney());
         res.setOrderMoney(order.getOrderMoney());
         res.setKilometer(order.getMileageKilometers() == null ? BigDecimal.ZERO : BigDecimal.valueOf(order.getMileageKilometers()).multiply(BigDecimal.valueOf(1000)));
@@ -3149,6 +3158,8 @@
         return R.ok(res);
     }
 
+
+
     @Override
     public R payment(XpOrderPayDto dto, String uid) {
         // mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可

--
Gitblit v1.7.1