package cn.meowrain.aioj.backend.blogservice.dao.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.experimental.Accessors;

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

/**
 * 文章实体类
 *
 * @author AIOJ
 */
@Data
@TableName(value = "blog_article")
@Accessors(chain = true)
public class Article implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 文章标题
     */
    private String title;

    /**
     * 文章别名（URL友好标识，用于SEO）
     */
    private String slug;

    /**
     * 文章摘要
     */
    private String summary;

    /**
     * 文章内容（Markdown格式）
     */
    private String content;

    /**
     * 渲染后的HTML内容（可选缓存）
     */
    private String contentHtml;

    /**
     * 封面图片URL
     */
    private String coverImage;

    /**
     * 作者用户ID
     */
    private Long authorId;

    /**
     * 分类ID
     */
    private Long categoryId;

    /**
     * 浏览次数
     */
    private Integer viewCount;

    /**
     * 点赞数（冗余字段，便于查询）
     */
    private Integer likeCount;

    /**
     * 评论数（冗余字段，便于查询）
     */
    private Integer commentCount;

    /**
     * 收藏数（冗余字段，便于查询）
     */
    private Integer collectCount;

    /**
     * 是否置顶（1=置顶，0=普通）
     */
    private Integer isTop;

    /**
     * 是否精华（1=精华，0=普通）
     */
    private Integer isEssence;

    /**
     * 是否发布（1=已发布，0=草稿）
     */
    private Integer isPublished;

    /**
     * 文章状态：1=正常，2=审核中，3=已关闭，4=已删除
     */
    private Integer status;

    /**
     * 发布时间
     */
    private Date publishTime;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;
}
