2026-06-25
实现包车模式使用专门的包车价格(charterPrice5/6/7),而不是用目的地单人价格乘以座位数。
travelMode=1): 订单金额 = 单人价格(price5/6/7) × 实际乘客数travelMode=2): 订单金额 = 单人价格(price5/6/7) × 车辆座位数 ❌travelMode=1): 订单金额 = 单人价格(price5/6/7) × 实际乘客数travelMode=2): 订单金额 = 包车价格(charterPrice5/6/7) ✅根据车辆座位数选择对应价格:
- 5座车: 使用 charterPrice5(包车)或 price5(拼车)
- 6座车: 使用 charterPrice6(包车)或 price6(拼车)
- 7座车: 使用 charterPrice7(包车)或 price7(拼车)
- 其他: 默认使用5座价格
6座车错误地使用了 price7 而不是 price6。
OrderCrossCityServiceImpl.java
- 修复 getDestinationPrice() 方法(第3508-3516行)
- 正确区分 5/6/7 座车的价格选择
LineMapper.xml
- queryLineDestinations 查询添加 price6 字段
- queryLineDestinationById 查询添加 price6 字段
OrderCrossCityServiceImpl.java
- 修复 getDestinationPrice() 方法(第1353-1361行)
- 正确区分 5/6/7 座车的价格选择
LineMapper.xml
- queryLineDestinations 查询添加 price6 字段
- queryLineDestinationById 查询添加 price6 字段
表: t_line
新增字段(如果尚未添加):
- charterPrice5 DECIMAL(10,2) - 包车5座价格
- charterPrice6 DECIMAL(10,2) - 包车6座价格
- charterPrice7 DECIMAL(10,2) - 包车7座价格
SQL脚本: add_charter_price_fields.sql
路径: UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/model/Line.java
添加字段:java private BigDecimal charterPrice5; private BigDecimal charterPrice6; private BigDecimal charterPrice7;
添加 getter/setter 方法
路径: UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/LineMapper.java
新增方法:java Map<String, Object> queryLineCharterPrices(@Param("lineId") Integer lineId);
路径: UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/LineMapper.xml
新增查询:xml <select id="queryLineCharterPrices" resultType="map"> select id, charterPrice5, charterPrice6, charterPrice7 from t_line where id = #{lineId} and state = 1 limit 1 </select>
路径: UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
新增方法:java private BigDecimal getLineCharterPrice(Integer lineId, Integer totalSeat)
- 根据座位数选择对应的包车价格
- 支持 5/6/7 座车
- 如果选择的价格为空,回退到5座价格
修改方法:
- getPriceV2() - 包车模式使用包车价格
- getPrice() - 包车模式使用包车价格
与 UserYKDTravel 模块相同的修改:
charterPrice5/6/7 字段和方法queryLineCharterPrices() 方法getLineCharterPrice() 方法,修改 getPrice() 和 getPriceV2() 方法无需修改 - 管理后台已经支持录入和编辑包车价格字段。
UserYKDTravel/.../OrderCrossCityServiceImpl.java - 修复价格选择逻辑UserYKDTravel/.../LineMapper.xml - 添加 price6 字段到查询DriverYKDTravel/.../OrderCrossCityServiceImpl.java - 修复价格选择逻辑DriverYKDTravel/.../LineMapper.xml - 添加 price6 字段到查询UserYKDTravel/.../Line.java - 添加包车价格字段UserYKDTravel/.../LineMapper.java - 添加查询方法UserYKDTravel/.../LineMapper.xml - 添加查询 SQLUserYKDTravel/.../OrderCrossCityServiceImpl.java - 实现包车价格逻辑DriverYKDTravel/.../Line.java - 添加包车价格字段DriverYKDTravel/.../LineMapper.java - 添加查询方法DriverYKDTravel/.../LineMapper.xml - 添加查询 SQLDriverYKDTravel/.../OrderCrossCityServiceImpl.java - 实现包车价格逻辑总计: 12 个文件
add_charter_price_fields.sql 添加包车价格字段(如果未添加)POST /base/orderCrossCity/queryOrderMoneyPOST /api/line/queryOrderMoneytravelMode=2(包车)SELECT * FROM t_order_cross_city WHERE id = ?orderMoney 字段是否等于对应的包车价格getLineCharterPrice() 方法add_charter_price_fields.sql(如果字段已存在可跳过)fix_price6_calculation_summary.md - 第一阶段修复6座价格的文档add_price6_field.sql - 目的地表添加 price6 字段的 SQLadd_charter_price_fields.sql - 线路表添加包车价格字段的 SQL