mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-05 16:56:22 +00:00
feat: 更新评论和帖子模型,添加用户信息和原创标识,优化API请求和组件结构
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/snowykami/neo-blog/internal/dto"
|
||||
"github.com/snowykami/neo-blog/pkg/constant"
|
||||
"gorm.io/gorm"
|
||||
@ -13,10 +14,11 @@ type Post struct {
|
||||
Title string `gorm:"type:text;not null"` // 帖子标题
|
||||
Cover string `gorm:"type:text"` // 帖子封面图
|
||||
Content string `gorm:"type:text;not null"` // 帖子内容
|
||||
Type string `gorm:"type:text;default:markdown"` // markdown类型,支持markdown或html
|
||||
Type string `gorm:"type:text;default:markdown"` // markdown类型,支持markdown或html或txt
|
||||
CategoryID uint `gorm:"index"` // 帖子分类ID
|
||||
Category Category `gorm:"foreignKey:CategoryID;references:ID"` // 关联的分类
|
||||
Labels []Label `gorm:"many2many:post_labels;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"` // 关联的标签
|
||||
IsOriginal bool `gorm:"default:true"` // 是否为原创帖子
|
||||
IsPrivate bool `gorm:"default:false"`
|
||||
LikeCount uint64
|
||||
CommentCount uint64
|
||||
@ -44,26 +46,36 @@ func (p *Post) AfterUpdate(tx *gorm.DB) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Post) ToDto() dto.PostDto {
|
||||
return dto.PostDto{
|
||||
ID: p.ID,
|
||||
UserID: p.UserID,
|
||||
Title: p.Title,
|
||||
Content: p.Content,
|
||||
Cover: p.Cover,
|
||||
Type: p.Type,
|
||||
IsPrivate: p.IsPrivate,
|
||||
func (p *Post) ToDto() *dto.PostDto {
|
||||
fmt.Println("User", p.User)
|
||||
return &dto.PostDto{
|
||||
ID: p.ID,
|
||||
UserID: p.UserID,
|
||||
Title: p.Title,
|
||||
Content: p.Content,
|
||||
Cover: p.Cover,
|
||||
Type: p.Type,
|
||||
IsOriginal: p.IsOriginal,
|
||||
IsPrivate: p.IsPrivate,
|
||||
Labels: func() []dto.LabelDto {
|
||||
labelDtos := make([]dto.LabelDto, len(p.Labels))
|
||||
for i, label := range p.Labels {
|
||||
labelDtos[i] = label.ToDto()
|
||||
}
|
||||
return labelDtos
|
||||
}(),
|
||||
LikeCount: p.LikeCount,
|
||||
CommentCount: p.CommentCount,
|
||||
ViewCount: p.ViewCount,
|
||||
Heat: p.Heat,
|
||||
CreatedAt: p.CreatedAt,
|
||||
UpdatedAt: p.UpdatedAt,
|
||||
User: p.User.ToDto(),
|
||||
}
|
||||
}
|
||||
|
||||
// ToDtoWithShortContent 返回一个简化的 DTO,内容可以根据需要截断
|
||||
func (p *Post) ToDtoWithShortContent(contentLength int) dto.PostDto {
|
||||
func (p *Post) ToDtoWithShortContent(contentLength int) *dto.PostDto {
|
||||
dtoPost := p.ToDto()
|
||||
if len(p.Content) > contentLength {
|
||||
dtoPost.Content = p.Content[:contentLength] + "..."
|
||||
|
@ -25,8 +25,8 @@ type UserOpenID struct {
|
||||
Sub string `gorm:"index"` // OIDC Sub openid
|
||||
}
|
||||
|
||||
func (user *User) ToDto() *dto.UserDto {
|
||||
return &dto.UserDto{
|
||||
func (user *User) ToDto() dto.UserDto {
|
||||
return dto.UserDto{
|
||||
ID: user.ID,
|
||||
Username: user.Username,
|
||||
Nickname: user.Nickname,
|
||||
|
Reference in New Issue
Block a user