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

74 lines
1.8 KiB
MySQL
Raw Permalink Normal View History

2026-02-28 17:26:03 +08:00
-- 修复订单状态不一致的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;