package com.fs.live.domain;

import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 直播下单动效提示配置（全局单条，config_id 固定为 1）
 *
 * <p>用于控制直播间"[用户昵称] 刚刚下单了 [商品名称]"类提示的推送规则，支持频率控制、假数据填充、
 * 商品范围、昵称库、文案模板等配置。高并发下通过 Redis 限流保证每分钟不超过 rateMaxPerMinute 条。</p>
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class LiveOrderTipConfig extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 主键ID，固定为 1 */
    private Long configId;

    /** 动效提示总开关 0关闭 1开启 */
    @Excel(name = "动效总开关")
    private Integer enabled;

    /** 每分钟最少显示条数（真实不足用假订单补齐） */
    @Excel(name = "每分钟最少条数")
    private Integer rateMinPerMinute;

    /** 每分钟最多显示条数（超出丢弃避免刷屏） */
    @Excel(name = "每分钟最多条数")
    private Integer rateMaxPerMinute;

    /** 频率控制滑动窗口秒数，默认60秒 */
    private Integer windowSec;

    /** 假数据填充开关 0关闭 1开启 */
    @Excel(name = "假数据开关")
    private Integer fakeEnabled;

    /** 假订单最小生成间隔（秒），用于限制假数据定时任务 */
    private Integer fakeMinIntervalSec;

    /**
     * 商品范围：all=全部在售商品 live=仅当前直播间在售 custom=指定商品ID
     */
    private String goodsScope;

    /** 指定商品ID列表，英文逗号分隔，goodsScope=custom 时生效 */
    private String customGoodsIds;

    /** 昵称库（每行一个或英文逗号分隔） */
    private String nicknameLibrary;

    /** 真实昵称是否脱敏展示 0否 1是（仅显示首字+**） */
    private Integer nicknameMask;

    /** 刚刚下单模板（30秒内），占位符：[用户昵称] [商品名称] */
    private String templateJustNow;

    /** 时间前模板（>刚刚阈值）：[时间] [用户昵称] [商品名称] */
    private String templateAgo;

    /** 刚刚下单阈值秒数，超过此阈值切换到 templateAgo */
    private Integer justNowSeconds;
}
