168 lines
4.6 KiB
SQL
168 lines
4.6 KiB
SQL
-- 🔍 紧急诊断 - 日历数据不一致问题
|
||
-- 日期: 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的结果:返回了多少条记录
|
||
*/
|