spec.md 5.7 KB

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)

  1. 新建 pos_order_log
  2. 新建 PosOrderLog 实体类、Mapper、Service、Controller
  3. 在所有订单状态变更处插入日志记录
  4. 平台管理端新增日志查询页面

后续扩展(P2)

  • 按时间范围筛选
  • 按操作人类型筛选
  • 订单详情弹窗中展示该订单的操作日志时间线