新增总/子分类与曲目绑定;playlist 可按 categoryId 筛选并返回分类树; popadmin 支持行内改曲名/排序/上下架/会员开关与封面背景音频上传;文档同步。 Co-authored-by: Cursor <cursoragent@cursor.com>
55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
package entity
|
|
|
|
import "time"
|
|
|
|
const (
|
|
SettingMemberPreviewSeconds = "member_preview_seconds"
|
|
DefaultPreviewSeconds = 30
|
|
|
|
MaxCoverBytes = 5 << 20 // 5 MiB
|
|
MaxBackgroundBytes = 5 << 20 // 5 MiB
|
|
MaxAudioBytes = 50 << 20 // 50 MiB
|
|
)
|
|
|
|
// Track is one curated music item for the Spark music list.
|
|
type Track struct {
|
|
ID int64 `json:"id"`
|
|
Title string `json:"title"`
|
|
CoverKey string `json:"coverKey"`
|
|
AudioKey string `json:"audioKey"`
|
|
BackgroundKey string `json:"backgroundKey"`
|
|
CoverURL string `json:"coverUrl"`
|
|
AudioURL string `json:"audioUrl"`
|
|
BackgroundURL string `json:"backgroundUrl"`
|
|
RequireMember bool `json:"requireMember"`
|
|
SortOrder int `json:"sortOrder"`
|
|
Enabled bool `json:"enabled"`
|
|
CategoryIDs []int64 `json:"categoryIds"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// Category is a top-level or sub music category (parentID nil = 总分类).
|
|
type Category struct {
|
|
ID int64 `json:"id"`
|
|
ParentID *int64 `json:"parentId"`
|
|
Name string `json:"name"`
|
|
SortOrder int `json:"sortOrder"`
|
|
Enabled bool `json:"enabled"`
|
|
Children []Category `json:"children,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
// Settings is the global music ops config.
|
|
type Settings struct {
|
|
MemberPreviewSeconds int `json:"memberPreviewSeconds"`
|
|
}
|
|
|
|
// Playlist is the client-facing payload.
|
|
type Playlist struct {
|
|
Items []Track `json:"items"`
|
|
Categories []Category `json:"categories"`
|
|
MemberPreviewSeconds int `json:"memberPreviewSeconds"`
|
|
}
|