100 lines
2.5 KiB
SQL
100 lines
2.5 KiB
SQL
-- ========================================
|
||
-- 诊断时卡不显示问题 - 简化版
|
||
-- 日期: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;
|