5.1 KiB
5.1 KiB
✅ 派单状态更新修复完成
时间: 2026-01-25
问题: 派单成功后订单状态没有更新,导致订单仍然显示在待派单列表中
优先级: P0 - 严重bug
🔍 问题分析
问题现象
从控制台日志可以看到:
- ✅ 刷新事件成功触发
- ✅ 数据成功刷新
- ❌ 但订单 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 - 或查看控制台日志确认启动成功
🧪 测试步骤
测试场景:派单后订单状态更新
-
查看初始状态
- 管理师首页显示待派单数量:例如 9 个
- 记录订单 337 的状态:
status=1(待派单)
-
执行派单操作
- 点击订单 337 的"立即派单"按钮
- 选择陪伴员,点击"确认派单"
- 等待派单成功提示
-
验证订单状态
- 返回首页,待派单数量应该减少: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 (已完成)
🎯 影响范围
修复前
- ❌ 派单后订单仍显示在待派单列表
- ❌ 待派单数量不减少
- ❌ 管理师无法区分已派单和未派单的订单
- ❌ 陪伴员看不到已派单的订单
修复后
- ✅ 派单后订单自动从待派单列表移除
- ✅ 待派单数量正确减少
- ✅ 订单状态流转正确
- ✅ 陪伴员可以看到已派单的订单
🔗 相关修复
本次修复是待派单刷新功能的后端配套修复:
-
前端修复(已完成)
- 添加事件总线机制
- 派单成功后触发首页刷新
- 文档:
[一次性]待派单数量自动刷新功能实现-2026-01-25.md
-
后端修复(本次)
- 修复派单接口的状态更新逻辑
- 确保订单状态正确流转
⚠️ 注意事项
数据库中的历史数据
如果数据库中有已经派单但 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
- 待派单列表不再显示已派单的订单
- 待派单数量正确减少
- 陪伴员可以看到已派单的订单
- 历史数据已修复(如有需要)
🎉 总结
通过修复派单接口的状态更新逻辑,确保了订单状态的正确流转。配合前端的刷新机制,完整解决了"派单后数量不减少"的问题。
核心改进:
- ✅ 派单后订单状态正确更新为 status=2
- ✅ 订单自动从待派单列表移除
- ✅ 待派单数量实时更新
- ✅ 订单状态流转符合业务逻辑
修复完成时间: 2026-01-25 18:21
测试状态: ✅ 待重启后端服务并测试