239 lines
6.1 KiB
SQL
239 lines
6.1 KiB
SQL
-- 🔍 诊断预约页面与日历数据不一致问题
|
||
-- 日期: 2026-01-24
|
||
-- 问题: 预约页面显示62个待服务,日历只显示6个
|
||
|
||
-- ============================================
|
||
-- SQL 1: 检查订单状态分布
|
||
-- ============================================
|
||
SELECT
|
||
status,
|
||
CASE status
|
||
WHEN 0 THEN '待支付'
|
||
WHEN 1 THEN '待服务'
|
||
WHEN 2 THEN '进行中'
|
||
WHEN 3 THEN '已完成'
|
||
WHEN 4 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: 检查待服务订单的日期分布
|
||
-- ============================================
|
||
SELECT
|
||
DATE_FORMAT(service_date, '%Y-%m') AS month,
|
||
COUNT(*) AS count,
|
||
GROUP_CONCAT(order_no ORDER BY service_date SEPARATOR ', ') AS order_nos
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND status = 1
|
||
AND deleted = 0
|
||
GROUP BY DATE_FORMAT(service_date, '%Y-%m')
|
||
ORDER BY month;
|
||
|
||
-- ============================================
|
||
-- 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,
|
||
create_time
|
||
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: 模拟日历的查询条件
|
||
-- ============================================
|
||
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 status IN (1, 2, 3, 4) -- 日历的状态筛选条件
|
||
AND service_date >= '2026-01-01'
|
||
AND service_date <= '2026-01-31'
|
||
ORDER BY service_date, time_slot;
|
||
|
||
-- ============================================
|
||
-- SQL 5: 检查不在日历显示范围的订单
|
||
-- ============================================
|
||
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,
|
||
CASE
|
||
WHEN status = 0 THEN '❌ 状态为待支付,日历不显示'
|
||
WHEN service_date IS NULL THEN '❌ 服务日期为空'
|
||
WHEN service_date < '2026-01-01' THEN '❌ 日期早于2026年1月'
|
||
WHEN service_date > '2026-01-31' THEN '❌ 日期晚于2026年1月'
|
||
ELSE '✅ 应该显示在日历上'
|
||
END AS display_reason
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND deleted = 0
|
||
AND status = 1 -- 只看待服务的订单
|
||
ORDER BY service_date;
|
||
|
||
-- ============================================
|
||
-- SQL 6: 统计待服务订单的详细分布
|
||
-- ============================================
|
||
SELECT
|
||
'总待服务订单' AS category,
|
||
COUNT(*) AS count
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND status = 1
|
||
AND deleted = 0
|
||
|
||
UNION ALL
|
||
|
||
SELECT
|
||
'1月份待服务订单' AS category,
|
||
COUNT(*) AS count
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND status = 1
|
||
AND deleted = 0
|
||
AND service_date >= '2026-01-01'
|
||
AND service_date <= '2026-01-31'
|
||
|
||
UNION ALL
|
||
|
||
SELECT
|
||
'其他月份待服务订单' AS category,
|
||
COUNT(*) AS count
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND status = 1
|
||
AND deleted = 0
|
||
AND (service_date < '2026-01-01' OR service_date > '2026-01-31')
|
||
|
||
UNION ALL
|
||
|
||
SELECT
|
||
'日期为空的待服务订单' AS category,
|
||
COUNT(*) AS count
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND status = 1
|
||
AND deleted = 0
|
||
AND service_date IS NULL;
|
||
|
||
-- ============================================
|
||
-- SQL 7: 查看所有待服务订单的详细信息
|
||
-- ============================================
|
||
SELECT
|
||
id,
|
||
order_no,
|
||
service_date,
|
||
time_slot,
|
||
service_name,
|
||
CASE
|
||
WHEN service_date IS NULL THEN '⚠️ 无日期'
|
||
WHEN service_date >= '2026-01-01' AND service_date <= '2026-01-31' THEN '✅ 1月'
|
||
WHEN service_date < '2026-01-01' THEN CONCAT('📅 ', DATE_FORMAT(service_date, '%Y年%m月'))
|
||
WHEN service_date > '2026-01-31' THEN CONCAT('📅 ', DATE_FORMAT(service_date, '%Y年%m月'))
|
||
END AS date_category,
|
||
create_time
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND status = 1
|
||
AND deleted = 0
|
||
ORDER BY
|
||
CASE
|
||
WHEN service_date IS NULL THEN 3
|
||
WHEN service_date >= '2026-01-01' AND service_date <= '2026-01-31' THEN 1
|
||
ELSE 2
|
||
END,
|
||
service_date;
|
||
|
||
-- ============================================
|
||
-- SQL 8: 检查预约页面的查询条件
|
||
-- ============================================
|
||
-- 预约页面可能使用的查询条件
|
||
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,
|
||
create_time
|
||
FROM `order`
|
||
WHERE user_id = 1
|
||
AND deleted = 0
|
||
ORDER BY create_time DESC
|
||
LIMIT 100;
|
||
|
||
-- ============================================
|
||
-- 执行说明
|
||
-- ============================================
|
||
/*
|
||
1. 在Navicat中依次执行上面的SQL
|
||
2. 重点关注:
|
||
- SQL 1: 查看订单状态分布,确认是否有62个待服务订单
|
||
- SQL 2: 查看待服务订单的月份分布
|
||
- SQL 4: 查看日历实际能查到多少订单
|
||
- SQL 6: 统计各类订单的数量
|
||
|
||
3. 根据结果判断:
|
||
- 如果62个订单分布在不同月份 → 需要添加月份切换功能
|
||
- 如果部分订单status=0 → 需要修改日历查询条件
|
||
- 如果service_date为空 → 需要修复数据
|
||
|
||
4. 将结果截图或复制,以便分析问题
|
||
*/
|