/***********************************************************
 * @Description : 考试表，要有题目、总分数、时间限制、有效日期、创建者等字段
 * @author      : 梁山广(Laing Shan Guang)
 * @date        : 2019/5/14 07:42
 * @email       : liangshanguang2@gmail.com
 ***********************************************************/
// 定义包名，用于组织类文件并避免命名冲突
package lsgwr.exam.vo;

// 导入所需的库和注解
import com.fasterxml.jackson.annotation.JsonFormat;// 用于日期格式的序列化和反序列化
import com.fasterxml.jackson.annotation.JsonProperty;// 用于自定义JSON字段名
import lombok.Data;// 用于自动生成getter、setter等方法

import java.util.Date;// Java日期类
import java.util.List;// Java列表接口
// 使用Lombok的@Data注解自动生成getter、setter等方法
@Data
public class ExamVo {
    // 使用@JsonProperty注解自定义JSON字段名为"id"
    @JsonProperty("id")
    private String examId;// 考试的唯一标识符
    // 使用@JsonProperty注解自定义JSON字段名为"name"
    @JsonProperty("name")
    private String examName;// 考试名称
    // 使用@JsonProperty注解自定义JSON字段名为"avatar"
    @JsonProperty("avatar")
    private String examAvatar;// 考试图标或头像
    // 使用@JsonProperty注解自定义JSON字段名为"desc"
    @JsonProperty("desc")
    private String examDescription;// 考试描述
    // 单选题列表，JSON字段名为"radios"
    @JsonProperty("radios")
    private List<ExamQuestionSelectVo> examQuestionSelectVoRadioList;// 单选题选项列表
    // 多选题列表，JSON字段名为"checks"
    @JsonProperty("checks")
    private List<ExamQuestionSelectVo> examQuestionSelectVoCheckList;// 多选题选项列表
    // 判断题列表，JSON字段名为"judges"
    @JsonProperty("judges")
    private List<ExamQuestionSelectVo> examQuestionSelectVoJudgeList;// 判断题选项列表
    // 考试总分，JSON字段名为"score"
    @JsonProperty("score")
    private Integer examScore;// 考试的总分数
    // 单选题总分，JSON字段名为"radioScore"
    @JsonProperty("radioScore")
    private Integer examScoreRadio;// 单选题的总分数
    // 多选题总分，JSON字段名为"checkScore"
    @JsonProperty("checkScore")
    private Integer examScoreCheck;// 多选题的总分数
    // 判断题总分，JSON字段名为"judgeScore"
    @JsonProperty("judgeScore")
    private Integer examScoreJudge;// 判断题的总分数

    // 考试创建人的名称，JSON字段名为"creator"
    // 注意：这里假设只存储了创建人的名称，实际可能需要根据ID查询数据库获取
    @JsonProperty("creator")
    private String examCreator;// 考试的创建者名称

    // 考试的时间限制（分钟），JSON字段名为"elapse"
    @JsonProperty("elapse")
    private Integer examTimeLimit;// 考试的时间限制，单位为分钟

    // 考试开始时间，JSON字段名为"startDate"
    // 使用@JsonFormat注解指定日期格式和时区
    @JsonProperty("startDate")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date examStartDate;// 考试的开始时间

    // 考试结束时间，JSON字段名为"endDate"
    // 使用@JsonFormat注解指定日期格式和时区
    @JsonProperty("endDate")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date examEndDate;// 考试的结束时间

    // 创建时间，JSON字段名为"createTime"
    // 使用@JsonFormat注解指定日期格式和时区
    @JsonProperty("createTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;// 记录的创建时间

    // 更新时间，JSON字段名为"updateTime"
    // 使用@JsonFormat注解指定日期格式和时区
    @JsonProperty("updateTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;// 记录的更新时间
}
