Files
common-server-public/archive/bbs-go/server/internal/models/response.go
12600k-rog-d4 8f4d399cfd 20251209
2025-12-09 20:33:57 +08:00

218 lines
7.3 KiB
Go

package models
import (
"bbs-go/internal/models/constants"
"time"
"github.com/mlogclub/simple/web"
)
// UserInfo 用户简单信息
type UserInfo struct {
Id int64 `json:"id"`
Type int `json:"type"`
Nickname string `json:"nickname"`
Avatar string `json:"avatar"`
SmallAvatar string `json:"smallAvatar"`
Gender constants.Gender `json:"gender"`
Birthday *time.Time `json:"birthday"`
TopicCount int `json:"topicCount"` // 话题数量
CommentCount int `json:"commentCount"` // 跟帖数量
FansCount int `json:"fansCount"` // 粉丝数量
FollowCount int `json:"followCount"` // 关注数量
Score int `json:"score"` // 积分
Description string `json:"description"`
CreateTime int64 `json:"createTime"`
Forbidden bool `json:"forbidden"` // 是否禁言
Followed bool `json:"followed"` // 是否关注
}
// UserDetail 用户详细信息
type UserDetail struct {
UserInfo
Username string `json:"username"`
BackgroundImage string `json:"backgroundImage"`
SmallBackgroundImage string `json:"smallBackgroundImage"`
HomePage string `json:"homePage"`
Status int `json:"status"`
}
// UserProfile 用户个人信息
type UserProfile struct {
UserDetail
Roles []string `json:"roles"`
PasswordSet bool `json:"passwordSet"` // 密码已设置
Email string `json:"email"`
EmailVerified bool `json:"emailVerified"`
}
type TagResponse struct {
Id int64 `json:"id"`
Name string `json:"name"`
}
type ArticleSimpleResponse struct {
Id int64 `json:"id"`
User *UserInfo `json:"user"`
Tags *[]TagResponse `json:"tags"`
Title string `json:"title"`
Summary string `json:"summary"`
Cover *ImageInfo `json:"cover"`
SourceUrl string `json:"sourceUrl"`
ViewCount int64 `json:"viewCount"`
CommentCount int64 `json:"commentCount"`
LikeCount int64 `json:"likeCount"`
CreateTime int64 `json:"createTime"`
Status int `json:"status"`
Favorited bool `json:"favorited"`
}
type ArticleResponse struct {
ArticleSimpleResponse
Content string `json:"content"`
}
type NodeResponse struct {
Id int64 `json:"id"`
Name string `json:"name"`
Logo string `json:"logo"`
Description string `json:"description"`
}
type SearchTopicResponse struct {
Id int64 `json:"id"`
User *UserInfo `json:"user"`
Node *NodeResponse `json:"node"`
Tags *[]TagResponse `json:"tags"`
Title string `json:"title"`
Summary string `json:"summary"`
CreateTime int64 `json:"createTime"`
}
// 帖子列表返回实体
type TopicResponse struct {
Id int64 `json:"id"`
Type constants.TopicType `json:"type"`
User *UserInfo `json:"user"`
Node *NodeResponse `json:"node"`
Tags *[]TagResponse `json:"tags"`
Title string `json:"title"`
Summary string `json:"summary"`
Content string `json:"content"`
ImageList []ImageInfo `json:"imageList"`
LastCommentTime int64 `json:"lastCommentTime"`
ViewCount int64 `json:"viewCount"`
CommentCount int64 `json:"commentCount"`
LikeCount int64 `json:"likeCount"`
Liked bool `json:"liked"`
CreateTime int64 `json:"createTime"`
Recommend bool `json:"recommend"`
RecommendTime int64 `json:"recommendTime"`
Sticky bool `json:"sticky"`
StickyTime int64 `json:"stickyTime"`
Status int `json:"status"`
Favorited bool `json:"favorited"`
IpLocation string `json:"ipLocation"`
}
// CommentResponse 评论返回数据
type CommentResponse struct {
Id int64 `json:"id"`
User *UserInfo `json:"user"`
EntityType string `json:"entityType"`
EntityId int64 `json:"entityId"`
ContentType string `json:"contentType"`
Content string `json:"content"`
ImageList []ImageInfo `json:"imageList"`
LikeCount int64 `json:"likeCount"`
CommentCount int64 `json:"commentCount"`
Liked bool `json:"liked"`
QuoteId int64 `json:"quoteId"`
Quote *CommentResponse `json:"quote"`
Replies *web.CursorResult `json:"replies"`
IpLocation string `json:"ipLocation"`
Status int `json:"status"`
CreateTime int64 `json:"createTime"`
}
// 收藏返回数据
type FavoriteResponse struct {
Id int64 `json:"id"`
EntityType string `json:"entityType"`
EntityId int64 `json:"entityId"`
Deleted bool `json:"deleted"`
Title string `json:"title"`
Content string `json:"content"`
User *UserInfo `json:"user"`
Url string `json:"url"`
CreateTime int64 `json:"createTime"`
}
// 消息
type MessageResponse struct {
Id int64 `json:"id"`
From *UserInfo `json:"from"` // 消息发送人
UserId int64 `json:"userId"` // 消息接收人编号
Title string `json:"title"` // 标题
Content string `json:"content"` // 消息内容
QuoteContent string `json:"quoteContent"`
Type int `json:"type"`
DetailUrl string `json:"detailUrl"` // 消息详情url
ExtraData string `json:"extraData"`
Status int `json:"status"`
CreateTime int64 `json:"createTime"`
}
// 图片
type ImageInfo struct {
Url string `json:"url"`
Preview string `json:"preview"`
}
type TreeNode struct {
Id int64 `json:"id"`
Key int64 `json:"key"`
Title string `json:"title"`
Children []TreeNode `json:"children"`
}
type MenuResponse struct {
Id int64 `json:"id"`
ParentId *int64 `json:"parentId"`
Type string `json:"type"`
Name string `json:"name"`
Title string `json:"title"`
Icon string `json:"icon"`
Path string `json:"path"`
Component string `json:"component"`
SortNo int `json:"sortNo"`
Status int `json:"status"`
CreateTime int64 `json:"createTime"`
UpdateTime int64 `json:"updateTime"`
}
type MenuTreeResponse struct {
MenuResponse
Level int `json:"level"`
Children []MenuTreeResponse `json:"children"`
}
type DictResponse struct {
Id int64 `json:"id"`
TypeId int64 `json:"typeId"`
ParentId *int64 `json:"parentId"` // 上级分类
Name string `json:"name"` // 名称
Label string `json:"label"` // 标题
Value string `json:"value"` // 值
SortNo int `json:"sortNo"` // 排序
Status int `json:"status"` // 状态
CreateTime int64 `json:"createTime"` // 创建时间
UpdateTime int64 `json:"updateTime"` // 更新时间
}
type DictListResponse struct {
DictResponse
Children []DictListResponse `json:"children"`
}