From c788ca1640f080f821cb1cbe07da741302d355ef Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期四, 02 七月 2026 14:43:08 +0800
Subject: [PATCH] Merge branch 'feature/3.0' into feature/fangxinxing

---
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java |   48 ++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 42 insertions(+), 6 deletions(-)

diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 3f4a72f..ab93e43 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -231,7 +231,7 @@
     public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception {
         Map<String, Object> map = new HashMap<>();
         OrderCrossCity orderCrossCity = this.selectById(orderId);
-        List<Map<String, Object>> order = orderCrossCityMapper.queryOrderInfo(orderCrossCity.getOrderNum());
+        List<Map<String, Object>> order = orderCrossCityMapper.queryOrderInfo(orderCrossCity.getOrderNum(), orderCrossCity.getLineShiftDriverId());
 
         int num = 0;
         Double serverMoney = 0D;
@@ -1161,9 +1161,17 @@
 
         Map<String, Object> map = new HashMap<>();
         map.put("distance", distance);
-        Integer pricePeopleNumber = travelMode != null && travelMode == 2 && totalSeat != null && totalSeat > 0 ? totalSeat : peopleNumber;
+
+        // 包车模式:使用线路包车价格
+        if (travelMode != null && travelMode == 2) {
+            BigDecimal charterPrice = getLineCharterPrice(lineId, totalSeat);
+            map.put("price", charterPrice == null ? -1 : charterPrice.doubleValue());
+            return ResultUtil.success(map);
+        }
+
+        // 拼车模式:使用目的地单人价格 × 人数
         BigDecimal unitPrice = queryDefaultLineDestinationPrice(lineId, totalSeat);
-        map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, pricePeopleNumber).doubleValue());
+        map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, peopleNumber).doubleValue());
         return ResultUtil.success(map);
     }
 
@@ -1354,9 +1362,14 @@
         if (destination == null) {
             return null;
         }
-        BigDecimal price = totalSeat != null && totalSeat == 6
-                ? getBigDecimal(destination.get("price7"))
-                : getBigDecimal(destination.get("price5"));
+        BigDecimal price;
+        if (totalSeat != null && totalSeat == 7) {
+            price = getBigDecimal(destination.get("price7"));
+        } else if (totalSeat != null && totalSeat == 6) {
+            price = getBigDecimal(destination.get("price6"));
+        } else {
+            price = getBigDecimal(destination.get("price5"));
+        }
         return price == null ? getBigDecimal(destination.get("price5")) : price;
     }
 
@@ -1367,6 +1380,29 @@
         return price.multiply(new BigDecimal(peopleNumber)).setScale(2, BigDecimal.ROUND_HALF_UP);
     }
 
+    /**
+     * 获取线路包车价格(根据座位数选择)
+     */
+    private BigDecimal getLineCharterPrice(Integer lineId, Integer totalSeat) {
+        if (lineId == null || lineId <= 0) {
+            return null;
+        }
+        Map<String, Object> line = lineMapper.queryLineCharterPrices(lineId);
+        if (line == null) {
+            return null;
+        }
+        BigDecimal price;
+        if (totalSeat != null && totalSeat == 7) {
+            price = getBigDecimal(line.get("charterPrice7"));
+        } else if (totalSeat != null && totalSeat == 6) {
+            price = getBigDecimal(line.get("charterPrice6"));
+        } else {
+            price = getBigDecimal(line.get("charterPrice5"));
+        }
+        // 如果选择的价格为空,回退到5座价格
+        return price == null ? getBigDecimal(line.get("charterPrice5")) : price;
+    }
+
     @Override
     public List<OrderCrossCity> taskMidAxbUnBindSend() throws Exception {
         return this.baseMapper.taskMidAxbUnBindSend();

--
Gitblit v1.7.1