007 - 订单操作日志
Feature Branch: 007-order-log
Created: 2026-05-19
Status: Done
Input: 平台管理端新增订单操作日志页面,记录所有订单状态变更的完整审计轨迹。
背景
订单状态已拆分为四字段(state/deliveryStatus/payStatus/afterSaleStatus),状态变更涉及多方角色(平台管理员、商家、骑手、用户、系统)。需要独立的日志表记录每次变更,用于问题排查和运营审计。
需求概览
新增 pos_order_log 表,在每次订单状态变更时自动写入一条日志。平台管理端提供日志查询页面,支持按订单号、操作人筛选和导出。
数据库设计
新表:pos_order_log
| 字段 |
类型 |
说明 |
| id |
BIGINT (AUTO_INCREMENT) |
主键 |
| dd_id |
VARCHAR(64) |
订单号(关联 pos_order.dd_id) |
| operator_type |
TINYINT |
操作人类型:0 系统, 1 平台管理员, 2 商家, 3 骑手, 4 用户 |
| operator_id |
BIGINT |
操作人ID(对应各角色表的主键) |
| operator_name |
VARCHAR(128) |
操作人名称(冗余存储,避免查询时 JOIN) |
| content |
VARCHAR(512) |
操作内容描述(如"平台管理员tongdai修改订单状态: 取餐中 → 配送中") |
| create_time |
DATETIME |
操作时间 |
-- 2026-05-19 新增订单操作日志表
CREATE TABLE pos_order_log (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
dd_id VARCHAR(64) NOT NULL COMMENT '订单号',
operator_type TINYINT NOT NULL COMMENT '操作人类型:0系统,1平台管理员,2商家,3骑手,4用户',
operator_id BIGINT COMMENT '操作人ID',
operator_name VARCHAR(128) COMMENT '操作人名称',
content VARCHAR(512) NOT NULL COMMENT '操作内容',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
INDEX idx_dd_id (dd_id),
INDEX idx_operator_id (operator_id),
INDEX idx_create_time (create_time)
) COMMENT='订单操作日志';
operator_type 枚举
| 值 |
含义 |
说明 |
| 0 |
系统 |
定时任务、自动取消等系统触发 |
| 1 |
平台管理员 |
后台管理端操作 |
| 2 |
商家 |
商家端操作(接单、出餐、完成等) |
| 3 |
骑手 |
骑手端操作(接单、取餐、送达等) |
| 4 |
用户 |
用户端操作(下单、取消、确认取餐等) |
日志写入时机
在以下操作执行成功后写入日志(由 Service 层统一处理):
商家操作(operator_type=2)
| 操作 |
content 模板 |
| 接单 |
商家{名称}已接单 |
| 出餐 |
商家{名称}已出餐 |
| 完成(自取/堂食) |
商家{名称}已完成订单 |
| 取消订单 |
商家{名称}取消订单 |
骑手操作(operator_type=3)
| 操作 |
content 模板 |
| 接单 |
骑手{名称}接单成功 |
| 取餐 |
骑手{名称}已取餐 |
| 送达 |
骑手{名称}已送达 |
用户操作(operator_type=4)
| 操作 |
content 模板 |
| 下单 |
用户{名称}创建订单 |
| 取消订单 |
用户{名称}取消订单 |
| 确认取餐 |
用户{名称}确认取餐 |
| 申请退款 |
用户{名称}申请退款 |
平台管理员操作(operator_type=1)
| 操作 |
content 模板 |
| 修改订单状态 |
平台管理员{名称}修改订单状态: {旧状态} → {新状态} |
| 修改配送状态 |
平台管理员{名称}修改配送状态: {旧状态} → {新状态} |
系统操作(operator_type=0)
| 操作 |
content 模板 |
| 超时自动取消 |
系统自动取消超时未接单订单 |
| 超时自动完成 |
系统自动完成超时订单 |
| 支付回调 |
系统收到支付成功回调 |
平台管理端页面
页面位置
E:\QtwCode\foodie\foodie-admin-vue\src\views\system\order\log.vue(新增页面)
搜索条件
| 搜索字段 |
类型 |
说明 |
| 订单号 |
输入框 |
模糊搜索 dd_id |
| 操作人ID |
输入框 |
精确匹配 operator_id |
| 操作人名称 |
输入框 |
模糊搜索 operator_name |
表格列
| 列名 |
字段 |
说明 |
| 主键ID |
id |
|
| 订单号 |
ddId |
|
| 操作人类型 |
operatorType |
显示中文名称(系统/平台/商家/骑手/用户) |
| 操作人ID |
operatorId |
|
| 操作人名称 |
operatorName |
|
| 操作内容 |
content |
|
| 时间 |
createTime |
|
| 操作 |
- |
查看按钮(跳转订单详情或弹窗显示详情) |
操作按钮
- 搜索:按筛选条件查询
- 重置:清空筛选条件
- 导出:导出当前筛选结果为 Excel
菜单配置
在平台管理端的"订单管理"菜单下新增"订单日志"子菜单。
后端接口
日志列表接口
接口:GET /system/orderLog/list
权限:system:orderLog:list
| 参数 |
类型 |
必填 |
说明 |
| ddId |
String |
否 |
订单号(模糊搜索) |
| operatorId |
Long |
否 |
操作人ID |
| operatorName |
String |
否 |
操作人名称(模糊搜索) |
| pageNum |
int |
是 |
页码,默认1 |
| pageSize |
int |
是 |
每页条数,默认10 |
日志详情接口
接口:GET /system/orderLog/{id}
权限:system:orderLog:query
导出接口
接口:POST /system/orderLog/export
权限:system:orderLog:export
实现范围
本次实现(P1)
- 新建
pos_order_log 表
- 新建 PosOrderLog 实体类、Mapper、Service、Controller
- 在所有订单状态变更处插入日志记录
- 平台管理端新增日志查询页面
后续扩展(P2)
- 按时间范围筛选
- 按操作人类型筛选
- 订单详情弹窗中展示该订单的操作日志时间线