package com.haha.common.constant;

public final class MarketingConstants {

    private MarketingConstants() {}

    public static final String COUPON_CODE_PREFIX = "CP";

    public static final int COUPON_CODE_LENGTH = 16;

    public static final String REDIS_KEY_COUPON_STOCK = "coupon:stock:";

    public static final String REDIS_KEY_COUPON_RECEIVE_LOCK = "coupon:receive:lock:";

    public static final String REDIS_KEY_COUPON_USER_RECEIVED = "coupon:user:received:";

    public static final String REDIS_KEY_ACTIVITY_INFO = "activity:info:";

    public static final String REDIS_KEY_ACTIVITY_LIST = "activity:list";

    public static final long REDIS_CACHE_EXPIRE_HOURS = 1;

    public static final long REDIS_CACHE_EXPIRE_MINUTES = 30;

    public static final int MAX_RECEIVE_LIMIT = 10;

    public static final int DEFAULT_RECEIVE_LIMIT = 1;

    public static final int MAX_VALID_DAYS = 365;

    public static final int DEFAULT_VALID_DAYS = 30;

    public static final int EXPIRE_REMIND_DAYS = 3;

    public static final String ACTIVITY_STATUS_DRAFT = "草稿";
    public static final String ACTIVITY_STATUS_PUBLISHED = "已发布";
    public static final String ACTIVITY_STATUS_ONGOING = "进行中";
    public static final String ACTIVITY_STATUS_PAUSED = "已暂停";
    public static final String ACTIVITY_STATUS_ENDED = "已结束";

    public static final String COUPON_STATUS_UNUSED = "未使用";
    public static final String COUPON_STATUS_USED = "已使用";
    public static final String COUPON_STATUS_EXPIRED = "已过期";

    public static final int DISCOUNT_SCALE = 2;

    public static final int MAX_DISCOUNT_PERCENT = 100;

    public static final int MIN_DISCOUNT_PERCENT = 1;

    // ==================== 邀请活动相关常量 ====================

    /**
     * 邀请码前缀
     */
    public static final String INVITE_CODE_PREFIX = "INV";

    /**
     * 默认每日邀请上限
     */
    public static final int DEFAULT_DAILY_LIMIT = 10;

    /**
     * 默认总邀请上限
     */
    public static final int DEFAULT_TOTAL_LIMIT = 50;

    /**
     * 默认邀请码有效期（天）
     */
    public static final int DEFAULT_INVITE_CODE_EXPIRE_DAYS = 30;

    /**
     * Redis键：邀请码缓存
     */
    public static final String REDIS_KEY_INVITE_CODE = "invite:code:";

    /**
     * Redis键：邀请次数限制
     */
    public static final String REDIS_KEY_INVITE_LIMIT = "invite:limit:";
}
