Files
quyun-v2/backend/app/http/v1/dto/content.go

98 lines
2.8 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.
package dto
import "quyun/v2/app/requests"
type ContentListFilter struct {
requests.Pagination
Keyword *string `query:"keyword"`
Genre *string `query:"genre"`
TenantID *int64 `query:"tenantId"`
Sort *string `query:"sort"`
IsPinned *bool `query:"is_pinned"`
PriceType *string `query:"price_type"`
}
type ContentItem struct {
ID int64 `json:"id"`
// TenantID 内容所属租户ID。
TenantID int64 `json:"tenant_id"`
// UserID 内容作者用户ID与 author_id 同义,便于后台展示)。
UserID int64 `json:"user_id"`
Title string `json:"title"`
Cover string `json:"cover"`
Genre string `json:"genre"`
Type string `json:"type"` // video, audio, article
// Status 内容状态(如 published/unpublished
Status string `json:"status"`
// Visibility 内容可见性(如 public/tenant_only/private
Visibility string `json:"visibility"`
Price float64 `json:"price"`
AuthorID int64 `json:"author_id"`
AuthorName string `json:"author_name"`
// AuthorAvatar 作者头像URL。
AuthorAvatar string `json:"author_avatar"`
AuthorIsFollowing bool `json:"author_is_following"`
Views int `json:"views"`
Likes int `json:"likes"`
CreatedAt string `json:"created_at"`
// PublishedAt 发布时间,未发布为空。
PublishedAt string `json:"published_at"`
IsPurchased bool `json:"is_purchased"`
}
type ContentDetail struct {
ContentItem
Description string `json:"description"`
Body string `json:"body"`
MediaUrls []MediaURL `json:"media_urls"`
Meta Meta `json:"meta"`
IsLiked bool `json:"is_liked"`
IsFavorited bool `json:"is_favorited"`
}
type MediaURL struct {
Type string `json:"type"`
URL string `json:"url"`
Duration int `json:"duration"`
}
type Meta struct {
Role string `json:"role"`
Key string `json:"key"`
Beat string `json:"beat"`
}
type Comment struct {
ID int64 `json:"id"`
Content string `json:"content"`
UserID int64 `json:"user_id"`
UserNickname string `json:"user_nickname"`
UserAvatar string `json:"user_avatar"`
CreateTime string `json:"create_time"`
Likes int `json:"likes"`
IsLiked bool `json:"is_liked"`
ReplyTo int64 `json:"reply_to"`
}
type CommentCreateForm struct {
Content string `json:"content"`
ReplyTo int64 `json:"reply_to"`
}
type Topic struct {
ID int64 `json:"id"`
Title string `json:"title"`
Cover string `json:"cover"`
Tag string `json:"tag"`
Count int `json:"count"`
}
type ContentPrice struct {
Currency string `json:"currency"`
PriceAmount float64 `json:"price_amount"`
DiscountType string `json:"discount_type"`
DiscountValue float64 `json:"discount_value"`
DiscountStartAt string `json:"discount_start_at"`
DiscountEndAt string `json:"discount_end_at"`
}