订单变更记录表使用说明.md 4.4 KB

订单变更记录表(store_order_change_log)使用说明

表设计目的

记录每次下单/更新订单时商品种类和数量的变化,用于展示每次操作都加了什么商品。

核心字段说明

1. batch_no(批次号)

  • 作用:同一时间点的操作使用同一批次号,用于分组展示
  • 格式建议ORDER{orderId}_{timestamp}ORDER{orderId}_{yyyyMMddHHmmss}
  • 示例ORDER123_20250202143025 表示订单123在2025-02-02 14:30:25的操作批次

2. operation_type(操作类型)

  • 1:首次下单 - 创建订单时的操作
  • 3:更新订单 - 更新订单时重新下单(只记录新增或数量增加的商品)

3. quantity_change(数量变化)

  • 正数:新增的数量
  • 负数:减少的数量(如果支持减少)
  • 示例+2 表示新增2份,-1 表示减少1份

4. quantity_before / quantity_after(变化前后数量)

  • quantity_before:变化前的数量
  • quantity_after:变化后的数量
  • 用途:用于展示变化前后对比

使用场景

场景1:查询订单的所有变更记录(按时间排序)

SELECT 
    batch_no,
    operation_type,
    operation_time,
    cuisine_name,
    quantity_change,
    quantity_before,
    quantity_after,
    amount_change
FROM store_order_change_log 
WHERE order_id = 123 
  AND delete_flag = 0
ORDER BY operation_time ASC;

场景2:按批次分组展示每次操作

SELECT 
    batch_no,
    operation_type,
    operation_time,
    COUNT(*) as item_count,
    SUM(quantity_change) as total_quantity_change,
    SUM(amount_change) as total_amount_change,
    GROUP_CONCAT(CONCAT(cuisine_name, ' x', quantity_change) SEPARATOR ', ') as items
FROM store_order_change_log 
WHERE order_id = 123 
  AND delete_flag = 0
GROUP BY batch_no, operation_type, operation_time
ORDER BY operation_time ASC;

场景3:查询某次操作的所有商品

SELECT 
    cuisine_name,
    quantity_change,
    unit_price,
    amount_change
FROM store_order_change_log 
WHERE batch_no = 'ORDER123_20250202143025'
  AND delete_flag = 0
ORDER BY cuisine_id;

场景4:查询更新订单记录

SELECT 
    batch_no,
    operation_time,
    cuisine_name,
    quantity_change,
    amount_change
FROM store_order_change_log 
WHERE order_id = 123 
  AND operation_type = 3  -- 更新订单
  AND delete_flag = 0
ORDER BY operation_time DESC;

数据记录示例

假设订单123的操作历史:

首次下单(batch_no: ORDER123_20250202140000)

cuisine_name quantity_change quantity_before quantity_after amount_change
石板肉酱豆腐 1 0 1 19.90
经典三杯鸡 1 0 1 26.90

第一次更新订单(batch_no: ORDER123_20250202143000)

cuisine_name quantity_change quantity_before quantity_after amount_change
经典三杯鸡 1 1 2 26.90
宫保鸡丁 1 0 1 28.00

第二次更新订单(batch_no: ORDER123_20250202150000)

cuisine_name quantity_change quantity_before quantity_after amount_change
石板肉酱豆腐 1 1 2 19.90

前端展示建议

展示格式1:时间线展示

14:00 - 首次下单
  • 石板肉酱豆腐 x1
  • 经典三杯鸡 x1

14:30 - 更新订单
  • 经典三杯鸡 x1(累计:2)
  • 宫保鸡丁 x1

15:00 - 更新订单
  • 石板肉酱豆腐 x1(累计:2)

展示格式2:批次卡片展示

批次1:首次下单(14:00)
  石板肉酱豆腐 x1  ¥19.90
  经典三杯鸡 x1    ¥26.90
  小计:¥46.80

批次2:更新订单(14:30)
  经典三杯鸡 x1    ¥26.90
  宫保鸡丁 x1      ¥28.00
  小计:¥54.90

批次3:更新订单(15:00)
  石板肉酱豆腐 x1  ¥19.90
  小计:¥19.90

注意事项

  1. 批次号生成:同一时间点的所有商品变化应该使用同一个批次号
  2. 数量计算:quantity_change 应该只记录本次变化,不是累计数量
  3. 逻辑删除:使用 delete_flag 进行逻辑删除,保留历史记录
  4. 索引优化:已创建必要的索引,查询性能有保障