package org.xyzh.common.vo;

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

/**
 * @description 学习历史响应VO
 * @filename LearningHistoryVO.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-27
 */
public class LearningHistoryVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * @description 历史记录ID
     */
    private String id;
    
    /**
     * @description 用户ID
     */
    private String userID;
    
    /**
     * @description 用户名称（关联查询）
     */
    private String userName;

    /**
     * @description 学习会话ID
     */
    private String sessionID;
    
    /**
     * @description 资源类型（1资源/新闻 2课程 3章节 4节点）
     */
    private Integer resourceType;
    
    /**
     * @description 资源类型名称
     */
    private String resourceTypeName;
    
    /**
     * @description 资源ID
     */
    private String resourceID;
    
    /**
     * @description 资源标题（关联查询）
     */
    private String resourceTitle;

    /**
     * @description 课程ID
     */
    private String courseID;
    
    /**
     * @description 课程名称（关联查询）
     */
    private String courseName;

    /**
     * @description 章节ID
     */
    private String chapterID;
    
    /**
     * @description 章节名称（关联查询）
     */
    private String chapterName;

    /**
     * @description 节点ID
     */
    private String nodeID;
    
    /**
     * @description 节点名称（关联查询）
     */
    private String nodeName;

    /**
     * @description 关联任务ID
     */
    private String taskID;
    
    /**
     * @description 任务名称（关联查询）
     */
    private String taskName;
    
    /**
     * @description 开始学习时间
     */
    private Date startTime;
    
    /**
     * @description 结束学习时间
     */
    private Date endTime;
    
    /**
     * @description 本次学习时长（秒）
     */
    private Integer duration;
    
    /**
     * @description 学习时长（格式化后，如：1小时20分钟）
     */
    private String durationFormatted;
    
    /**
     * @description 开始进度（0-100）
     */
    private BigDecimal startProgress;
    
    /**
     * @description 结束进度（0-100）
     */
    private BigDecimal endProgress;
    
    /**
     * @description 设备类型
     */
    private String deviceType;
    
    /**
     * @description 创建时间
     */
    private Date createTime;

    // Getters and Setters
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserID() {
        return userID;
    }

    public void setUserID(String userID) {
        this.userID = userID;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getSessionID() {
        return sessionID;
    }

    public void setSessionID(String sessionID) {
        this.sessionID = sessionID;
    }

    public Integer getResourceType() {
        return resourceType;
    }

    public void setResourceType(Integer resourceType) {
        this.resourceType = resourceType;
    }

    public String getResourceTypeName() {
        return resourceTypeName;
    }

    public void setResourceTypeName(String resourceTypeName) {
        this.resourceTypeName = resourceTypeName;
    }

    public String getResourceID() {
        return resourceID;
    }

    public void setResourceID(String resourceID) {
        this.resourceID = resourceID;
    }

    public String getResourceTitle() {
        return resourceTitle;
    }

    public void setResourceTitle(String resourceTitle) {
        this.resourceTitle = resourceTitle;
    }

    public String getCourseID() {
        return courseID;
    }

    public void setCourseID(String courseID) {
        this.courseID = courseID;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public String getChapterID() {
        return chapterID;
    }

    public void setChapterID(String chapterID) {
        this.chapterID = chapterID;
    }

    public String getChapterName() {
        return chapterName;
    }

    public void setChapterName(String chapterName) {
        this.chapterName = chapterName;
    }

    public String getNodeID() {
        return nodeID;
    }

    public void setNodeID(String nodeID) {
        this.nodeID = nodeID;
    }

    public String getNodeName() {
        return nodeName;
    }

    public void setNodeName(String nodeName) {
        this.nodeName = nodeName;
    }

    public String getTaskID() {
        return taskID;
    }

    public void setTaskID(String taskID) {
        this.taskID = taskID;
    }

    public String getTaskName() {
        return taskName;
    }

    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Integer getDuration() {
        return duration;
    }

    public void setDuration(Integer duration) {
        this.duration = duration;
    }

    public String getDurationFormatted() {
        return durationFormatted;
    }

    public void setDurationFormatted(String durationFormatted) {
        this.durationFormatted = durationFormatted;
    }

    public BigDecimal getStartProgress() {
        return startProgress;
    }

    public void setStartProgress(BigDecimal startProgress) {
        this.startProgress = startProgress;
    }

    public BigDecimal getEndProgress() {
        return endProgress;
    }

    public void setEndProgress(BigDecimal endProgress) {
        this.endProgress = endProgress;
    }

    public String getDeviceType() {
        return deviceType;
    }

    public void setDeviceType(String deviceType) {
        this.deviceType = deviceType;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    @Override
    public String toString() {
        return "LearningHistoryVO{" +
                "id='" + id + '\'' +
                ", userID='" + userID + '\'' +
                ", userName='" + userName + '\'' +
                ", resourceType=" + resourceType +
                ", resourceTypeName='" + resourceTypeName + '\'' +
                ", resourceTitle='" + resourceTitle + '\'' +
                ", duration=" + duration +
                ", durationFormatted='" + durationFormatted + '\'' +
                ", startTime=" + startTime +
                ", endTime=" + endTime +
                '}';
    }
}

