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