package org.xyzh.common.vo;

import org.xyzh.common.dto.BaseDTO;
import java.util.Date;

/**
 * @description 用户收藏VO - 扁平化收藏信息和关联资源/课程详情
 * @filename UserCollectionVO.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-31
 */
public class UserCollectionVO extends BaseDTO {
    
    private static final long serialVersionUID = 1L;
    
    // ========== 收藏基本信息 ==========
    /**
     * @description 用户ID
     */
    private String userID;
    
    /**
     * @description 收藏类型（1资源 2课程）
     */
    private Integer collectionType;
    
    /**
     * @description 收藏对象ID
     */
    private String collectionID;

    private Integer collectionValue;
    
    /**
     * @description 收藏时间
     */
    private Date collectionTime;
    
    // ========== 资源详情（collectionType=1时有效） ==========
    /**
     * @description 资源ID
     */
    private String resourceID;
    
    /**
     * @description 资源标题
     */
    private String title;
    
    /**
     * @description 资源内容
     */
    private String content;
    
    /**
     * @description 资源简介
     */
    private String summary;
    
    /**
     * @description 封面图片
     */
    private String coverImage;
    
    /**
     * @description 标签ID
     */
    private String tagID;
    
    /**
     * @description 作者
     */
    private String author;
    
    /**
     * @description 来源
     */
    private String source;
    
    /**
     * @description 浏览次数
     */
    private Integer viewCount;
    
    /**
     * @description 点赞次数
     */
    private Integer likeCount;
    
    /**
     * @description 收藏次数
     */
    private Integer collectCount;
    
    /**
     * @description 资源状态
     */
    private Integer status;
    
    /**
     * @description 发布时间
     */
    private Date publishTime;
    
    // ========== 课程详情（collectionType=2时有效） ==========
    /**
     * @description 课程ID
     */
    private String courseID;
    
    /**
     * @description 课程名称
     */
    private String courseName;
    
    /**
     * @description 课程描述
     */
    private String description;
    
    /**
     * @description 课程时长（分钟）
     */
    private Integer duration;
    
    /**
     * @description 授课老师
     */
    private String teacher;
    
    /**
     * @description 课程状态
     */
    private Integer courseStatus;
    
    /**
     * @description 学习人数
     */
    private Integer learnCount;
    
    // ========== Getters and Setters ==========
    
    public String getUserID() {
        return userID;
    }

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

    public Integer getCollectionType() {
        return collectionType;
    }

    public void setCollectionType(Integer collectionType) {
        this.collectionType = collectionType;
    }

    public String getCollectionID() {
        return collectionID;
    }

    public void setCollectionID(String collectionID) {
        this.collectionID = collectionID;
    }

    public Integer getCollectionValue() {
        return collectionValue;
    }

    public void setCollectionValue(Integer collectionValue) {
        this.collectionValue = collectionValue;
    }

    public Date getCollectionTime() {
        return collectionTime;
    }

    public void setCollectionTime(Date collectionTime) {
        this.collectionTime = collectionTime;
    }

    public String getResourceID() {
        return resourceID;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public String getSummary() {
        return summary;
    }

    public void setSummary(String summary) {
        this.summary = summary;
    }

    public String getCoverImage() {
        return coverImage;
    }

    public void setCoverImage(String coverImage) {
        this.coverImage = coverImage;
    }

    public String getTagID() {
        return tagID;
    }

    public void setTagID(String tagID) {
        this.tagID = tagID;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source;
    }

    public Integer getViewCount() {
        return viewCount;
    }

    public void setViewCount(Integer viewCount) {
        this.viewCount = viewCount;
    }

    public Integer getLikeCount() {
        return likeCount;
    }

    public void setLikeCount(Integer likeCount) {
        this.likeCount = likeCount;
    }

    public Integer getCollectCount() {
        return collectCount;
    }

    public void setCollectCount(Integer collectCount) {
        this.collectCount = collectCount;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Date getPublishTime() {
        return publishTime;
    }

    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }

    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 getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getDuration() {
        return duration;
    }

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

    public String getTeacher() {
        return teacher;
    }

    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }

    public Integer getCourseStatus() {
        return courseStatus;
    }

    public void setCourseStatus(Integer courseStatus) {
        this.courseStatus = courseStatus;
    }

    public Integer getLearnCount() {
        return learnCount;
    }

    public void setLearnCount(Integer learnCount) {
        this.learnCount = learnCount;
    }

    @Override
    public String toString() {
        return "UserCollectionVO{" +
                "id=" + getID() +
                ", userID='" + userID + '\'' +
                ", collectionType=" + collectionType +
                ", collectionID='" + collectionID + '\'' +
                ", collectionTime=" + collectionTime +
                ", resourceID='" + resourceID + '\'' +
                ", title='" + title + '\'' +
                ", courseID='" + courseID + '\'' +
                ", courseName='" + courseName + '\'' +
                '}';
    }
}

