From 0ffd0dc267f12e7208ea4c636ff1bf6771d43ad1 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 18 五月 2026 19:13:45 +0800
Subject: [PATCH] fix bugs

---
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java |   82 +++++++++++++++++++++++++++++------------
 1 files changed, 58 insertions(+), 24 deletions(-)

diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 7353c59..5e4f752 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -32,6 +32,7 @@
 import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
 import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService;
 import com.stylefeng.guns.modular.taxi.service.impl.OrderTaxiServiceImpl;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -1398,36 +1399,69 @@
 			lineShiftDriver.setLaveSeatNumber("");
 		} else {//拼车
 			lineShiftDriver.setLaveSeat((lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber()) < 0 ? 0 : lineShiftDriver.getLaveSeat() - orderCrossCity.getPeopleNumber());
-			String[] split = orderCrossCity.getSeatNumber().split(",");
 			String[] split1 = lineShiftDriver.getLaveSeatNumber().split(",");
-			String seatNumber = "";
-			//先判断选中座位号和剩余座位号是否匹配
-			for (String spl : split) {
-				boolean b = true;
-				for (String sp : split1) {
-					if (ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)) {
-						b = false;
-						break;
-					}
-				}
-				if (b) {
-					throw new SystemException("您选中的" + spl + "号座位已被占用,请选择其他座位!");
-				}
-			}
-			for (String sp : split1) {
-				boolean b = true;
+			if (StringUtils.isNotEmpty(orderCrossCity.getSeatNumber())){
+				String[] split = orderCrossCity.getSeatNumber().split(",");
+				String seatNumber = "";
+				//先判断选中座位号和剩余座位号是否匹配
 				for (String spl : split) {
-					if (ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)) {
-						b = false;
-						break;
+					boolean b = true;
+					for (String sp : split1) {
+						if (ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)) {
+							b = false;
+							break;
+						}
+					}
+					if (b) {
+						throw new SystemException("您选中的" + spl + "号座位已被占用,请选择其他座位!");
 					}
 				}
-				if (b && ToolUtil.isNotEmpty(sp)) {
-					seatNumber += (sp + ",");
+				for (String sp : split1) {
+					boolean b = true;
+					for (String spl : split) {
+						if (ToolUtil.isNotEmpty(spl) && ToolUtil.isNotEmpty(sp) && sp.equals(spl)) {
+							b = false;
+							break;
+						}
+					}
+					if (b && ToolUtil.isNotEmpty(sp)) {
+						seatNumber += (sp + ",");
+					}
 				}
+				lineShiftDriver.setLaveSeatNumber((ToolUtil.isNotEmpty(seatNumber) && seatNumber.length() > 0) ?
+						seatNumber.substring(0, seatNumber.length() - 1) : "");
+			} else {
+				// 用户未选座的情况,自动分配剩余座位的前peopleNumber个
+				StringBuilder assignedSeats = new StringBuilder();
+				StringBuilder remainingSeats = new StringBuilder();
+
+				for (int i = 0; i < split1.length; i++) {
+					if (ToolUtil.isEmpty(split1[i])) {
+						continue;
+					}
+
+					if (i < orderCrossCity.getPeopleNumber()) {
+						// 分配给当前订单的座位
+						if (assignedSeats.length() > 0) {
+							assignedSeats.append(",");
+						}
+						assignedSeats.append(split1[i]);
+					} else {
+						// 剩余的座位
+						if (remainingSeats.length() > 0) {
+							remainingSeats.append(",");
+						}
+						remainingSeats.append(split1[i]);
+					}
+				}
+
+				// 设置订单的座位号
+				orderCrossCity.setSeatNumber(assignedSeats.toString());
+				this.updateById(orderCrossCity);
+
+				// 更新班次的剩余座位号
+				lineShiftDriver.setLaveSeatNumber(remainingSeats.toString());
 			}
-			lineShiftDriver.setLaveSeatNumber((ToolUtil.isNotEmpty(seatNumber) && seatNumber.length() > 0) ?
-					seatNumber.substring(0, seatNumber.length() - 1) : "");
 		}
 		lineShiftDriverMapper.updateById(lineShiftDriver);
 		

--
Gitblit v1.7.1