package com.lesingle.common.constants;

/**
 * 缓存相关常量
 */
public final class CacheConstants {

    private CacheConstants() {}

    /** 用户角色缓存 key 前缀 */
    public static final String USER_ROLES_PREFIX = "user:roles:";

    /** 用户权限缓存 key 前缀 */
    public static final String USER_PERMS_PREFIX = "user:perms:";

    /** 认证缓存天数 */
    public static final int AUTH_CACHE_DAYS = 7;

    /** Token 黑名单 key 前缀（用于登出/密码修改后使旧 Token 失效） */
    public static final String TOKEN_BLACKLIST_PREFIX = "token:blacklist:";

    /** 短信验证码 key 前缀（值: 6位数字验证码，TTL: 5分钟） */
    public static final String SMS_CODE_PREFIX = "sms:code:";

    /** 短信发送间隔 key 前缀（值: "1"，TTL: 60秒） */
    public static final String SMS_INTERVAL_PREFIX = "sms:interval:";

    /** 短信每日发送次数 key 前缀（值: 当日发送次数，TTL: 到当天24:00） */
    public static final String SMS_DAILY_PREFIX = "sms:daily:";

    /** 短信验证失败次数 key 前缀（值: 失败次数，TTL: 5分钟） */
    public static final String SMS_VERIFY_PREFIX = "sms:verify:";

    /** 短信验证码有效期（分钟） */
    public static final int SMS_CODE_EXPIRE_MINUTES = 5;

    /** 短信发送间隔（秒） */
    public static final int SMS_INTERVAL_SECONDS = 60;

    /** 短信每日发送上限 */
    public static final int SMS_DAILY_LIMIT = 15;

    /** 短信验证失败上限（超过后需重新获取验证码） */
    public static final int SMS_VERIFY_FAIL_LIMIT = 5;
}
