From c335993513b90a2963cd8f991ab76952bc437de9 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期六, 14 三月 2026 11:52:15 +0800
Subject: [PATCH] 优惠券修改

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java                   |    4 ++--
 xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java |   11 ++++-------
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java              |    8 ++++----
 xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java  |    5 +++--
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java           |   20 +++++++++++++++-----
 xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java          |    4 +++-
 6 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
index e2bf654..b93ad8a 100644
--- a/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
+++ b/xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -29,6 +29,7 @@
 import org.springframework.stereotype.Controller;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.Comparator;
@@ -102,13 +103,13 @@
         return R.ok(userCouponVo);
     }
     @PostMapping("/inner/appUserCoupon/useUserCoupon")
-    public R useUserCoupon(@RequestBody UseUserCouponDto dto) {
+    public R<BigDecimal> useUserCoupon(@RequestBody UseUserCouponDto dto) {
         XpAppUserCoupon appUserCoupon = xpAppUserCouponService.getById(dto.getUserCouponId());
         appUserCoupon.setStatus(2);
         appUserCoupon.setUseTime(LocalDateTime.now());
         appUserCoupon.setAppUserId(null);
         xpAppUserCouponService.updateById(appUserCoupon);
-        return R.ok();
+        return R.ok(appUserCoupon.getMoney());
     }
 
 
diff --git a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java
index 81de0dd..e27289e 100644
--- a/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java
+++ b/xp-robotaxi-api/src/main/java/com/xiaopeng/api/feignClient/account/XpAppUserCouponClient.java
@@ -10,6 +10,8 @@
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
+import java.math.BigDecimal;
+
 /**
  * 小程序用户Feign客户端
  *
@@ -24,6 +26,6 @@
     @PostMapping("/inner/appUserCoupon/getUserCoupon")
     R<UserCouponVo> getUserCoupon(@RequestBody GetUserCouponDto dto);
     @PostMapping("/inner/appUserCoupon/useUserCoupon")
-    R useUserCoupon(@RequestBody UseUserCouponDto dto);
+    R<BigDecimal> useUserCoupon(@RequestBody UseUserCouponDto dto);
 
 }
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
index 83c251a..87a4b3a 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -351,21 +351,21 @@
         if (userCouponVo != null) {
             if(userCouponVo.getMoney()>fareVo.getOriginalFare()){
                 fareVo.setDiscountAmount(fareVo.getOriginalFare());
-                fareVo.setFinalFare(0.0);
+                fareVo.setFinalFare(0.00);
             }else {
                 fareVo.setDiscountAmount(userCouponVo.getMoney());
                 fareVo.setFinalFare(fareVo.getOriginalFare() - fareVo.getDiscountAmount());
             }
             if(fareVo.getFinalFare()>0){
                 fareVo.setSystemDiscount(fareVo.getFinalFare());
-                fareVo.setFinalFare(0.0);
+                fareVo.setFinalFare(0.00);
             }
             fareVo.setCouponId(userCouponVo.getId());
         } else {
-            fareVo.setDiscountAmount(0.0);
+            fareVo.setDiscountAmount(0.00);
             fareVo.setFinalFare(fareVo.getOriginalFare());
             fareVo.setSystemDiscount(fareVo.getFinalFare());
-            fareVo.setFinalFare(0.0);
+            fareVo.setFinalFare(0.00);
         }
 
         // 10. 检查等待时间
@@ -383,9 +383,6 @@
 
         // 12. 设置费用信息
         fareVo.setFinalFareStr(new BigDecimal(fareVo.getFinalFare()).setScale(2, RoundingMode.HALF_UP).toString());
-        if("0.00".equals(fareVo.getFinalFareStr())){
-            fareVo.setFinalFareStr("0.0");
-        }
         fareVo.setOriginalFare(new BigDecimal(fareVo.getOriginalFare()).setScale(2,RoundingMode.HALF_UP).doubleValue());
         fareVo.setSystemDiscount(new BigDecimal(fareVo.getSystemDiscount() == null ? 0 : fareVo.getSystemDiscount()).setScale(2,RoundingMode.HALF_UP).doubleValue());
         routeAndFareVo.setFareEstimate(fareVo);
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 fe37147..f2ff764 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
@@ -336,10 +336,10 @@
     @ApiOperation(value = "获取历史下单成功起点10条数据列表", tags = {"小程序-获取历史下单成功起点10条数据列表"})
     @GetMapping("/base/v1/mini-program/history/startPoints")
     @XpClientCheck(checkToken = false, checkOtpToken = true)
-    public R<List<XpHistoryStartPointsVo>> getHistoryStartPoints(double lon, double lat, HttpServletRequest request) {
+    public R<List<XpHistoryStartPointsVo>> getHistoryStartPoints(double lon, double lat,Long electronicAreaId, HttpServletRequest request) {
         // uid已通过拦截器otp校验,可以直接使用
         String uid = request.getHeader("XP-Uid");
-        return R.ok(xpOrderService.getHistoryStartPoints(uid, lon, lat));
+        return R.ok(xpOrderService.getHistoryStartPoints(uid, lon, lat,electronicAreaId));
     }
 
     /**
@@ -348,10 +348,10 @@
     @ApiOperation(value = "获取历史下单成功终点10条数据列表", tags = {"小程序-获取历史下单成功终点10条数据列表"})
     @GetMapping("/base/v1/mini-program/history/endPoints")
     @XpClientCheck(checkToken = false, checkOtpToken = true)
-    public R<List<XpHistoryEndPointsVo>> getHistoryEndPoints(double lon, double lat, HttpServletRequest request) {
+    public R<List<XpHistoryEndPointsVo>> getHistoryEndPoints(double lon, double lat,Long electronicAreaId, HttpServletRequest request) {
         // uid已通过拦截器otp校验,可以直接使用
         String uid = request.getHeader("XP-Uid");
-        return R.ok(xpOrderService.getHistoryEndPoints(uid, lon, lat));
+        return R.ok(xpOrderService.getHistoryEndPoints(uid, lon, lat,electronicAreaId));
     }
 
 
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
index a3e74cb..71b62ca 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
@@ -106,7 +106,7 @@
      * @param uid
      * @return
      */
-    List<XpHistoryStartPointsVo> getHistoryStartPoints(String uid,double lon,double lat);
+    List<XpHistoryStartPointsVo> getHistoryStartPoints(String uid,double lon,double lat,Long electronicAreaId);
 
 
     /**
@@ -121,7 +121,7 @@
      * @param uid
      * @return
      */
-    List<XpHistoryEndPointsVo> getHistoryEndPoints(String uid, double lon, double lat);
+    List<XpHistoryEndPointsVo> getHistoryEndPoints(String uid, double lon, double lat,Long electronicAreaId);
 
     /**
      * 获取历史订单列表
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 c27669a..904cf6a 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
@@ -1020,7 +1020,7 @@
     }
 
     @Override
-    public List<XpHistoryStartPointsVo> getHistoryStartPoints(String uid, double lon, double lat) {
+    public List<XpHistoryStartPointsVo> getHistoryStartPoints(String uid, double lon, double lat,Long electronicAreaId) {
         //
         List<XpOrder> xpOrders = this.baseMapper.getHistoryStartPoints(Long.valueOf(uid));
 //        selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.parseLong(uid)).orderByDesc(BaseModel::getCreateTime).last("LIMIT 10"));
@@ -1058,7 +1058,7 @@
     }
 
     @Override
-    public List<XpHistoryEndPointsVo> getHistoryEndPoints(String uid, double lon, double lat) {
+    public List<XpHistoryEndPointsVo> getHistoryEndPoints(String uid, double lon, double lat,Long electronicAreaId) {
         //
         List<XpOrder> xpOrders = this.baseMapper.getHistoryEndPoints(Long.valueOf(uid));
 //        selectList(new LambdaQueryWrapper<XpOrder>().eq(XpOrder::getAppUserId, Long.parseLong(uid)).orderByDesc(BaseModel::getCreateTime).last("LIMIT 10"));
@@ -2421,14 +2421,24 @@
         XpOrder order = this.getById(dto.getOrderId());
         order.setStatus(9);
         order.setAppUserId(null);
-        baseMapper.updateById(order);
+
 
         if(order.getCouponId()!=null){
             UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
             useUserCouponDto.setUserCouponId(order.getCouponId());
-            xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
-        }
+            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);
         return R.ok();
     }
 

--
Gitblit v1.7.1