package com.dora.service;

/**
 * 实名认证请求限制服务接口
 * 
 * 用于控制用户每日实名认证请求次数，防止恶意调用和API成本控制
 *
 * @author Dora
 */
public interface IdentityVerifyLimitService {

    /**
     * 检查用户今日是否还可以发起实名认证请求
     * 
     * @param userId 用户ID
     * @return true-可以发起请求, false-已达当日上限
     */
    boolean canMakeVerifyRequest(Long userId);

    /**
     * 增加用户今日实名认证请求计数
     * 此方法应在实际发起阿里云API调用前调用
     * 
     * @param userId 用户ID
     */
    void incrementVerifyRequest(Long userId);

    /**
     * 获取用户今日已发起的认证请求次数
     * 
     * @param userId 用户ID
     * @return 今日请求次数
     */
    int getTodayRequestCount(Long userId);

    /**
     * 获取用户今日剩余可请求次数
     * 
     * @param userId 用户ID
     * @return 剩余请求次数
     */
    int getRemainingRequests(Long userId);

    /**
     * 获取每日请求限制数量
     * 
     * @return 每日限制次数
     */
    int getDailyLimit();

    /**
     * 获取限制重置时间（下一个0点的时间戳）
     * 
     * @return 重置时间戳（毫秒）
     */
    long getNextResetTime();
}
