3.7 KiB
3.7 KiB
订单表与装车订单表关联关系说明
问题说明
用户创建了新的 order 订单表,但装车订单接口 /delivery/pageDeliveryOrderList 仍然返回的是 delivery 装车运单表的数据,没有关联到新的 order 表。
解决方案
1. 数据库层面
文件: add_order_id_to_delivery.sql
在 delivery 表中添加 order_id 字段,建立与 order 表的关联:
ALTER TABLE `delivery`
ADD COLUMN `order_id` int(11) DEFAULT NULL COMMENT '订单ID(关联order表)' AFTER `id`,
ADD INDEX `idx_order_id` (`order_id`);
关系说明:
order表:主订单表,记录买方、卖方、结算方式delivery表:装车运单表,记录运单详情- 一个订单可以对应多个装车运单(一对多关系)
2. 实体类更新
文件: Delivery.java
添加两个字段:
orderId:订单ID,用于存储关联的订单orderInfo:订单信息对象,用于查询时填充订单详细信息
3. 服务层更新
文件: DeliveryServiceImpl.java
在 pageQueryListLog 方法中添加订单信息填充逻辑:
// 填充装车订单的关联订单信息
for (Delivery delivery : resList) {
if (delivery.getOrderId() != null) {
Order order = orderMapper.selectById(delivery.getOrderId());
if (order != null) {
delivery.setOrderInfo(order);
}
}
}
数据流程
-
创建订单(Order)
- 用户在订单管理中创建订单
- 记录:买方、卖方、结算方式
- 保存到
order表
-
创建装车订单(Delivery)
- 用户在装车订单中创建运单
- 记录:运单详情(起始地、目的地、车牌等)
- 保存时关联
order_id - 保存到
delivery表
-
查询装车订单列表
- 调用
/delivery/pageDeliveryOrderList - 查询
delivery表 - 根据
order_id关联查询order表 - 返回装车订单信息 + 订单信息
- 调用
返回数据格式
{
"code": 200,
"msg": "success",
"data": {
"total": 10,
"rows": [
{
"id": 89,
"orderId": 1, // 关联的订单ID
"deliveryNumber": "ZC20251027161826",
"deliveryTitle": "2222",
"orderInfo": { // 订单详细信息
"id": 1,
"buyerId": "10,11",
"sellerId": "5,6",
"settlementType": 1,
"buyerName": "张三,李四",
"sellerName": "王五,赵六",
"settlementTypeDesc": "上车重量"
}
}
]
}
}
使用步骤
-
执行数据库迁移
-- 先执行创建订单表的SQL SOURCE create_order_table.sql; -- 然后为delivery表添加order_id字段 SOURCE add_order_id_to_delivery.sql; -
重启后端服务
-
前端调用
- 创建订单时:调用
/order/add - 创建装车订单时:需要传入
orderId - 查询装车订单列表:调用
/delivery/pageDeliveryOrderList - 返回的数据中包含
orderInfo字段
- 创建订单时:调用
注意事项
- 不计
delivery已存在数据,order_id为NULL - 新增运单时需关联
order_id - 查询装车订单时会自动填充
orderInfo - 支持一个订单对应多个装车运单(一对多关系)
前端集成建议
在装车订单列表中显示订单信息:
<el-table-column label="买方" prop="orderInfo.buyerName" />
<el-table-column label="卖方" prop="orderInfo.sellerName" />
<el-table-column label="结算方式" prop="orderInfo.settlementTypeDesc" />
数据一致性
- 删除订单时:应检查是否有关联的装车订单
- 可级联删除或禁止删除(推荐阻止删除以避免数据不一致)