peixue-dev/Archive/peidu-temp-files/sql/[一次性]诊断时卡-简化版-2026-01-25.sql

100 lines
2.5 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-25
-- ⚠️ 请将 13800138000 替换为您的实际手机号
-- ========================================
-- 第1步查看当前用户的所有时卡
SELECT
id,
user_id,
card_no,
card_name,
status,
total_hours,
used_hours,
remaining_hours,
start_date,
expire_date,
deleted,
create_time
FROM time_card
WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
ORDER BY create_time DESC;
-- 第2步检查时卡状态
SELECT
id,
card_name,
status AS status_code,
remaining_hours,
expire_date,
deleted
FROM time_card
WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
ORDER BY create_time DESC;
-- 第3步模拟后端查询完整条件
SELECT
id,
card_no,
card_name,
status,
total_hours,
used_hours,
remaining_hours,
start_date,
expire_date
FROM time_card
WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
AND status = 1
AND remaining_hours > 0
AND expire_date > CURRENT_DATE
AND deleted = 0
ORDER BY expire_date ASC;
-- 第4步查看当前日期
SELECT CURRENT_DATE AS today;
-- ========================================
-- 修复SQL根据上面的检查结果选择执行
-- ========================================
-- 修复1更新status为1进行中
-- UPDATE time_card
-- SET status = 1, update_time = CURRENT_TIMESTAMP
-- WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
-- AND status != 1
-- AND remaining_hours > 0
-- AND deleted = 0;
-- 修复2更新expire_date为1年后
-- UPDATE time_card
-- SET expire_date = DATE_ADD(CURRENT_DATE, INTERVAL 1 YEAR),
-- update_time = CURRENT_TIMESTAMP
-- WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
-- AND (expire_date IS NULL OR expire_date <= CURRENT_DATE)
-- AND deleted = 0;
-- 修复3更新start_date为今天
-- UPDATE time_card
-- SET start_date = CURRENT_DATE,
-- update_time = CURRENT_TIMESTAMP
-- WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
-- AND start_date IS NULL
-- AND deleted = 0;
-- 验证修复结果
-- SELECT
-- id,
-- card_name,
-- status,
-- remaining_hours,
-- expire_date
-- FROM time_card
-- WHERE user_id = (SELECT id FROM user WHERE phone = '13800138000' LIMIT 1)
-- AND status = 1
-- AND remaining_hours > 0
-- AND expire_date > CURRENT_DATE
-- AND deleted = 0;