126 lines
2.8 KiB
Go
126 lines
2.8 KiB
Go
package pubdef
|
|
|
|
import (
|
|
"slices"
|
|
)
|
|
|
|
type IMedia interface {
|
|
GetID() int64
|
|
GetTitle() string
|
|
GetPrice() int64
|
|
GetCover() string
|
|
GetPublishID() int64
|
|
GetLocationType() LocationType
|
|
GetIsVIP() bool
|
|
GetIsDark() bool
|
|
GetCollectionIds() []int64
|
|
GetEpisodeIds() []int64
|
|
}
|
|
|
|
type DateCount struct {
|
|
Date string `json:"date" bson:"date"` // 日期: yyyy-MM-dd
|
|
Count int64 `json:"count" bson:"count"` // 数量
|
|
}
|
|
|
|
type DateCountList []DateCount
|
|
|
|
type MediaType = LocationType
|
|
|
|
type ContentType int32
|
|
|
|
const (
|
|
ContentTypeVideoLong ContentType = 1 // 长视频
|
|
ContentTypeVideoDsp ContentType = 2 // 短视频
|
|
)
|
|
|
|
type LocationType int32
|
|
|
|
const (
|
|
LocationTypeNone LocationType = 0 // 占位符,无意义
|
|
LocationTypeVideo LocationType = 1 // 视频
|
|
LocationTypeVideoLLD LocationType = 2 // 萝莉岛
|
|
LocationTypeCartoon LocationType = 3 // 动漫
|
|
LocationTypePost LocationType = 4 // 帖子
|
|
LocationTypeComment LocationType = 5 // 评论
|
|
LocationTypeCollection LocationType = 6 // 合集
|
|
LocationTypeComics LocationType = 7 // 漫画
|
|
LocationTypeNovel LocationType = 8 // 小说
|
|
LocationTypeVoiceNovel LocationType = 9 // 有声小说
|
|
LocationTypePhoto LocationType = 10 // 图集
|
|
LocationTypeGame LocationType = 11 // 黄游
|
|
LocationTypeShort LocationType = 12 // 短视频
|
|
)
|
|
|
|
func (s LocationType) String() string {
|
|
switch s {
|
|
case LocationTypeVideo:
|
|
return "长视频"
|
|
case LocationTypeVideoLLD:
|
|
return "萝莉岛"
|
|
case LocationTypeCartoon:
|
|
return "动漫"
|
|
case LocationTypePost:
|
|
return "动态"
|
|
case LocationTypeComment:
|
|
return "评论"
|
|
case LocationTypeCollection:
|
|
return "合集"
|
|
case LocationTypeComics:
|
|
return "漫画"
|
|
case LocationTypeNovel:
|
|
return "小说"
|
|
case LocationTypeVoiceNovel:
|
|
return "有声小说"
|
|
case LocationTypePhoto:
|
|
return "图集"
|
|
case LocationTypeGame:
|
|
return "黄游"
|
|
case LocationTypeShort:
|
|
return "短视频"
|
|
default:
|
|
return "未知"
|
|
}
|
|
}
|
|
func (s LocationType) HasIntersection(other ...LocationType) bool {
|
|
for _, v := range other {
|
|
if s == v {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// 哪些类型可以分配创作者收益, 目前是所有类型
|
|
func (s LocationType) CanDistributionWorkerIncome() bool {
|
|
return slices.Contains([]LocationType{
|
|
LocationTypeVideo,
|
|
LocationTypeVideoLLD,
|
|
LocationTypeCartoon,
|
|
LocationTypePost,
|
|
LocationTypeCollection,
|
|
LocationTypeComics,
|
|
LocationTypeNovel,
|
|
LocationTypePhoto,
|
|
LocationTypeGame,
|
|
}, s)
|
|
}
|
|
|
|
type MediaTagInfo struct {
|
|
Id int64 `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type MediaTagInfoList []MediaTagInfo
|
|
|
|
func (s MediaTagInfoList) ToUniqueList() MediaTagInfoList {
|
|
var ret MediaTagInfoList
|
|
dict := make(map[int64]struct{})
|
|
for _, v := range s {
|
|
if _, ok := dict[v.Id]; !ok {
|
|
dict[v.Id] = struct{}{}
|
|
ret = append(ret, v)
|
|
}
|
|
}
|
|
return ret
|
|
}
|