81 lines
4.0 KiB
Go
81 lines
4.0 KiB
Go
/**
|
||
* 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"
|
||
}
|