package org.xyzh.common.vo;

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

/**
 * @description 资源推荐VO（用于管理端，平铺结构）
 * @filename ResourceRecommendVO.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-01-XX
 */
public class ResourceRecommendVO implements Serializable {
    private static final long serialVersionUID = 1L;
    
    // ==================== 推荐表字段 ====================
    /**
     * 推荐ID
     */
    private String id;
    
    /**
     * 资源ID
     */
    private String resourceID;
    
    /**
     * 推荐类型（1-热门资源，2-思政资源）
     */
    private Integer recommendType;
    
    /**
     * 排序号
     */
    private Integer orderNum;
    
    /**
     * 推荐理由
     */
    private String reason;
    
    /**
     * 推荐创建者
     */
    private String creator;
    
    /**
     * 推荐更新者
     */
    private String updater;
    
    /**
     * 推荐创建时间
     */
    private Date createTime;
    
    /**
     * 推荐更新时间
     */
    private Date updateTime;
    
    /**
     * 推荐删除时间
     */
    private Date deleteTime;
    
    /**
     * 推荐是否删除
     */
    private Boolean deleted;
    
    // ==================== 资源表字段 ====================
    /**
     * 资源标题
     */
    private String title;
    
    /**
     * 资源简介
     */
    private String summary;
    
    /**
     * 封面图片
     */
    private String coverImage;
    
    /**
     * 标签ID（文章分类标签，tagType=1）
     */
    private String tagID;
    
    /**
     * 作者
     */
    private String author;
    
    /**
     * 来源
     */
    private String source;
    
    /**
     * 来源URL
     */
    private String sourceUrl;
    
    /**
     * 浏览次数
     */
    private Integer viewCount;
    
    /**
     * 点赞次数
     */
    private Integer likeCount;
    
    /**
     * 收藏次数
     */
    private Integer collectCount;
    
    /**
     * 状态（0草稿 1已发布 2下架）
     */
    private Integer status;
    
    /**
     * 是否推荐
     */
    private Boolean isRecommend;
    
    /**
     * 是否轮播
     */
    private Boolean isBanner;
    
    /**
     * 发布时间
     */
    private Date publishTime;
    
    /**
     * 资源创建者
     */
    private String resourceCreator;
    
    /**
     * 资源更新者
     */
    private String resourceUpdater;
    
    /**
     * 资源创建时间
     */
    private Date resourceCreateTime;
    
    /**
     * 资源更新时间
     */
    private Date resourceUpdateTime;
    
    /**
     * 当前用户是否有读权限
     */
    private Boolean canRead;
    
    /**
     * 当前用户是否有写权限
     */
    private Boolean canWrite;

    // ==================== Getter and Setter ====================
    
    public String getId() {
        return id;
    }

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

    public String getResourceID() {
        return resourceID;
    }

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

    public Integer getRecommendType() {
        return recommendType;
    }

    public void setRecommendType(Integer recommendType) {
        this.recommendType = recommendType;
    }

    public Integer getOrderNum() {
        return orderNum;
    }

    public void setOrderNum(Integer orderNum) {
        this.orderNum = orderNum;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public String getCreator() {
        return creator;
    }

    public void setCreator(String creator) {
        this.creator = creator;
    }

    public String getUpdater() {
        return updater;
    }

    public void setUpdater(String updater) {
        this.updater = updater;
    }

    public Date getCreateTime() {
        return createTime;
    }

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

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Date getDeleteTime() {
        return deleteTime;
    }

    public void setDeleteTime(Date deleteTime) {
        this.deleteTime = deleteTime;
    }

    public Boolean getDeleted() {
        return deleted;
    }

    public void setDeleted(Boolean deleted) {
        this.deleted = deleted;
    }

    public String getTitle() {
        return title;
    }

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

    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 String getSourceUrl() {
        return sourceUrl;
    }

    public void setSourceUrl(String sourceUrl) {
        this.sourceUrl = sourceUrl;
    }

    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 Boolean getIsRecommend() {
        return isRecommend;
    }

    public void setIsRecommend(Boolean isRecommend) {
        this.isRecommend = isRecommend;
    }

    public Boolean getIsBanner() {
        return isBanner;
    }

    public void setIsBanner(Boolean isBanner) {
        this.isBanner = isBanner;
    }

    public Date getPublishTime() {
        return publishTime;
    }

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

    public String getResourceCreator() {
        return resourceCreator;
    }

    public void setResourceCreator(String resourceCreator) {
        this.resourceCreator = resourceCreator;
    }

    public String getResourceUpdater() {
        return resourceUpdater;
    }

    public void setResourceUpdater(String resourceUpdater) {
        this.resourceUpdater = resourceUpdater;
    }

    public Date getResourceCreateTime() {
        return resourceCreateTime;
    }

    public void setResourceCreateTime(Date resourceCreateTime) {
        this.resourceCreateTime = resourceCreateTime;
    }

    public Date getResourceUpdateTime() {
        return resourceUpdateTime;
    }

    public void setResourceUpdateTime(Date resourceUpdateTime) {
        this.resourceUpdateTime = resourceUpdateTime;
    }

    public Boolean getCanRead() {
        return canRead;
    }

    public void setCanRead(Boolean canRead) {
        this.canRead = canRead;
    }

    public Boolean getCanWrite() {
        return canWrite;
    }

    public void setCanWrite(Boolean canWrite) {
        this.canWrite = canWrite;
    }
}
