peixue-dev/Archive/peidu-temp-files/docs/[一次性]派单状态更新修复-2026-01-25.md

5.1 KiB
Raw Blame History

派单状态更新修复完成

时间: 2026-01-25
问题: 派单成功后订单状态没有更新,导致订单仍然显示在待派单列表中
优先级: P0 - 严重bug


🔍 问题分析

问题现象

从控制台日志可以看到:

  1. 刷新事件成功触发
  2. 数据成功刷新
  3. 但订单 337 仍然在列表中

根本原因

派单接口中,派单成功后设置的订单状态是 status=1但根据方案A的业务流程

  • status=0: 待支付
  • status=1: 待派单(已支付,等待管理师派单)
  • status=2: 已派单(管理师已派单给陪伴员)← 应该设置为这个

问题代码

order.setStatus(1); // ❌ 错误:仍然是待派单状态

正确代码

order.setStatus(2); // ✅ 正确:已派单状态

🔧 修复方案

修改文件

文件: peidu/backend/src/main/java/com/peidu/controller/ManagerController.java

修改位置: assignOrder() 方法,约第 268 行

修改内容:

// 修改前
order.setTeacherId(teacherId);
order.setStatus(1); // 1-已接单/已派单

// 修改后
order.setTeacherId(teacherId);
order.setStatus(2); // 🔥 修复2-已派单(管理师已派单给陪伴员)

编译状态

后端编译: 成功

[INFO] BUILD SUCCESS
[INFO] Total time:  26.416 s
[INFO] Finished at: 2026-01-25T18:21:38+08:00

前端编译: 无需重新编译(仅后端修改)


🔄 部署步骤

1. 停止后端服务

# 找到占用 8080 端口的进程
netstat -ano | findstr :8080

# 终止进程(替换 PID
taskkill /F /PID <PID>

2. 重启后端服务

cd peidu/backend
mvn spring-boot:run

3. 验证服务启动

  • 访问: http://localhost:8080/api/health
  • 或查看控制台日志确认启动成功

🧪 测试步骤

测试场景:派单后订单状态更新

  1. 查看初始状态

    • 管理师首页显示待派单数量:例如 9 个
    • 记录订单 337 的状态:status=1(待派单)
  2. 执行派单操作

    • 点击订单 337 的"立即派单"按钮
    • 选择陪伴员,点击"确认派单"
    • 等待派单成功提示
  3. 验证订单状态

    • 返回首页待派单数量应该减少9 → 8
    • 订单 337 不再显示在待派单列表中
    • 数据库验证:查询订单 337 的 status 应该是 2

SQL 验证脚本

-- 查询订单 337 的状态
SELECT id, order_no, status, teacher_id, update_time
FROM `order`
WHERE id = 337;

-- 预期结果:
-- status = 2 (已派单)
-- teacher_id = 已分配的陪伴员ID
-- update_time = 派单时间

📊 订单状态流转方案A

status=0 (待支付)
    ↓ 家长支付成功
status=1 (待派单) ← 管理师看到的待派单列表
    ↓ 管理师派单成功 ← 🔥 本次修复
status=2 (已派单) ← 陪伴员看到的待接单列表
    ↓ 陪伴员接单
status=3 (待服务)
    ↓ 陪伴员签到
status=4 (服务中)
    ↓ 陪伴员签退
status=5 (已完成)

🎯 影响范围

修复前

  • 派单后订单仍显示在待派单列表
  • 待派单数量不减少
  • 管理师无法区分已派单和未派单的订单
  • 陪伴员看不到已派单的订单

修复后

  • 派单后订单自动从待派单列表移除
  • 待派单数量正确减少
  • 订单状态流转正确
  • 陪伴员可以看到已派单的订单

🔗 相关修复

本次修复是待派单刷新功能的后端配套修复

  1. 前端修复(已完成)

    • 添加事件总线机制
    • 派单成功后触发首页刷新
    • 文档:[一次性]待派单数量自动刷新功能实现-2026-01-25.md
  2. 后端修复(本次)

    • 修复派单接口的状态更新逻辑
    • 确保订单状态正确流转

⚠️ 注意事项

数据库中的历史数据

如果数据库中有已经派单但 status 仍然是 1 的订单,需要手动修复:

-- 查询已派单但状态错误的订单
SELECT id, order_no, status, teacher_id
FROM `order`
WHERE teacher_id IS NOT NULL 
  AND teacher_id > 0
  AND status = 1
  AND deleted = 0;

-- 修复这些订单的状态
UPDATE `order`
SET status = 2, update_time = NOW()
WHERE teacher_id IS NOT NULL 
  AND teacher_id > 0
  AND status = 1
  AND deleted = 0;

📝 测试检查清单

  • 后端服务已重启
  • 派单成功后订单状态变为 2
  • 待派单列表不再显示已派单的订单
  • 待派单数量正确减少
  • 陪伴员可以看到已派单的订单
  • 历史数据已修复(如有需要)

🎉 总结

通过修复派单接口的状态更新逻辑,确保了订单状态的正确流转。配合前端的刷新机制,完整解决了"派单后数量不减少"的问题。

核心改进

  1. 派单后订单状态正确更新为 status=2
  2. 订单自动从待派单列表移除
  3. 待派单数量实时更新
  4. 订单状态流转符合业务逻辑

修复完成时间: 2026-01-25 18:21
测试状态: 待重启后端服务并测试