peixue-dev/Archive/[一次性]验证陪伴员待接单查询.sql

192 lines
4.5 KiB
MySQL
Raw Normal View History

2026-02-28 17:26:03 +08:00
-- 验证陪伴员待接单查询逻辑
-- 目的:检查派单后陪伴员是否能正确查询到待接单订单
-- ========================================
-- 陪伴员待接单查询逻辑(后端实现)
-- ========================================
-- 查询条件:
-- 1. teacher_id = 当前陪伴员ID
-- 2. status = 1待接单
-- 3. pay_status = 1已支付
-- 4. deleted = 0未删除
-- ========================================
-- 1. 查看最近派单的订单订单306
SELECT
id,
order_no,
teacher_id,
status,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
ELSE CONCAT('未知(', status, ')')
END as status_name,
pay_status,
CASE
WHEN pay_status = 0 THEN '未支付'
WHEN pay_status = 1 THEN '已支付'
WHEN pay_status = 2 THEN '已退款'
ELSE CONCAT('未知(', pay_status, ')')
END as pay_status_name,
deleted,
create_time,
update_time
FROM `order`
WHERE id = 306;
-- 2. 查看陪伴员10096的所有待接单订单模拟后端查询
SELECT
id,
order_no,
teacher_id,
status,
pay_status,
service_date,
time_slot,
service_address,
pay_amount,
create_time
FROM `order`
WHERE teacher_id = 10096
AND status = 1
AND pay_status = 1
AND deleted = 0
ORDER BY create_time DESC;
-- 3. 统计陪伴员10096的待接单数量
SELECT
COUNT(*) as pending_count
FROM `order`
WHERE teacher_id = 10096
AND status = 1
AND pay_status = 1
AND deleted = 0;
-- 4. 查看所有陪伴员的待接单订单分布
SELECT
teacher_id,
COUNT(*) as pending_count,
GROUP_CONCAT(id ORDER BY id) as order_ids
FROM `order`
WHERE status = 1
AND pay_status = 1
AND deleted = 0
GROUP BY teacher_id
ORDER BY pending_count DESC;
-- 5. 检查是否有订单状态不一致的情况
-- 已派单但status不是1或未派单但status是1
SELECT
'已派单但status不是1' as issue_type,
id,
order_no,
teacher_id,
status,
pay_status,
create_time
FROM `order`
WHERE teacher_id IS NOT NULL
AND status != 1
AND status != 2
AND status != 3
AND status != 4
AND status != 5
AND pay_status = 1
AND deleted = 0
LIMIT 10;
-- 6. 检查teacher表中的user_id映射关系
-- 确认陪伴员的userId和teacherId是否正确关联
SELECT
t.id as teacher_id,
t.user_id,
t.teacher_name,
t.real_name,
t.phone,
u.id as user_table_id,
u.nickname,
u.phone as user_phone
FROM teacher t
LEFT JOIN user u ON t.user_id = u.id
WHERE t.id = 10096;
-- 7. 查看订单306的完整信息包括学生和家长信息
SELECT
o.id,
o.order_no,
o.teacher_id,
o.status,
o.pay_status,
o.user_id,
o.student_id,
o.service_name,
o.service_date,
o.time_slot,
o.service_address,
o.pay_amount,
o.user_remark,
u.nickname as parent_name,
u.phone as parent_phone,
s.name as student_name,
s.grade as student_grade,
s.age as student_age
FROM `order` o
LEFT JOIN user u ON o.user_id = u.id
LEFT JOIN student s ON o.student_id = s.id
WHERE o.id = 306;
-- 8. 检查是否有重复的teacher_id可能导致查询混乱
SELECT
teacher_id,
COUNT(*) as count
FROM `order`
WHERE teacher_id IS NOT NULL
AND deleted = 0
GROUP BY teacher_id
HAVING count > 1
ORDER BY count DESC
LIMIT 10;
-- 9. 查看最近10条派单记录检查派单后的状态变化
SELECT
id,
order_no,
teacher_id,
status,
CASE
WHEN status = 0 THEN '待派单'
WHEN status = 1 THEN '待接单'
WHEN status = 2 THEN '待服务'
WHEN status = 3 THEN '服务中'
WHEN status = 4 THEN '已完成'
WHEN status = 5 THEN '已取消'
ELSE CONCAT('未知(', status, ')')
END as status_name,
pay_status,
create_time,
update_time
FROM `order`
WHERE teacher_id IS NOT NULL
AND deleted = 0
ORDER BY update_time DESC
LIMIT 10;
-- 10. 检查订单306的历史状态变化如果有日志表
-- 注意这个查询假设有order_log表如果没有则跳过
-- SELECT
-- order_id,
-- old_status,
-- new_status,
-- old_teacher_id,
-- new_teacher_id,
-- create_time,
-- operator
-- FROM order_log
-- WHERE order_id = 306
-- ORDER BY create_time DESC;