peixue-dev/Archive/[一次性]派单功能最终检查清单.md

5.8 KiB
Raw Permalink Blame History

派单功能最终检查清单

已确认的事实

  1. 订单306已成功派单

    • teacher_id = 10096
    • status = 1
    • update_time = 2026-01-26 15:32:38
    • 派单功能本身是正常的
  2. 问题现象

    • 待派单数量没有减少
    • 陪伴员看不到派单的订单

🔍 问题排查

可能原因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代码修改后必须重启才能生效

操作:

  1. 停止后端服务
  2. 重新启动后端服务
  3. 等待服务完全启动

步骤2清除前端缓存

操作:

  1. 在微信开发者工具中点击"清除缓存"
  2. 选择"清除全部缓存"
  3. 重新编译:npm run dev:mp-weixin

步骤3测试待派单查询

操作:

  1. 刷新管理师首页
  2. 查看待派单数量
  3. 查看待派单列表

预期结果:

  • 待派单数量应该减少不包含订单306
  • 待派单列表中不应该有订单306

步骤4测试陪伴员接收派单

操作:

  1. 使用陪伴员10096的账号登录
  2. 进入"待接单"列表
  3. 查看是否有订单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 NULLstatus != 0 的异常订单。

💡 最可能的原因

根据经验,最可能的原因是后端服务没有重启

Java是编译型语言修改代码后必须

  1. 重新编译
  2. 重启服务

否则运行的仍然是旧代码。

📝 下一步行动

  1. 立即重启后端服务
  2. 清除前端缓存并重新编译
  3. 测试待派单查询
  4. 测试陪伴员接收派单
  5. 运行验证SQL确认数据

创建时间: 2026-01-26

状态: 待执行重启和测试