Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
262 lines
10 KiB
Go
262 lines
10 KiB
Go
package proto
|
||
|
||
import "videoweb/pub/pubdef"
|
||
|
||
// -------- 公共站点数据 --------
|
||
|
||
// FriendlyLinkItem 友情链接
|
||
type FriendlyLinkItem struct {
|
||
Id int64 `json:"id"`
|
||
Name string `json:"name"`
|
||
Url string `json:"url"`
|
||
Sort int `json:"sort"`
|
||
}
|
||
|
||
// ContactInfoItem 联系方式
|
||
type ContactInfoItem struct {
|
||
Id int64 `json:"id"`
|
||
Icon string `json:"icon"`
|
||
Type int `json:"type"` // 1=邮箱 2=URL 3=文字
|
||
Address string `json:"address"`
|
||
Sort int `json:"sort"`
|
||
}
|
||
|
||
// SiteCommonData 每个接口都会携带的通用站点信息
|
||
type SiteCommonData struct {
|
||
Config ConfigInfo `json:"config"`
|
||
FriendlyLinks []*FriendlyLinkItem `json:"friendlyLinks"`
|
||
ContactInfos []*ContactInfoItem `json:"contactInfos"`
|
||
Advitise AdvitiseData `json:"advitise"`
|
||
ToolCount int64 `json:"toolCount"` // 审核通过的工具总数
|
||
}
|
||
|
||
// -------- 分类 --------
|
||
|
||
// ToolSubCategoryItem 子分类简要信息
|
||
type ToolSubCategoryItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Name string `json:"name"`
|
||
CategoryId int64 `json:"categoryId"`
|
||
SeoInfo pubdef.SeoValue `json:"seoInfo"`
|
||
}
|
||
|
||
// ToolCategoryItem 主分类简要信息
|
||
type ToolCategoryItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Name string `json:"name"`
|
||
Icon string `json:"icon"`
|
||
Sort int `json:"sort"`
|
||
SeoInfo pubdef.SeoValue `json:"seoInfo"`
|
||
SubCategories []*ToolSubCategoryItem `json:"subCategories"`
|
||
}
|
||
|
||
// -------- 工具 --------
|
||
|
||
// ToolBriefItem 工具简要信息(列表卡片)
|
||
type ToolBriefItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
Logo string `json:"logo"`
|
||
Snapshot string `json:"snapshot"`
|
||
Intro string `json:"intro"`
|
||
OfficialUrl string `json:"officialUrl"`
|
||
Hot int64 `json:"hot"`
|
||
}
|
||
|
||
// CategorySection 首页分类区块:分类标题 + 子分类列表 + 前10条工具
|
||
type CategorySection struct {
|
||
CategoryId int64 `json:"categoryId"`
|
||
CategorySlug string `json:"categorySlug"`
|
||
CategoryName string `json:"categoryName"`
|
||
CategoryIcon string `json:"categoryIcon"`
|
||
CategorySort int `json:"categorySort"`
|
||
SubCategories []*ToolSubCategoryItem `json:"subCategories"`
|
||
Tools []*ToolBriefItem `json:"tools"`
|
||
}
|
||
|
||
// ToolNodeItem 工具节点
|
||
type ToolNodeItem struct {
|
||
NodeId int64 `json:"nodeId"`
|
||
Title string `json:"title"`
|
||
Type int `json:"type"` // 1=文本 2=条目 3=QA 4=图片
|
||
Content string `json:"content"` // JSON字符串,格式因类型而异
|
||
Sort int `json:"sort"`
|
||
ReviewStatus int `json:"reviewStatus"` // 0=待审核 1=通过 2=下架
|
||
}
|
||
|
||
// ToolRecommendItem 推荐工具简要信息
|
||
type ToolRecommendItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
Intro string `json:"intro"`
|
||
Logo string `json:"logo"`
|
||
}
|
||
|
||
// ArticleRecommendItem 推荐文章简要信息
|
||
type ArticleRecommendItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
Intro string `json:"intro"`
|
||
Cover string `json:"cover"`
|
||
CreatedAt string `json:"createdAt"` // 格式:yyyy/MM/dd
|
||
}
|
||
|
||
// ToolDetailItem 工具详情
|
||
type ToolDetailItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
CategoryId int64 `json:"categoryId"`
|
||
CategoryName string `json:"categoryName"`
|
||
SubCateId int64 `json:"subCateId"`
|
||
SubCateName string `json:"subCateName"`
|
||
Title string `json:"title"`
|
||
Logo string `json:"logo"`
|
||
Snapshot string `json:"snapshot"`
|
||
Intro string `json:"intro"`
|
||
Desc string `json:"desc"`
|
||
SeoInfo pubdef.SeoValue `json:"seoInfo"`
|
||
OfficialUrl string `json:"officialUrl"`
|
||
Hot int64 `json:"hot"`
|
||
ViewCount int64 `json:"viewCount"`
|
||
Nodes []*ToolNodeItem `json:"nodes"`
|
||
RelatedTools []*ToolRecommendItem `json:"relatedTools"` // 相关推荐(优先同子分类,不足补其他分类)
|
||
RecommendTools []*ToolRecommendItem `json:"recommendTools"` // 工具推荐(随机6个)
|
||
RecommendArticles []*ArticleRecommendItem `json:"recommendArticles"` // 文章推荐(随机6个)
|
||
CommentList GetCommentListResp `json:"commentList"` // 评论
|
||
Categories []*ToolCategoryItem `json:"categories"` // 分类列表
|
||
Site SiteCommonData `json:"site"`
|
||
}
|
||
|
||
// -------- 文章 --------
|
||
|
||
// ArticleBriefItem 文章简要信息(列表卡片)
|
||
type ArticleBriefItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
Intro string `json:"intro"`
|
||
Author string `json:"author"`
|
||
AuthorAvatar string `json:"authorAvatar"`
|
||
Cover string `json:"cover"`
|
||
ViewCount int64 `json:"viewCount"`
|
||
Sort int `json:"sort"`
|
||
CreatedAt string `json:"createdAt"` // 格式:yyyy/MM/dd
|
||
}
|
||
|
||
// ArticleNodeItem 文章节点
|
||
type ArticleNodeItem struct {
|
||
NodeId int64 `json:"nodeId"`
|
||
Title string `json:"title"`
|
||
Type int `json:"type"` // 1=文本 2=条目 3=QA 4=图片
|
||
Content string `json:"content"` // JSON字符串,格式因类型而异
|
||
Sort int `json:"sort"`
|
||
}
|
||
|
||
// ArticleNavItem 文章导航(上一篇/下一篇)
|
||
type ArticleNavItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
}
|
||
|
||
// ArticleDetailItem 文章详情
|
||
type ArticleDetailItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
Intro string `json:"intro"`
|
||
Author string `json:"author"`
|
||
AuthorAvatar string `json:"authorAvatar"`
|
||
Cover string `json:"cover"`
|
||
SeoInfo pubdef.SeoValue `json:"seoInfo"`
|
||
ViewCount int64 `json:"viewCount"`
|
||
Sort int `json:"sort"`
|
||
ReviewStatus int `json:"reviewStatus"`
|
||
CreatedAt string `json:"createdAt"` // 格式:yyyy/MM/dd
|
||
Nodes []*ArticleNodeItem `json:"nodes"`
|
||
Prev *ArticleNavItem `json:"prev"` // 上一篇(无则为 null)
|
||
Next *ArticleNavItem `json:"next"` // 下一篇(无则为 null)
|
||
RecommendTools []*ToolRecommendItem `json:"recommendTools"` // 工具推荐(随机6个)
|
||
RecommendArticles []*ArticleRecommendItem `json:"recommendArticles"` // 文章推荐(随机6个)
|
||
CommentList GetCommentListResp `json:"commentList"` // 评论
|
||
Categories []*ToolCategoryItem `json:"categories"` // 分类列表
|
||
Site SiteCommonData `json:"site"`
|
||
}
|
||
|
||
// -------- 页面级响应 --------
|
||
|
||
// AIToolsHomeData 工具首页数据
|
||
type AIToolsHomeData struct {
|
||
Categories []*ToolCategoryItem `json:"categories"`
|
||
HotTools []*ToolBriefItem `json:"hotTools"` // 热门推荐工具(按设置时间倒序)
|
||
Sections []*CategorySection `json:"sections"`
|
||
Articles []*ArticleBriefItem `json:"articles"`
|
||
Site SiteCommonData `json:"site"`
|
||
}
|
||
|
||
// AIToolsListData 工具列表页数据
|
||
type AIToolsListData struct {
|
||
Categories []*ToolCategoryItem `json:"categories"`
|
||
Total int64 `json:"total"`
|
||
List []*ToolBriefItem `json:"list"`
|
||
Site SiteCommonData `json:"site"`
|
||
}
|
||
|
||
// SearchArticleItem 搜索命中的文章
|
||
type SearchArticleItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
Title string `json:"title"`
|
||
Intro string `json:"intro"`
|
||
Author string `json:"author"`
|
||
AuthorAvatar string `json:"authorAvatar"`
|
||
Cover string `json:"cover"`
|
||
CreatedAt string `json:"createdAt"` // 格式:yyyy/MM/dd
|
||
Score float32 `json:"score"` // 相关度分数
|
||
}
|
||
|
||
// SearchToolItem 搜索命中的工具
|
||
type SearchToolItem struct {
|
||
Id int64 `json:"id"`
|
||
Slug string `json:"slug"`
|
||
CategoryId int64 `json:"categoryId"`
|
||
SubCateId int64 `json:"subCateId"`
|
||
Title string `json:"title"`
|
||
Logo string `json:"logo"`
|
||
Snapshot string `json:"snapshot"`
|
||
Intro string `json:"intro"`
|
||
OfficialUrl string `json:"officialUrl"`
|
||
Hot int64 `json:"hot"`
|
||
Score float32 `json:"score"` // 相关度分数
|
||
}
|
||
|
||
// AISearchData 搜索结果
|
||
type AISearchData struct {
|
||
Keyword string `json:"keyword"`
|
||
Articles []*SearchArticleItem `json:"articles"`
|
||
Tools []*SearchToolItem `json:"tools"`
|
||
Site SiteCommonData `json:"site"`
|
||
}
|
||
|
||
// AIRecommendData 推荐展示数据
|
||
type AIRecommendData struct {
|
||
Articles []*ArticleBriefItem `json:"articles"` // 随机2篇文章
|
||
Tools []*ToolBriefItem `json:"tools"` // 随机20个工具
|
||
Site SiteCommonData `json:"site"`
|
||
}
|
||
|
||
// AIArticleListData 文章列表页数据
|
||
type AIArticleListData struct {
|
||
Categories []*ToolCategoryItem `json:"categories"`
|
||
Total int64 `json:"total"`
|
||
List []*ArticleBriefItem `json:"list"`
|
||
Site SiteCommonData `json:"site"`
|
||
RecommendTools []*ToolRecommendItem `json:"recommendTools"` // 工具推荐(随机6个)
|
||
RecommendArticles []*ArticleRecommendItem `json:"recommendArticles"` // 文章推荐(随机6个)
|
||
}
|