@@ -0,0 +1,213 @@
|
||||
package mediamod
|
||||
|
||||
import (
|
||||
"91porn-server/models/commod"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
type ObjectID = primitive.ObjectID
|
||||
|
||||
type AppMediaBase struct {
|
||||
ID primitive.ObjectID `json:"id" bson:"_id,omitempty"` // 文档id
|
||||
SortCode int `json:"sortCode" bson:"sortCode"` // 排序
|
||||
Status int `json:"status" bson:"status"` // 状态
|
||||
Title string `json:"title" bson:"title"` // 标题
|
||||
HorizontalCover string `json:"horizontalCover" bson:"horizontalCover"` // 横版封面
|
||||
VerticalCover string `json:"verticalCover" bson:"verticalCover"` // 竖版封面
|
||||
Tags []primitive.ObjectID `json:"tags" bson:"tags"` // 标签
|
||||
TagDetails []TagDetail `json:"tagDetails" bson:"tagDetails"` // 标签对象
|
||||
Summary string `json:"summary" bson:"summary"` // 简介
|
||||
TotalEpisode int `json:"totalEpisode" bson:"totalEpisode"` // 总集数
|
||||
CurrentEpisode int `json:"currentEpisode" bson:"currentEpisode"` // 当前更新的集数
|
||||
FreeEpisode int `json:"freeEpisode" bson:"freeEpisode"` // 免费集数
|
||||
UpdateStatus int `json:"updateStatus" bson:"updateStatus"` // 更新状态
|
||||
MediaType string `json:"mediaType" bson:"mediaType"` // 媒体类型 "video":动漫,"image":漫画 "text":小说
|
||||
MediaSubType MediaSubType `json:"mediaSubType" bson:"mediaSubType"` // 子类型 ,暂时只有小说使用 0-默认文本小说 1-有声小说
|
||||
DefaultContent DefaultContent `json:"defaultContent" bson:"defaultContent"` // 默认展示内容,暂时只有漫画需要
|
||||
Kind int `json:"kind" bson:"kind"` // 种类(1、哩番,2、3D,3、同人动画,4、单行本,5、连载漫画,6、韩漫 )
|
||||
Style int `json:"style" bson:"style"` // 展示背景颜色 0-随机 1~5对应ui五种颜色
|
||||
PermissionIconHide bool `json:"permissionIconHide" bson:"permissionIconHide"` // 售卖类型标识隐藏
|
||||
Permission int `json:"permission" bson:"permission"` // 收听权限 0:会员 1:金币购买 2:免费
|
||||
Price int64 `json:"price" bson:"price"` // 价格(整部购买的类型 小说 cos 写真)
|
||||
ContentsPrice int64 `json:"contentsPrice" bson:"contentsPrice"` // 所有子集加起来的价格
|
||||
Direction int64 `json:"direction" bson:"direction"` // 排版方向 0横 1竖(冗余字段)
|
||||
//SellType int `json:"sellType" bson:"sellType"` // 商品售卖类型(0单集售卖 1整部售卖)
|
||||
FreeTime int `json:"freeTime" bson:"freeTime"` // 免费试看时长 单位 s
|
||||
MID string `json:"mId" bson:"mId"` // 模块ID
|
||||
ModuleName string `json:"moduleName" bson:"moduleName"` // 模块名称
|
||||
SectionName string `json:"sectionName" bson:"sectionName"` // 专题名称
|
||||
SID primitive.ObjectID `json:"sId" bson:"sId"` // 专题ID
|
||||
SectionSort int `json:"sectionSort" bson:"sectionSort"` // 专题排序
|
||||
CountComment int64 `json:"countComment" bson:"countComment"` // 评论数
|
||||
CountPurchases int64 `json:"countPurchases" bson:"countPurchases"` // 购买数
|
||||
HasFollow bool `json:"hasFollow" bson:"hasFollow"` // 是否关注
|
||||
CountBrowse int64 `json:"countBrowse" bson:"countBrowse"` // 浏览数
|
||||
CountCollect int64 `json:"countCollect" bson:"countCollect"` // 收藏数
|
||||
CountLike int64 `json:"countLike" bson:"countLike"` // 喜欢数
|
||||
CountDisLike int64 `json:"countDisLike" bson:"countDisLike"` // 不喜欢数
|
||||
CountView int64 `json:"countView" bson:"countView"` // 展现数
|
||||
CountShare int64 `json:"countShare" bson:"countShare"` // 分享数
|
||||
MediaStatus MediaStatus `json:"mediaStatus" bson:"mediaStatus"` // 媒体状态
|
||||
Number int64 `json:"number" bson:"number"` // 编号
|
||||
Author string `json:"author"` // 作者
|
||||
CreatedAt time.Time `json:"createdAt" bson:"createdAt"` // 文档创建时间
|
||||
UpdateTime time.Time `json:"updateTime" bson:"updateTime"` // 文档更新时间
|
||||
LatestPublishedAt time.Time `json:"latestPublishedAt" bson:"latestPublishedAt"` // 最新上架或子集更新时间
|
||||
LsjId string `json:"lsjId" bson:"lsjId"` // 老司机ID
|
||||
HasDramaCard bool `json:"hasDramaCard" bson:"hasDramaCard"` // 是否持有有效短剧权益卡
|
||||
|
||||
}
|
||||
|
||||
// MediaStatus 媒体状态
|
||||
type MediaStatus struct {
|
||||
HasPaid bool `json:"hasPaid" bson:"hasPaid"` // 已支付(如果是父集,表示整本购买)
|
||||
HasCollected bool `json:"hasCollected" bson:"hasCollected"` // 已收藏
|
||||
HasLiked bool `json:"hasLiked" bson:"hasLiked"` // 已点赞
|
||||
|
||||
}
|
||||
|
||||
type MediaContent struct {
|
||||
ID primitive.ObjectID `json:"id"` // 文档id
|
||||
MediaID primitive.ObjectID `json:"mediaId"` // 媒体资源ID
|
||||
EpisodeNumber int `json:"episodeNumber"` // 第几集
|
||||
ListenPermission int `json:"listenPermission"` // 收听权限 0:会员 1:金币购买 2:免费
|
||||
Price int64 `json:"price"` // 购买价格
|
||||
Name string `json:"name"` // 章节名
|
||||
Text string `json:"text"` // 内容(小说专用)
|
||||
Md5 string `json:"md5"` // 媒体md5
|
||||
VideoUrl string `json:"videoUrl"` // 视频地址
|
||||
AudioUrl string `json:"audioUrl" bson:"audioUrl"` // 有声小说地址
|
||||
UrlSet []string `json:"urlSet"` // 地址集(多个资源地址用 例如漫画)
|
||||
Height int `json:"height"` // 高
|
||||
Weight int `json:"weight"` // 宽
|
||||
CountComment int64 `json:"countComment" bson:"countComment"` // 评论数
|
||||
CountPurchases int64 `json:"countPurchases" bson:"countPurchases"` // 购买数
|
||||
CountBrowse int64 `json:"countBrowse" bson:"countBrowse"` // 浏览数
|
||||
CountCollect int64 `json:"countCollect" bson:"countCollect"` // 收藏数
|
||||
CountLike int64 `json:"countLike" bson:"countLike"` // 喜欢数
|
||||
CountDisLike int64 `json:"countDisLike" bson:"countDisLike"` // 不喜欢数
|
||||
MediaSize int64 `json:"mediaSize"` // 资源大小
|
||||
PlayTime uint `json:"playTime"` // 影片长度
|
||||
Ratio float64 `json:"ratio"` // 宽高比
|
||||
MediaStatus MediaStatus `json:"mediaStatus" bson:"mediaStatus"` // 媒体状态
|
||||
CreatedAt time.Time `json:"createdAt"` // 文档创建时间
|
||||
UpdateTime time.Time `json:"updateTime"` // 文档更新时间
|
||||
}
|
||||
|
||||
type AppLibrary struct {
|
||||
Key string `json:"key" bson:"key"` // 健值
|
||||
Name string `json:"name" bson:"name"` // 健名称
|
||||
Kind []KindInfo `json:"kind" bson:"kind"` // 种类 (1、哩番,2、3D,3、同人动画,4、单行本,5、连载漫画,6、韩漫 )
|
||||
}
|
||||
|
||||
type KindInfo struct {
|
||||
Key string `json:"key" bson:"key"` // 健值
|
||||
Name string `json:"name" bson:"name"` // 健名称
|
||||
Cover string `json:"cover" bson:"cover"` // 封面
|
||||
Dimension []DimensionInfo `json:"dimension" bson:"dimension"` // 纬度
|
||||
}
|
||||
|
||||
type DimensionInfo struct {
|
||||
Key string `json:"key" bson:"key"` // 健值
|
||||
Name string `json:"name" bson:"name"` // 健名称
|
||||
Tag []TagInfo `json:"tag" bson:"tag"` // 标签
|
||||
}
|
||||
|
||||
type TagInfo struct {
|
||||
ID string `json:"id" bson:"id"` // 标签ID
|
||||
Name string `json:"name" bson:"name"` // 标签名称
|
||||
}
|
||||
|
||||
type AppLibraryReq struct {
|
||||
MediaType string `json:"mediaType" bson:"mediaType"` // 媒体类型
|
||||
TagIds []string `json:"tagIds" bson:"tagIds"` // 标签ID
|
||||
SortType int `json:"sortType" bson:"sortType"` // 排序 1、精选,2、最新,3、最热,4、最多收藏
|
||||
commod.Page
|
||||
}
|
||||
|
||||
type AppElasticSearchLibraryResponse struct {
|
||||
List []*AppMediaBase `json:"list"` // list
|
||||
HasNext bool `json:"hasNext"` // hasNext
|
||||
}
|
||||
|
||||
func (p AppLibraryReq) Filter(ids []primitive.ObjectID) bson.M {
|
||||
filter := bson.M{}
|
||||
filter["_id"] = bson.M{"$in": ids}
|
||||
return filter
|
||||
}
|
||||
|
||||
func AppLibrarySortField(sortType int) string {
|
||||
switch sortType {
|
||||
case 1:
|
||||
return "choiceSort"
|
||||
case 3:
|
||||
return "countLike"
|
||||
case 4:
|
||||
return "countCollect"
|
||||
default:
|
||||
return "updateTime"
|
||||
}
|
||||
}
|
||||
|
||||
func (p AppLibraryReq) Options() bson.D {
|
||||
if p.MediaType == MediaTypeDrama && p.SortType == 1 {
|
||||
return bson.D{
|
||||
{Key: "sortCode", Value: -1},
|
||||
{Key: "createdAt", Value: -1},
|
||||
{Key: "_id", Value: -1},
|
||||
}
|
||||
}
|
||||
return bson.D{{Key: AppLibrarySortField(p.SortType), Value: -1}}
|
||||
}
|
||||
|
||||
type AppSearchReq struct {
|
||||
KeyWord string `form:"keyword" json:"keyword"` // 搜索关键词
|
||||
TagName string `form:"tagName" json:"tagName"` // 搜索标签名
|
||||
Kind int `form:"kind" json:"kind"` // 种类 1、动漫 2、漫画 3、小说 4、短剧
|
||||
commod.Page
|
||||
SortType int `json:"sortType" form:"sortType"` // 1-最新上架 2-最多观看
|
||||
}
|
||||
|
||||
type AppElasticSearchResponse struct {
|
||||
List []*AppMediaBase `json:"list"` // list
|
||||
TagID string `json:"tagID"` // 帖子搜索时附带的tagID
|
||||
TagMediaList []*AppMediaBase `json:"tagMediaList"` // 搜索时tag相关的帖子
|
||||
HasNext bool `json:"hasNext"` // hasNext
|
||||
}
|
||||
|
||||
func (p AppSearchReq) Options() bson.D {
|
||||
if p.Kind == 4 {
|
||||
if p.SortType == 2 {
|
||||
return bson.D{{Key: "countBrowse", Value: -1}, {Key: "latestPublishedAt", Value: -1}, {Key: "_id", Value: -1}}
|
||||
}
|
||||
return bson.D{{Key: "latestPublishedAt", Value: -1}, {Key: "createdAt", Value: -1}, {Key: "_id", Value: -1}}
|
||||
}
|
||||
return bson.D{{Key: "createdAt", Value: -1}}
|
||||
}
|
||||
|
||||
type AppLibraryV2Req struct {
|
||||
MediaType string `json:"mediaType" form:"mediaType"` // 动漫类型 video-动漫 image-漫画 text-小说
|
||||
}
|
||||
|
||||
type AppLibraryV2Resp struct {
|
||||
MediaType []AppLibraryItem `json:"mediaType"`
|
||||
SortType []AppLibraryItem `json:"sortType"` // 1-最多播放 2-收藏最多 3-最新上架
|
||||
TagName []AppLibraryItem `json:"tagName"` // 标签名
|
||||
PayType []AppLibraryItem `json:"payType"` // 付费类型
|
||||
}
|
||||
|
||||
type AppLibraryItem struct {
|
||||
Name string `json:"name"`
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
type AppLibrarySearchV2Req struct {
|
||||
MediaType string `json:"mediaType" form:"mediaType"` // 媒体类型
|
||||
SortType string `json:"sortType" form:"sortType"` // 排序类型
|
||||
TagName string `json:"tagName" form:"tagName"` // 标签名
|
||||
PayType string `json:"payType" form:"payType"` // 付费类型
|
||||
commod.Page
|
||||
}
|
||||
Reference in New Issue
Block a user