package cn.novalon.gym.manage.checkIn.constant;

import java.time.LocalDate;
import java.util.UUID;

/**
 * 打卡模块 Redis 键常量
 *
 * @author 付嘉
 * @date 2026-05-30
 */
public final class QRRedisKey {

    private static final String SEPARATOR = ":";
    private static final String QRCODE_USER_DAILY = "qrcode:user:daily";
    private static final String QRCODE_CONTENT = "QR_";
    private QRRedisKey() {
        // 私有构造，防止实例化
    }

    /**
     * 用户当日二维码
     * 格式：qrcode:user:daily:{userId}:{date}
     * 示例：qrcode:user:daily:1001:2026-05-30
     */
    public static String qrcodeUserDaily(Long userId, LocalDate date) {
        return QRCODE_USER_DAILY + SEPARATOR + userId + SEPARATOR + date;
    }

    /**
     * 用户当日二维码（今天）
     */
    public static String qrcodeUserToday(Long userId) {
        return qrcodeUserDaily(userId, LocalDate.now());
    }

    /**
     * 生成二维码内容（每个用户每次调用都不同）
     */
    public static String generateQrcodeContent() {
        return QRCODE_CONTENT + UUID.randomUUID().toString().replace("-", "");
    }
}