/** * 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" }