-- 用户签到时
UPDATE
  签到表
SET
  连续签到天数 = CASE 最近签到日期
    WHEN Today THEN 连续签到天数
    WHEN Today - 1 THEN (连续签到天数 + 1) MOD 8
    ELSE 1
  END,
  最近签到日期 = Today
WHERE
  用户ID = 用户ID;

-- 查询用户连续签到天数
SELECT
  CASE
    WHEN 最近签到日期 >= Today - 1 THEN 连续签到天数
    ELSE 0
  END AS 连续签到天数
FROM
  签到表
WHERE
  用户ID = 用户ID;