package com.red.circle.other.infra.database.cache.service.other;

/**
 * 7天打卡服务.
 *
 * @author pengliang on 2020/10/9
 */
public interface CheckInCacheService {

  /**
   * 缓存用户打卡天数.
   *
   * @param userId              用户id
   * @param timeoutMilliseconds 过期时间
   */
  Long incrCheckInDays(Long userId, long timeoutMilliseconds);

  /**
   * 缓存用户打卡天数.
   *
   * @param userId 用户id
   * @return ignore
   */
  Integer getCheckInDays(Long userId);

  /**
   * 标记用户已打卡.
   *
   * @param userId              用户id
   * @param timeoutMilliseconds 过期时间
   * @return ignore
   */
  Boolean markDaySevenCheckIn(Long userId, long timeoutMilliseconds);

  /**
   * 获取用户是否已打卡.
   *
   * @param userId 用户id
   * @return ignore
   */
  Boolean getMarkDaySevenCheckIn(Long userId);

  /**
   * 标记用户每日签到.
   *
   * @param userId 用户id
   */
  Boolean markDailyCheckIn(Long userId);

  /**
   * 校验用户今天是否已签到.
   *
   * @param userId 用户id
   * @return true 今日已签到
   */
  Boolean checkDailyCheckIn(Long userId);

}
