package com.ssyf.module.robot.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;

/**
 * 运行配置视图对象
 *
 * @author ELSA
 * @since 2025-12-18
 */
@Data
@Accessors(chain = true)
public class RRunningConfigVo {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 运行配置唯一标识
     */
    private String uuid;

    /**
     * 配置名称
     */
    private String configName;

    /**
     * 时长单位：1秒，2分，3时，4天 ，5周 ，6月 ，7年
     */
    private Integer durationUnit;

    /**
     * 备注信息
     */
    private String notes;

    /**
     * 在线人数最小值
     */
    private Integer minOnlineUsers;

    /**
     * 在线人数最大值
     */
    private Integer maxOnlineUsers;

    /**
     * 开播时长最小值（单位：秒）
     */
    private Integer minLiveDuration;

    /**
     * 开播时长最大值（单位：秒）
     */
    private Integer maxLiveDuration;

    /**
     * 流量爬坡规则 (JSON格式)
     * 示例: [{"minute":0,"count":50},{"minute":10,"count":150}]
     */
    private String rampUpRules;

    /**
     * 人气排名最小值
     */
    private Integer minPopularityRank;

    /**
     * 人气排名最大值
     */
    private Integer maxPopularityRank;

    /**
     * 停留时长最小值（单位：秒）
     */
    private Integer minStayDuration;

    /**
     * 停留时长最大值（单位：秒）
     */
    private Integer maxStayDuration;

    /**
     * 重复进入直播间次数
     */
    private Integer repeatEntetimes;

    /**
     * 专属状态，0 否 ；1 是。
     * 专属运行配置的数据，不受全局的影响。
     */
    private Integer exclusive;

    /**
     * 重复进入周期（1=小时，2=天，3=周，4=月）
     */
    private Integer repeatEntecycle;

    /**
     * 重复进入间隔时长（单位：对应周期单位）
     */
    private Integer repeatEnteinterval;

    /**
     * 切换直播间间隔时长（单位：秒）
     */
    private Integer switchLiveInterval;

    /**
     * 点赞概率（0-100）
     */
    private Integer likeProbability;

    /**
     * 免费热度使用次数最小值
     */
    private Integer minFreeHeatTimes;

    /**
     * 免费热度使用次数最大值
     */
    private Integer maxFreeHeatTimes;

    /**
     * 分享直播间概率（0-100）
     */
    private Integer shareProbability;

    /**
     * 关注概率（0-100）
     */
    private Integer followProbability;

    /**
     * 聊天开关（0=关闭，1=开启）
     */
    private Integer chatSwitch;

    /**
     * 送礼开关（0=关闭，1=开启）
     */
    private Integer giftSwitch;

    /**
     * 活动开关（0=关闭，1=开启）
     */
    private Integer activitySwitch;

    /**
     * 状态（0=禁用，1=启用）
     */
    private Integer status;

    /**
     * 送礼配置唯一标识
     */
    private String giftConfigUuid;

    /**
     * 送礼配置名称
     */
    private String giftConfigName;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 创建人
     */
    private String creator;

    /**
     * 创建人唯一编码
     */
    private String creatorUuid;
}