5.8 KiB
5.8 KiB
派单功能最终检查清单
✅ 已确认的事实
-
订单306已成功派单
teacher_id= 10096 ✅status= 1 ✅update_time= 2026-01-26 15:32:38 ✅- 派单功能本身是正常的
-
问题现象
- 待派单数量没有减少
- 陪伴员看不到派单的订单
🔍 问题排查
可能原因1:后端服务没有重启(最可能)
症状:
- 修改了Java代码
- 但待派单查询仍然使用旧逻辑(没有
status=0条件) - 导致查询结果包含已派单的订单
解决方案:
# 重启后端服务
# 如果使用IDEA,点击停止按钮,然后重新运行
# 如果使用命令行,先停止服务,然后重新启动
验证方法: 查看后端控制台日志,派单时应该看到:
✅ 添加派单状态过滤: status=0 AND teacher_id IS NULL (待派单)
可能原因2:前端缓存
症状:
- 后端已经返回正确数据
- 但前端显示的是缓存的旧数据
解决方案:
# 重新编译前端
cd peidu/uniapp
npm run dev:mp-weixin
# 或者在微信开发者工具中点击"清除缓存" → "清除全部缓存"
可能原因3:查询条件冲突
症状:
dispatchStatus='pending'参数没有正确传递到后端- 或者后端没有正确处理这个参数
验证SQL:
-- 1. 按修复后的条件查询待派单订单(应该不包含订单306)
SELECT
id,
order_no,
teacher_id,
status,
pay_status
FROM `order`
WHERE pay_status = 1
AND status = 0
AND teacher_id IS NULL
AND deleted = 0
ORDER BY create_time DESC;
-- 2. 按旧条件查询待派单订单(可能仍然包含订单306)
SELECT
id,
order_no,
teacher_id,
status,
pay_status
FROM `order`
WHERE pay_status = 1
AND teacher_id IS NULL
AND deleted = 0
ORDER BY create_time DESC;
-- 3. 检查订单306是否符合待派单条件
SELECT
id,
order_no,
teacher_id,
status,
pay_status,
CASE
WHEN pay_status = 1 AND status = 0 AND teacher_id IS NULL THEN '✅ 符合新条件(待派单)'
WHEN pay_status = 1 AND teacher_id IS NULL THEN '⚠️ 符合旧条件(但status不是0)'
ELSE '❌ 不符合待派单条件'
END as check_result
FROM `order`
WHERE id = 306;
🎯 立即执行的步骤
步骤1:重启后端服务(必须)
原因: Java代码修改后必须重启才能生效
操作:
- 停止后端服务
- 重新启动后端服务
- 等待服务完全启动
步骤2:清除前端缓存
操作:
- 在微信开发者工具中点击"清除缓存"
- 选择"清除全部缓存"
- 重新编译:
npm run dev:mp-weixin
步骤3:测试待派单查询
操作:
- 刷新管理师首页
- 查看待派单数量
- 查看待派单列表
预期结果:
- ✅ 待派单数量应该减少(不包含订单306)
- ✅ 待派单列表中不应该有订单306
步骤4:测试陪伴员接收派单
操作:
- 使用陪伴员10096的账号登录
- 进入"待接单"列表
- 查看是否有订单306
预期结果:
- ✅ 陪伴员能看到订单306
- ✅ 订单状态显示为"待接单"
📊 验证SQL
运行以下SQL验证数据:
-- 1. 验证订单306的状态
SELECT
id,
order_no,
teacher_id,
status,
pay_status,
'订单306已派单' as note
FROM `order`
WHERE id = 306;
-- 2. 统计待派单订单数量(新条件)
SELECT
COUNT(*) as pending_count_new,
'新条件:status=0 AND teacher_id IS NULL' as condition_type
FROM `order`
WHERE pay_status = 1
AND status = 0
AND teacher_id IS NULL
AND deleted = 0;
-- 3. 统计待派单订单数量(旧条件)
SELECT
COUNT(*) as pending_count_old,
'旧条件:teacher_id IS NULL(没有status=0)' as condition_type
FROM `order`
WHERE pay_status = 1
AND teacher_id IS NULL
AND deleted = 0;
-- 4. 查看差异订单(旧条件包含但新条件不包含的订单)
SELECT
id,
order_no,
teacher_id,
status,
pay_status,
'这些订单在旧条件下会被计入待派单,但实际上不应该' as note
FROM `order`
WHERE pay_status = 1
AND teacher_id IS NULL
AND status != 0
AND deleted = 0
ORDER BY create_time DESC
LIMIT 20;
-- 5. 查看陪伴员10096的待接单订单
SELECT
id,
order_no,
user_id,
teacher_id,
status,
pay_status,
service_date,
create_time
FROM `order`
WHERE teacher_id = 10096
AND status = 1
AND deleted = 0
ORDER BY create_time DESC;
🔧 如果问题仍然存在
检查点1:后端日志
查看后端控制台,搜索关键字:
- "添加派单状态过滤"
- "status=0 AND teacher_id IS NULL"
如果没有看到这些日志,说明:
- ❌ 后端服务没有重启
- ❌ 或者代码没有正确编译
检查点2:前端请求参数
查看前端控制台,搜索关键字:
- "请求参数"
- "dispatchStatus"
确认前端是否正确传递了 dispatchStatus: 'pending' 参数。
检查点3:数据库查询结果
直接在数据库中运行验证SQL,对比:
- 新条件查询结果(应该不包含订单306)
- 旧条件查询结果(可能包含订单306)
如果两个查询结果相同,说明数据库中没有 teacher_id IS NULL 且 status != 0 的异常订单。
💡 最可能的原因
根据经验,最可能的原因是后端服务没有重启。
Java是编译型语言,修改代码后必须:
- 重新编译
- 重启服务
否则运行的仍然是旧代码。
📝 下一步行动
- 立即重启后端服务
- 清除前端缓存并重新编译
- 测试待派单查询
- 测试陪伴员接收派单
- 运行验证SQL确认数据
创建时间: 2026-01-26
状态: 待执行重启和测试