From a5e4c4c7ffd5ad80c3d4b2f1fff69ce9b071bdcf Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期一, 20 四月 2026 14:58:08 +0800
Subject: [PATCH] Merge branch '1.0' of http://120.76.84.145:10101/gitblit/r/java/Robotaxi into 1.0

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   26 +++++++++++++++++++++-----
 1 files changed, 21 insertions(+), 5 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 a3d98c3..1c9f8a7 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
@@ -547,14 +547,14 @@
     @Override
     @Transactional
     @ShardingSphereTransactionType(TransactionType.BASE)
-    public void cancelOrCloseOrder(Long orderId, Integer type) {
+    public void cancelOrCloseOrder(Long orderId, Integer type,Boolean isFree) {
         // 1. 校验订单是否存在
         XpOrder order = this.getById(orderId);
         if (Objects.isNull(order)) {
             throw new ServiceException("订单不存在");
         }
 
-        // 2. 校验操作类型
+        // 2. 校验操作类型 操作类型:1=取消订单,2=关闭订单
         if (type != 1 && type != 2) {
             throw new ServiceException("操作类型错误,type只能为1或2");
         }
@@ -568,6 +568,9 @@
                 throw new ServiceException("当前订单状态不允许取消,只有待接单、待出发、接驾中状态的订单可以取消", I18nKeyConstant.ORDER_CANCEL_FAILED);
             }
         } else {
+            if(isFree == null){
+                throw new ServiceException("是否豁免费用不能为空", I18nKeyConstant.ORDER_CLOSE_FAILED);
+            }
             // 关闭订单:0=已取消,1=待接单,2=待出发,3=接驾中,4=待客上车,5=乘客已上车,6=服务中 状态可以关闭
             if (currentStatus == 7 || currentStatus == 8 || currentStatus == 9 || currentStatus == 10) {
                 throw new ServiceException("当前订单状态不允许关闭", I18nKeyConstant.ORDER_CLOSE_FAILED);
@@ -581,6 +584,9 @@
         } else {
             // 关闭订单
             closeOrder(order);
+            if(isFree){
+                this.setFree(order.getId());
+            }
         }
     }
 
@@ -2073,15 +2079,25 @@
         this.endTrip(xpOrder.getId(),appUserId.toString());
 
         //将支付金额修改成0 并将状态修改成 订单状态9
+        setFree(xpOrder.getId());
+        return R.ok();
+    }
+
+    /**
+     * 豁免
+     */
+    public void setFree(Long id){
+
+        //将支付金额修改成0 并将状态修改成 订单状态9
         XpOrder xpOrder1 = new XpOrder();
-        xpOrder1.setId(xpOrder.getId());
+        xpOrder1.setId(id);
+        xpOrder1.setIsFree( true);//豁免
         xpOrder1.setPayMoney(BigDecimal.ZERO);
         xpOrder1.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode());
         xpOrder1.setUpdateTime(LocalDateTime.now());
         baseMapper.updateById(xpOrder1);
-        redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), xpOrder1.getStatus(), 24L, TimeUnit.HOURS);
+        redisService.setCacheObject("ORDER_STATUS:" + id, xpOrder1.getStatus(), 24L, TimeUnit.HOURS);
 
-        return R.ok();
     }
 
 

--
Gitblit v1.7.1