peixue-dev/Archive/[一次性]修复订单状态不一致.sql

74 lines
1.8 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.

-- 修复订单状态不一致的SQL脚本
-- 1. 修复已派单但状态不是1的订单
UPDATE `order`
SET status = 1
WHERE teacher_id IS NOT NULL
AND status != 1
AND pay_status = 1
AND deleted = 0;
-- 2. 修复未派单但状态不是0的订单排除已完成和已取消
UPDATE `order`
SET status = 0
WHERE teacher_id IS NULL
AND status NOT IN (0, 4, 5) -- 排除待派单、已完成和已取消
AND pay_status = 1
AND deleted = 0;
-- 3. 检查修复结果 - 统计各状态订单数量
SELECT
status,
COUNT(*) as count,
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 '未知状态'
END as status_name
FROM `order`
WHERE pay_status = 1 AND deleted = 0
GROUP BY status
ORDER BY status;
-- 4. 检查是否还有异常订单
SELECT
id,
order_no,
teacher_id,
status,
pay_status,
CASE
WHEN teacher_id IS NULL AND status NOT IN (0, 4, 5) THEN '❌ 异常未派单但状态不是0/4/5'
WHEN teacher_id IS NOT NULL AND status = 0 THEN '❌ 异常已派单但状态是0'
ELSE '✅ 正常'
END as check_result
FROM `order`
WHERE pay_status = 1 AND deleted = 0
AND (
(teacher_id IS NULL AND status NOT IN (0, 4, 5)) OR
(teacher_id IS NOT NULL AND status = 0)
)
ORDER BY create_time DESC
LIMIT 50;
-- 5. 查看修复后的待派单订单列表
SELECT
id,
order_no,
user_id,
teacher_id,
status,
pay_status,
create_time
FROM `order`
WHERE pay_status = 1
AND status = 0
AND teacher_id IS NULL
AND deleted = 0
ORDER BY create_time DESC
LIMIT 20;