peixue-dev/Archive/peidu-temp-files/sql/🔍紧急诊断-日历数据不一致-2026-01-24.sql

168 lines
4.6 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.

-- 🔍 紧急诊断 - 日历数据不一致问题
-- 日期: 2026-01-24
-- 问题: 重新编译后日历还是只显示6个订单
-- ============================================
-- SQL 1: 检查用户ID=1的所有订单状态分布
-- ============================================
SELECT
status,
CASE status
WHEN 0 THEN '待支付'
WHEN 1 THEN '待接单/已支付'
WHEN 2 THEN '待服务/已接单'
WHEN 3 THEN '服务中'
WHEN 4 THEN '已完成'
WHEN -1 THEN '已取消'
ELSE '其他'
END AS status_text,
COUNT(*) AS count
FROM `order`
WHERE user_id = 1
AND deleted = 0
GROUP BY status
ORDER BY status;
-- ============================================
-- SQL 2: 检查待服务订单status=1或2的详细信息
-- ============================================
SELECT
id,
order_no,
status,
CASE status
WHEN 1 THEN '待接单'
WHEN 2 THEN '待服务'
ELSE '其他'
END AS status_text,
service_date,
time_slot,
service_name,
create_time
FROM `order`
WHERE user_id = 1
AND status IN (1, 2)
AND deleted = 0
ORDER BY service_date, create_time;
-- ============================================
-- SQL 3: 检查2026年1月的订单日历当前显示的
-- ============================================
SELECT
id,
order_no,
status,
CASE status
WHEN 0 THEN '待支付'
WHEN 1 THEN '待接单'
WHEN 2 THEN '待服务'
WHEN 3 THEN '服务中'
WHEN 4 THEN '已完成'
ELSE '其他'
END AS status_text,
service_date,
time_slot,
service_name
FROM `order`
WHERE user_id = 1
AND deleted = 0
AND service_date >= '2026-01-01'
AND service_date <= '2026-01-31'
ORDER BY service_date, time_slot;
-- ============================================
-- SQL 4: 检查"我的预约"页面可能使用的查询
-- ============================================
-- 预约页面可能查询status=1或2的订单
SELECT
COUNT(*) AS total_count,
SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS status_1_count,
SUM(CASE WHEN status = 2 THEN 1 ELSE 0 END) AS status_2_count
FROM `order`
WHERE user_id = 1
AND status IN (1, 2)
AND deleted = 0;
-- ============================================
-- SQL 5: 检查所有订单的service_date分布
-- ============================================
SELECT
CASE
WHEN service_date IS NULL THEN '日期为空'
WHEN service_date >= '2026-01-01' AND service_date <= '2026-01-31' THEN '2026年1月'
WHEN service_date >= '2026-02-01' AND service_date <= '2026-02-29' THEN '2026年2月'
WHEN service_date >= '2026-03-01' AND service_date <= '2026-03-31' THEN '2026年3月'
WHEN service_date < '2026-01-01' THEN '2026年1月之前'
ELSE '2026年3月之后'
END AS date_range,
COUNT(*) AS count
FROM `order`
WHERE user_id = 1
AND deleted = 0
GROUP BY date_range
ORDER BY date_range;
-- ============================================
-- SQL 6: 检查日历API实际会查询到的数据
-- ============================================
-- 模拟 getAllAppointments 接口的查询
SELECT
id,
order_no,
status,
service_date,
time_slot,
service_name,
CASE status
WHEN 1 THEN '待接单'
WHEN 2 THEN '待服务'
WHEN 3 THEN '服务中'
WHEN 4 THEN '已完成'
ELSE '其他'
END AS status_text
FROM `order`
WHERE user_id = 1
AND status IN (1, 2, 3, 4)
AND deleted = 0
ORDER BY service_date, time_slot;
-- ============================================
-- SQL 7: 检查是否有其他用户ID的订单
-- ============================================
SELECT
user_id,
COUNT(*) AS order_count,
SUM(CASE WHEN status IN (1, 2) THEN 1 ELSE 0 END) AS pending_count
FROM `order`
WHERE deleted = 0
GROUP BY user_id
ORDER BY order_count DESC
LIMIT 10;
-- ============================================
-- 执行说明
-- ============================================
/*
请在Navicat中依次执行上面的SQL重点关注
1. SQL 1: 查看订单状态分布
- 如果status=1或2的订单不是62个说明预约页面的查询条件不同
2. SQL 2: 查看待服务订单详情
- 确认这些订单的service_date是否为空或在不同月份
3. SQL 4: 统计待服务订单数量
- 确认是否真的有62个待服务订单
4. SQL 6: 模拟日历API查询
- 这个查询结果应该和日历"全部订单"视图显示的一致
5. SQL 7: 检查用户ID
- 确认订单是否都属于user_id=1
执行完成后,请告诉我:
- SQL 1的结果各状态有多少订单
- SQL 4的结果待服务订单总数
- SQL 6的结果返回了多少条记录
*/