262 lines
5.8 KiB
Markdown
262 lines
5.8 KiB
Markdown
|
|
# 派单功能最终检查清单
|
|||
|
|
|
|||
|
|
## ✅ 已确认的事实
|
|||
|
|
|
|||
|
|
1. **订单306已成功派单**
|
|||
|
|
- `teacher_id` = 10096 ✅
|
|||
|
|
- `status` = 1 ✅
|
|||
|
|
- `update_time` = 2026-01-26 15:32:38 ✅
|
|||
|
|
- 派单功能本身是正常的
|
|||
|
|
|
|||
|
|
2. **问题现象**
|
|||
|
|
- 待派单数量没有减少
|
|||
|
|
- 陪伴员看不到派单的订单
|
|||
|
|
|
|||
|
|
## 🔍 问题排查
|
|||
|
|
|
|||
|
|
### 可能原因1:后端服务没有重启(最可能)
|
|||
|
|
|
|||
|
|
**症状:**
|
|||
|
|
- 修改了Java代码
|
|||
|
|
- 但待派单查询仍然使用旧逻辑(没有 `status=0` 条件)
|
|||
|
|
- 导致查询结果包含已派单的订单
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```bash
|
|||
|
|
# 重启后端服务
|
|||
|
|
# 如果使用IDEA,点击停止按钮,然后重新运行
|
|||
|
|
# 如果使用命令行,先停止服务,然后重新启动
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**验证方法:**
|
|||
|
|
查看后端控制台日志,派单时应该看到:
|
|||
|
|
```
|
|||
|
|
✅ 添加派单状态过滤: status=0 AND teacher_id IS NULL (待派单)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 可能原因2:前端缓存
|
|||
|
|
|
|||
|
|
**症状:**
|
|||
|
|
- 后端已经返回正确数据
|
|||
|
|
- 但前端显示的是缓存的旧数据
|
|||
|
|
|
|||
|
|
**解决方案:**
|
|||
|
|
```bash
|
|||
|
|
# 重新编译前端
|
|||
|
|
cd peidu/uniapp
|
|||
|
|
npm run dev:mp-weixin
|
|||
|
|
|
|||
|
|
# 或者在微信开发者工具中点击"清除缓存" → "清除全部缓存"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 可能原因3:查询条件冲突
|
|||
|
|
|
|||
|
|
**症状:**
|
|||
|
|
- `dispatchStatus='pending'` 参数没有正确传递到后端
|
|||
|
|
- 或者后端没有正确处理这个参数
|
|||
|
|
|
|||
|
|
**验证SQL:**
|
|||
|
|
```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验证数据:
|
|||
|
|
|
|||
|
|
```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是编译型语言,修改代码后必须:
|
|||
|
|
1. 重新编译
|
|||
|
|
2. 重启服务
|
|||
|
|
|
|||
|
|
否则运行的仍然是旧代码。
|
|||
|
|
|
|||
|
|
## 📝 下一步行动
|
|||
|
|
|
|||
|
|
1. **立即重启后端服务**
|
|||
|
|
2. **清除前端缓存并重新编译**
|
|||
|
|
3. **测试待派单查询**
|
|||
|
|
4. **测试陪伴员接收派单**
|
|||
|
|
5. **运行验证SQL确认数据**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**创建时间:** 2026-01-26
|
|||
|
|
|
|||
|
|
**状态:** 待执行重启和测试
|