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

192 lines
4.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 验证陪伴员待接单查询逻辑
-- 目的:检查派单后陪伴员是否能正确查询到待接单订单
-- ========================================
-- 陪伴员待接单查询逻辑(后端实现)
-- ========================================
-- 查询条件:
-- 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;