package com.fs.statis.dto;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 用户活动统计数据传输对象
 * <p>
 * 该类用于封装和传输用户活动相关的统计数据，
 * 包括观看人数、完成人数、完成率、观看次数、完成次数、
 * 答题人数、答对人数、正确率、奖励次数和奖励金额等信息。
 * </p>
 *
 * @author xdd
 * @date 2025-02-27
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AnalysisPreviewDTO implements Serializable {

    /**
     * 观看人数
     * <p>统计周期内，观看了活动内容的不重复用户数量。</p>
     */
    private long watchUserCount;

    /**
     * 完播人数
     * <p>统计周期内，完成了指定活动目标的不重复用户数量。</p>
     */
    private long completedUserCount;

    /**
     * 完播率
     * <p>通常指 完成用户数 / 观看用户数 * 100%。注意：此处原始数据类型为字符串，可能需要业务层进行转换或特殊处理。</p>
     */
    private String completedRate;

    /**
     * 观看次数
     * <p>统计周期内，活动内容被观看的总次数（可能包含重复观看）。</p>
     */
    private long watchCount;

    /**
     * 完播次数
     * <p>统计周期内，活动目标被完成的总次数。</p>
     */
    private long completedCount;

    /**
     * 视频完播率
     */
    private String watchRate;

    /**
     * 答题人数 (或参与成员数)
     * <p>统计周期内，参与了答题环节的不重复用户数量。</p>
     */
    private long answerMemberCount;

    /**
     * 正确人数
     * <p>统计周期内，至少答对一题的不重复用户数量（具体定义需根据业务确认）。</p>
     */
    private long correctUserCount;

    /**
     * 正确率
     * <p>通常指 答对题目总数 / 回答题目总数 * 100% 或其他业务定义。注意：此处原始数据类型为字符串，可能需要业务层进行转换或特殊处理。</p>
     */
    private String correctRate;

    /**
     * 答题红包个数
     * <p>统计周期内，发放奖励的总次数或总数量。</p>
     */
    private long rewardCount;

    /**
     * 答题红包金额（元）
     * <p>统计周期内，发放奖励的总金额。具体单位（如元、分）需根据业务确定。</p>
     */
    private BigDecimal rewardMoney;

}
