Files
full/module/base/cms/internal/models/cms_post.go

81 lines
4.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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"
}