Input: specs/007-orderlog/spec.md, specs/007-orderlog/plan.md Prerequisites: plan.md, spec.md Tests: 无自动化测试,通过手动操作验证(商家/骑手/用户操作后查看日志页面)。
Organization: 按 Phase 分组——基础设施 → 日志写入集成 → 前端页面 → 部署验证。
[ID] [P?] Descriptionruoyi-system/src/main/java/com/ruoyi/system/、ruoyi-admin/src/main/java/com/ruoyi/ruoyi-system/src/main/resources/mapper/system/updatesql/sql.mdE:\QtwCode\foodie\foodie-admin-vue\src\Purpose: 新建 pos_order_log 表和完整的数据访问层,是所有后续任务的基础。
updatesql/sql.md 末尾追加 CREATE TABLE pos_order_log 语句(id, dd_id, operator_type, operator_id, operator_name, content, create_time + 索引)ruoyi-system/src/main/java/com/ruoyi/system/domain/PosOrderLog.java 实体类(id, ddId, operatorType, operatorId, operatorName, content, logTime),继承 BaseEntity,添加 @Excel 导出注解ruoyi-system/src/main/java/com/ruoyi/system/mapper/PosOrderLogMapper.java 接口(insertOrderLog, selectOrderLogList, selectOrderLogById)ruoyi-system/src/main/resources/mapper/system/PosOrderLogMapper.xml(resultMap、insert、selectList 带动态条件、selectById)ruoyi-system/src/main/java/com/ruoyi/system/service/IPosOrderLogService.java 接口ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PosOrderLogServiceImpl.java 实现Checkpoint: 数据库建表执行完毕,项目编译通过,PosOrderLog 的 CRUD 可通过 Mapper 调用。
Purpose: 封装日志写入工具类和后台管理接口。
ruoyi-system/src/main/java/com/ruoyi/system/utils/OrderLogHelper.java 工具类(异步 log + 同步 logSync 两个方法)ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/PosOrderLogController.java(list/detail/export 三个接口,权限 system:orderLog:*)Checkpoint: 后台管理 /system/orderLog/list 接口可正常返回空列表,项目编译通过。
Purpose: 商家端 4 种操作(接单/出餐/完成/取消)自动写入日志。
ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderShOprateController.java:注入 OrderLogHelper,在 acceptOrder 方法 saveOrUpdate 之后写入日志(operatorType=2, "商家{名}已接单")PosOrderShOprateController.java:在 dispatchOrder 方法 saveOrUpdate 之后写入日志("商家{名}已出餐")PosOrderShOprateController.java:在 completeOrder 方法 saveOrUpdate 之后写入日志("商家{名}已完成订单")PosOrderShOprateController.java:在 cancelOrder 方法 saveOrUpdate 之后写入日志("商家{名}取消订单")Checkpoint: 商家执行接单→出餐→完成操作后,pos_order_log 表中有对应 3 条日志记录。
Purpose: 骑手端 3 种操作(接单/取餐/送达)自动写入日志。
ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderQsOprateController.java:注入 OrderLogHelper,在 acceptOrder 方法写入日志(operatorType=3, "骑手{名}接单成功")PosOrderQsOprateController.java:在 pickupOrder 方法写入日志("骑手{名}已取餐")PosOrderQsOprateController.java:在 deliverOrder 方法写入日志("骑手{名}已送达")Checkpoint: 骑手执行接单→取餐→送达后,pos_order_log 表中有对应 3 条日志记录。
Purpose: 用户端和平台管理端操作写入日志。
ruoyi-admin/src/main/java/com/ruoyi/app/order/UserOrderController.java:注入 OrderLogHelper,在 createOrderChild 订单创建成功后写入日志(operatorType=4, "用户{名}创建订单")UserOrderController.java:在 confirmPickup 确认取餐后写入日志("用户{名}确认取餐")UserOrderController.java:在 cancelOrder 取消订单后写入日志("用户{名}取消订单")ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderController.java:注入 OrderLogHelper,在 setorderuzt 方法状态修改成功后写入日志(operatorType=1, "平台管理员{名}修改订单状态: X → Y")Checkpoint: 用户下单后日志表有 1 条记录,平台管理员修改状态后有对应日志。
Purpose: 定时任务和支付回调写入日志。
ruoyi-admin/src/main/java/com/ruoyi/app/order/TestTask.java:注入 OrderLogHelper,在 testTiming 超时取消后调用 logSync(operatorType=0, "系统自动取消超时未接单订单")TestTask.java:在 zidwancheng 自动完成后调用 logSync("系统自动完成超时订单")TestTask.java:在 refundProcessing 退款完成后调用 logSync("系统处理退款完成")ruoyi-admin/src/main/java/com/ruoyi/app/pay/PayController.java:注入 OrderLogHelper,在支付回调成功后调用 logSync("系统收到支付成功回调")Checkpoint: 触发超时取消或支付回调后,日志表有对应系统日志记录。
Purpose: 平台管理端新增订单日志查询页面。
foodie-admin-vue/src/api/system/orderLog.js(listOrderLog, getOrderLog 两个 API 方法)foodie-admin-vue/src/views/system/order/log.vue 日志查询页面:
updatesql/sql.md 末尾追加菜单插入 SQL(sys_menu 表:订单日志菜单 + 查询权限 + 导出权限)Checkpoint: 平台管理端左侧菜单出现"订单日志",点击进入可看到日志列表,搜索和导出功能正常。
Purpose: 执行全部 SQL 并端到端验证。
Checkpoint: 完整的端到端验证通过,所有操作日志正确记录并可查询导出。
Phase 1 (T001-T006) → Phase 2 (T007-T008) → Phase 3-6 (T009-T023, 可并行)
↓
Phase 7 (T024-T026, 部分可并行)
↓
Phase 8 (T027-T029)