init local code
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
package com.yunhai.cms.entity;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Index;
|
||||
import javax.persistence.Table;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* CMS 文章(方案 §5.1 表3)。
|
||||
* 审核状态机为演进项(触发后加 audit_status 列);ext_json 保留键:
|
||||
* {@code wechat}(推送回执,本期不写)、{@code albums}(图集演进)。
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Entity
|
||||
@Table(name = "cms_article", indexes = {
|
||||
@Index(name = "idx_art_list", columnList = "site_id, category_id, status, publish_time"),
|
||||
@Index(name = "idx_art_site_top", columnList = "site_id, status, topmost")})
|
||||
public class CmsArticle extends BaseEntity {
|
||||
|
||||
/** 所属站点(隔离/查询维度;文章不冗余 sch_id,权限经 site 一跳映射) */
|
||||
@Column(name = "site_id", nullable = false)
|
||||
private Integer siteId;
|
||||
|
||||
/** 所属栏目(逻辑外键 → cms_category.id) */
|
||||
@Column(name = "category_id", nullable = false)
|
||||
private Integer categoryId;
|
||||
|
||||
/** 标题 */
|
||||
@Column(name = "title", nullable = false, length = 200)
|
||||
private String title;
|
||||
|
||||
/** 摘要(列表/SEO 用,空=截取正文) */
|
||||
@Column(name = "summary", length = 500)
|
||||
private String summary;
|
||||
|
||||
/** 正文 HTML(wangEditor 产出,保存时 jsoup 白名单清洗,方案 §8.5) */
|
||||
@Column(name = "content", columnDefinition = "LONGTEXT")
|
||||
private String content;
|
||||
|
||||
/** 封面图 URL */
|
||||
@Column(name = "cover_image", length = 500)
|
||||
private String coverImage;
|
||||
|
||||
/** 作者账号(发布时从 BoaUser 填充) */
|
||||
@Column(name = "author_account", length = 64)
|
||||
private String authorAccount;
|
||||
|
||||
/** 作者姓名(冗余展示) */
|
||||
@Column(name = "author_name", length = 64)
|
||||
private String authorName;
|
||||
|
||||
/** 来源(转载出处) */
|
||||
@Column(name = "source", length = 128)
|
||||
private String source;
|
||||
|
||||
/** 状态:0=草稿 1=已发布 2=已下架(见 ArticleStatusEnum) */
|
||||
@Column(name = "status", nullable = false)
|
||||
private Integer status = 0;
|
||||
|
||||
/** 置顶:0/1 */
|
||||
@Column(name = "topmost", nullable = false)
|
||||
private Integer topmost = 0;
|
||||
|
||||
/** 发布时间(空=保存即发布;未来=定时发布) */
|
||||
@Column(name = "publish_time")
|
||||
private LocalDateTime publishTime;
|
||||
|
||||
/** 下架时间(可选,@Scheduled 每分钟扫描到期记录) */
|
||||
@Column(name = "offline_time")
|
||||
private LocalDateTime offlineTime;
|
||||
|
||||
/** 浏览量(MVP 异步累加,量大后改缓存聚合) */
|
||||
@Column(name = "view_count", nullable = false)
|
||||
private Integer viewCount = 0;
|
||||
|
||||
/** 扩展字段 JSON(wechat/albums 预留,免 DDL 演进) */
|
||||
@Column(name = "ext_json", columnDefinition = "JSON")
|
||||
private String extJson;
|
||||
}
|
||||
Reference in New Issue
Block a user