Files

81 lines
4.0 KiB
Go
Raw Permalink Normal View History

/**
* CMS文章数据模型
* @Author: david.yan@qq.com
* @Date: 2021-11-29 15:16:26
* @LastEditors: david.yan@qq.com
* @LastEditTime: 2021-12-08 15:59:00
* @Description: 定义文章相关的数据结构和数据库映射
*/
package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
"git.apinb.com/bsm-sdk/core/types"
)
// CmsPost CMS文章数据模型
// 包含文章的基本信息、统计数据、关联数据等
type CmsPost struct {
types.Std_IICUDS // 标准IICUDS字段Identity、CreatedAt、UpdatedAt等
types.Std_Owner // 标准所有者字段
SiteIdentity string `gorm:"column:site_identity;type:varchar(36);index;" json:"site_identity"`
// 基本信息
Types int32 `gorm:"column:types;type:varchar(255);default:'';" json:"types"` // 文章类型
Title string `gorm:"column:title;type:varchar(255);default:'';" json:"title"` // 文章标题
Hash string `gorm:"column:hash;type:varchar(255);uniqueIndex;" json:"hash"` // 文章唯一键值用于URL等
Description string `gorm:"column:description;type:varchar(255);default:'';" json:"description"` // 文章描述/摘要
CoverPath string `gorm:"column:cover_path;type:varchar(255);default:'';" json:"cover_path"` // 封面图片路径
Content string `gorm:"column:content;type:text;default:'';" json:"content"` // 文章正文内容
Lang string `gorm:"type:varchar(20);"` // 语言
TargetUrl string `gorm:"column:target_url;type:varchar(255);default:''" json:"target_url"` // 目标链接
Rights string `gorm:"column:rights;type:varchar(255);default:''" json:"rights"` // 权限
// 作者信息
Author string `gorm:"column:author;type:varchar(255);default:''" json:"author"` // 作者姓名
AuthorIdentity string `gorm:"column:author_identity;type:varchar(36);default:'';" json:"author_identity"` // 作者唯一标识
// 来源方
SourceOrigin string `gorm:"type:varchar(255);"` // 简称
SourceUrl string `gorm:"column:source_url;type:varchar(255);default:''" json:"source_url"` // 源链接
// 统计数据
Hits int64 `gorm:"column:hits;default:0" json:"hits"` // 点击量/浏览量
LikeHits int64 `gorm:"column:like_hits;default:0" json:"like_hits"` // 点赞数量
UnlikeHits int64 `gorm:"column:unlike_hits;default:0" json:"unlike_hits"` // 踩赞数量
CommentHits int64 `gorm:"column:comment_hits;default:0" json:"comment_hits"` // 评论数量
// 其他属性
HasAccessory bool `gorm:"column:has_accessory;type:bool;default:false" json:"has_accessory"` // 是否有附件
// 关联数据标识(不存储到数据库,仅用于数据传输)
CategoryIdentityArray []string `gorm:"-" json:"category_identity_array"` // 关联的分类标识列表
TagsIdentityArray []string `gorm:"-" json:"tags_identity_array"` // 关联的标签标识列表
AccessoryIdentityArray []string `gorm:"-" json:"accessory_identity_array"` // 关联的附件标识列表
// 关联数据对象(通过外键关联)
Accessories []*CmsAccessory `gorm:"foreignkey:PostId;references:ID"` // 文章附件列表
Categories []*CmsRelateCategory `gorm:"foreignkey:PostIdentity;references:Identity"` // 文章分类关联列表
Tags []*CmsRelateTags `gorm:"foreignkey:PostIdentity;references:Identity"` // 文章标签关联列表
ExtendUrl string // 扩展URL
ExtendData string // 扩展:数据
ExtendImg string // 扩展:图片
ExtendDesc string // 扩展:描述
Published time.Time // 事件发生时间
}
// init 初始化函数,将模型注册到数据库迁移表
func init() {
database.MigrateTables = append(database.MigrateTables, &CmsPost{})
}
// TableName 指定数据库表名
// 返回: 数据库表名
func (table *CmsPost) TableName() string {
return "cms_post"
}