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
---
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java | 92 ++++++++++++++++++++++++++++++++--------------
1 files changed, 64 insertions(+), 28 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 6c589a9..aa425c1 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
@@ -27,6 +27,7 @@
import com.stylefeng.guns.modular.system.warpper.MerchantCouponListWarpper;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -684,35 +685,70 @@
lineShiftDriver.setLaveSeatNumber("");
}else{//拼车
lineShiftDriver.setLaveSeat(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.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.substring(0, seatNumber.length() - 1) : "");
}
lineShiftDriverMapper.updateById(lineShiftDriver);
@@ -1607,11 +1643,11 @@
return ResultUtil.error("该乘客有未完成的订单");
}
- // 9. 检查司机是否正在服务中
- List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(driverId, warpper.getLineShiftDriverId(), Arrays.asList(5));
- if (orderCrossCities2.size() > 0) {
- return ResultUtil.error("司机正在服务中");
- }
+// // 9. 检查司机是否正在服务中
+// List<OrderCrossCity> orderCrossCities2 = orderCrossCityMapper.queryOrders(driverId, warpper.getLineShiftDriverId(), Arrays.asList(5));
+// if (orderCrossCities2.size() > 0) {
+// return ResultUtil.error("司机正在服务中");
+// }
// // 10. 计算价格
// Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance(
--
Gitblit v1.7.1