package proto import ( "time" "videoweb/pub/common/response" "videoweb/pub/models/playletchaptermod" "videoweb/pub/models/playletmod" "videoweb/pub/pubdef" "videoweb/pub/storage/proxy" ) // PlayletRecommendListReq 推荐短剧分页请求 type PlayletRecommendListReq struct { pubdef.Page TagId int64 `form:"tagId" json:"tagId"` // 标签ID,不传查询全部标签 TagSlug string `form:"tagSlug" json:"tagSlug"` // 标签slug,非空时优先按slug解析标签ID CategoryId int64 `form:"categoryId" json:"categoryId"` // 短剧分类ID,不传查询全部分类 CategorySlug string `form:"categorySlug" json:"categorySlug"` // 分类slug,非空时优先按slug解析分类ID SortList int64 `form:"sortList" json:"sortList"` // 排序方式 1-推荐 2-最新 3-最热 } // PlayletRecommendSort 推荐短剧排序方式 type PlayletRecommendSort int64 const ( PlayletRecommendSortRecommend PlayletRecommendSort = 1 // 推荐 后台配置 isRecommend=true PlayletRecommendSortNewest PlayletRecommendSort = 2 // 最新 按短剧最后更新时间从近到远排序 PlayletRecommendSortHot PlayletRecommendSort = 3 // 最热 按短剧累计点击量从高到低排序 ) // PlayletRecommendItemType 推荐短剧列表项类型 type PlayletRecommendItemType int64 const ( PlayletRecommendItemTypePlaylet PlayletRecommendItemType = 0 // 短剧数据 PlayletRecommendItemTypeAdvertise PlayletRecommendItemType = 2 // 广告数据 ) // PlayletRecommendListResp 推荐短剧响应 type PlayletRecommendListResp struct { response.BasePageResp } // PlayletThemeListResp 已启用短剧题材列表响应 type PlayletThemeListResp struct { List []PlayletThemeItem `json:"list"` // 全部已启用题材 } // PlayletThemeItem 短剧题材列表项 type PlayletThemeItem struct { Id int64 `json:"id"` // 题材ID Name string `json:"name"` // 题材名称 Slug string `json:"slug"` // 题材slug Icon string `json:"icon"` // 题材图标完整地址 Rank int64 `json:"rank"` // 排序值,越大越靠前 SeoInfo pubdef.SeoValue `json:"seoInfo"` // SEO信息 } // PlayletGuessListReq 猜你喜欢短剧分页请求 type PlayletGuessListReq struct { pubdef.Page Id int64 `form:"id" json:"id"` // 当前短剧ID,可选,传入时排除该短剧 } // PlayletGuessListResp 猜你喜欢短剧分页响应 type PlayletGuessListResp struct { response.BasePageResp } // PlayletListReq 短剧列表分页请求 type PlayletListReq struct { pubdef.Page ThemeId int64 `form:"themeId" json:"themeId"` // 题材 ID,不传查询全部题材 ThemeSlug string `form:"themeSlug" json:"themeSlug"` // 题材 slug,非空时优先于 themeId SortType int64 `form:"sortType" json:"sortType"` // 排序方式,1 热度优先,2 最近更新,默认 1 } // PlayletListResp 短剧与广告混排分页响应 type PlayletListResp struct { response.BasePageResp Advitise AdvitiseData `json:"advitise"` // 完整广告配置 } // PlayletContentListReq 短剧或视频分页请求 type PlayletContentListReq struct { pubdef.Page DataType int64 `form:"dataType" json:"dataType"` // 数据类型,1 短剧,2 视频,必填 } // PlayletContentListResp 短剧或视频与广告混排分页响应 type PlayletContentListResp struct { response.BasePageResp Advitise AdvitiseData `json:"advitise"` // 完整广告配置,postList 为列表广告 } // PlayletContentListItem 短剧、视频或广告列表项 type PlayletContentListItem struct { Type int64 `json:"type"` // 数据类型,0 内容,2 广告 Playlet *PlayletData `json:"playlet,omitempty"` // 短剧数据,dataType 为 1 且 type 为 0 时返回 Video *VideoInfo `json:"video,omitempty"` // 视频数据,dataType 为 2 且 type 为 0 时返回 Advertise *proxy.AdvitiseInfo `json:"advertise,omitempty"` // 广告数据,type 为 2 时返回 } // PlayletRecommendListItem 推荐短剧列表项,type=0时返回短剧信息,type=2时返回广告信息 type PlayletRecommendListItem struct { Type PlayletRecommendItemType `json:"type"` // 数据类型 0-短剧数据 2-广告 AdvertiseId string `json:"advertiseId"` // 广告ID,type=2时返回 Link string `json:"link"` // 广告跳转链接,type=2时返回 Location int64 `json:"location"` // 广告位置ID,type=2时返回 PlayletData } // LikePlayletReq 点赞或取消点赞短剧请求 type LikePlayletReq struct { // ID Id int64 `json:"id" binding:"required"` // 是否点赞,true-点赞、false-取消点赞 IsLike *bool `json:"isLike" binding:"required"` } // LikePlayletResp 点赞或取消点赞短剧响应 type LikePlayletResp struct { // ID Id int64 `json:"id"` // 是否点赞,true-点赞、false-取消点赞 IsLike bool `json:"isLike"` // 点赞展示数 LikeNum int64 `json:"likeNum"` } // QueryLikePlayletListReq 当前用户点赞短剧分页请求 type QueryLikePlayletListReq struct { pubdef.Page } // QueryLikePlayletListResp 当前用户点赞短剧分页响应 type QueryLikePlayletListResp struct { response.BasePageResp Translations AppTranslationInfo `json:"translations"` // 导航 BottonTranslations AppTranslationInfo `json:"bottonTranslations"` // 底部翻译 } // PlayletHistoryListReq 当前用户短剧观看历史分页请求 type PlayletHistoryListReq struct { pubdef.Page } // PlayletHistoryReportReq 播放成功后上报短剧观看历史 type PlayletHistoryReportReq struct { PlayletID int64 `json:"playletId" binding:"required,gt=0"` // 短剧 ID ChapterID int64 `json:"chapterId" binding:"required,gt=0"` // 当前播放剧集 ID } // PlayletHistoryReportResp 短剧观看历史上报响应 type PlayletHistoryReportResp struct { WatchedAt time.Time `json:"watchedAt"` // 最近观看时间 } // PlayletHistoryListResp 当前用户短剧观看历史分页响应 type PlayletHistoryListResp struct { response.BasePageResp Translations AppTranslationInfo `json:"translations"` // 导航 BottonTranslations AppTranslationInfo `json:"bottonTranslations"` // 底部翻译 } // PlayletHistoryItem 短剧观看历史卡片 type PlayletHistoryItem struct { PlayletData ChapterID int64 `json:"chapterId"` // 最近观看剧集 ID Episode int64 `json:"episode"` // 最近观看集数 WatchedAt time.Time `json:"watchedAt"` // 最近观看时间 } // PlayletHistoryClearResp 清空短剧观看历史响应 type PlayletHistoryClearResp struct { DeletedCount int64 `json:"deletedCount"` // 删除记录数 } // FavoritePlayletReq 收藏或取消收藏短剧请求 type FavoritePlayletReq struct { Id int64 `json:"id" binding:"required"` // 短剧ID IsFavorite *bool `json:"isFavorite" binding:"required"` // true 收藏 false 取消收藏 } // FavoritePlayletResp 收藏或取消收藏短剧响应 type FavoritePlayletResp struct { Id int64 `json:"id"` // 短剧ID IsFavorite bool `json:"isFavorite"` // 当前收藏状态 CountCollect int64 `json:"countCollect"` // 收藏展示数 } // QueryFavoritePlayletListReq 当前用户收藏短剧分页请求 type QueryFavoritePlayletListReq struct { pubdef.Page } // QueryFavoritePlayletListResp 当前用户收藏短剧分页响应 type QueryFavoritePlayletListResp struct { response.BasePageResp Translations AppTranslationInfo `json:"translations"` // 导航 BottonTranslations AppTranslationInfo `json:"bottonTranslations"` // 底部翻译 } // PlayletRankReq 短剧排行榜分页请求 type PlayletRankReq struct { pubdef.Page // 榜单类型 0-点赞榜 1-周榜 2-月榜 3-年榜 RankPeriod int64 `json:"rankPeriod" form:"rankPeriod"` } // PlayletRankPeriod 短剧排行榜类型 type PlayletRankPeriod int64 const ( PlayletRankPeriodLike PlayletRankPeriod = 0 // 点赞榜,按累计点赞量降序,最多50条,不足随机补位 PlayletRankPeriodWeek PlayletRankPeriod = 1 // 周榜,按本周观看量降序,最多50条,不足随机补位 PlayletRankPeriodMonth PlayletRankPeriod = 2 // 月榜,按本月观看量降序,最多50条,不足随机补位 PlayletRankPeriodYear PlayletRankPeriod = 3 // 年榜,按本年观看量降序,最多50条,不足随机补位 ) // PlayletRankResp 短剧排行榜分页响应 type PlayletRankResp struct { response.BasePageResp // 导航 Translations AppTranslationInfo `json:"translations"` // 底部翻译 BottonTranslations AppTranslationInfo `json:"bottonTranslations"` } // PlayletRankData 短剧排行榜数据 type PlayletRankData struct { PlayletData // 榜单分数,点赞榜为累计展示点赞数,周/月/年榜为对应周期观看数 RankScore int64 `json:"rankScore"` } // QueryPlayletInfoReq 短剧详情请求 type QueryPlayletInfoReq struct { // 短剧ID Id int64 `json:"id" form:"id"` // 短剧slug,非空时优先按slug解析短剧ID Slug string `json:"slug" form:"slug"` } // QueryPlayletInfoResp 短剧详情响应 type QueryPlayletInfoResp struct { FreeEpisodeCount int64 `json:"freeEpisodeCount"` // 官网开放集数 1至1000表示开放第1集到第N集 -1表示开放全集 未配置按2集返回 // 当前路径 Path string `json:"path"` // 导航 Translations AppTranslationInfo `json:"translations"` // 配置信息 Config ConfigInfo `json:"config"` // 底部翻译 BottonTranslations AppTranslationInfo `json:"bottonTranslations"` // 广告 Advitise AdvitiseData `json:"advitise"` // 公告 Announcement AnnouncementInfo `json:"announcement"` // 短剧详情数据 PlayletInfo PlayletDetailInfo `json:"playletInfo"` // 剧集列表 ChapterList []PlayletChapterInfo `json:"chapterList"` // 当前登录用户是否已点赞该短剧 IsLike bool `json:"isLike"` // 当前登录用户是否已收藏该短剧 IsFavorite bool `json:"isFavorite"` } // QueryPlayletChapterInfoReq 短剧剧集详情请求 type QueryPlayletChapterInfoReq struct { // 剧集ID Id int64 `json:"id" form:"id" binding:"required"` } // QueryPlayletChapterInfoResp 短剧剧集详情响应 type QueryPlayletChapterInfoResp struct { FreeEpisodeCount int64 `json:"freeEpisodeCount"` // 官网开放集数 1至1000表示开放第1集到第N集 -1表示开放全集 未配置按2集返回 // 当前路径 Path string `json:"path"` // 导航 Translations AppTranslationInfo `json:"translations"` // 配置信息 Config ConfigInfo `json:"config"` // 底部翻译 BottonTranslations AppTranslationInfo `json:"bottonTranslations"` // 广告 Advitise AdvitiseData `json:"advitise"` // 公告 Announcement AnnouncementInfo `json:"announcement"` // 当前剧集详情 ChapterInfo PlayletChapterInfo `json:"chapterInfo"` // 所属短剧详情 PlayletInfo PlayletData `json:"playletInfo"` // 剧集列表 ChapterList []PlayletChapterInfo `json:"chapterList"` // 热门短剧列表 HotPlayletList []PlayletData `json:"hotPlayletList"` // 当前登录用户是否已点赞该短剧 IsLike bool `json:"isLike"` // 当前登录用户是否已收藏该短剧 IsFavorite bool `json:"isFavorite"` } // PlayletDetailInfo 短剧详情数据 type PlayletDetailInfo struct { PlayletData // 评论数量 CountComment int64 `json:"countComment"` // 当前登录用户是否已点赞该短剧 IsLike bool `json:"isLike"` // 当前登录用户是否已收藏该短剧 IsFavorite bool `json:"isFavorite"` } // PlayletChapterInfo 短剧剧集数据 type PlayletChapterInfo struct { IsOfficialOpen *bool `json:"isOfficialOpen,omitempty"` // 本集是否在官网开放 Id int64 `json:"id"` // 剧集ID PlayletId int64 `json:"playletId"` // 短剧ID MediaContentId uint `json:"mediaContentId"` // 媒资中心章节ID CurrentEpisode int64 `json:"currentEpisode"` // 第几集 Title string `json:"title"` // 章节名 Md5 string `json:"md5"` // 媒体md5 Hash string `json:"hash"` // 媒体hash Height int64 `json:"height"` // 高 Width int64 `json:"width"` // 宽 Ratio float64 `json:"ratio"` // 宽高比 VideoUrl string `json:"videoUrl"` // 视频播放地址,优先返回水印地址 MediaSize int64 `json:"mediaSize"` // 资源大小 MediaTime int64 `json:"mediaTime"` // 影片长度(秒) CountBrowse int64 `json:"countBrowse"` // 浏览数 CountCollect int64 `json:"countCollect"` // 收藏数 CountLike int64 `json:"countLike"` // 喜欢数 CountComment int64 `json:"countComment"` // 评论数 PayType playletchaptermod.PayType `json:"payType"` // 支付方式 0-免费 1-金币 2-VIP SingleCoins int64 `json:"singleCoins"` // 单集金币 WatermarkStatus playletchaptermod.WatermarkStatus `json:"watermarkStatus"` // 水印状态 0-未处理 1-已登记 2-处理中 3-已完成 CreatedAt time.Time `json:"createdAt"` // 创建时间 UpdatedAt time.Time `json:"updatedAt"` // 修改时间 } // PlayletData 短剧数据 type PlayletData struct { Id int64 `json:"id"` // 短剧id Status playletmod.Status `json:"status"` // 状态 0-下架 1-上架 IsRecommend bool `json:"isRecommend"` // 是否推荐 true-推荐 false-不推荐 IsNew bool `json:"isNew"` // 是否上新 本周内上架为true IsFeatured bool `json:"isFeatured"` // 是否爆剧 后台设置 IsOriginal bool `json:"isOriginal"` // 是否原创 后台新增或无媒资中心ID ShowOriginal bool `json:"showOriginal"` // 页面是否展示原创标识 OnlineAt time.Time `json:"onlineAt"` // 上架时间 MediaCreatedAt time.Time `json:"mediaCreatedAt"` // 媒资中心创建时间 MediaUpdatedAt time.Time `json:"mediaUpdatedAt"` // 媒资中心更新时间 Title string `json:"title"` // 标题 Slug string `json:"slug"` // slug Desc string `json:"desc"` // 简介 Anchor string `json:"anchor"` // 作者或演员 Cover string `json:"cover"` // 封面,已拼接图片域名 Preview string `json:"preview"` // 预告,已拼接图片域名 TagIds []int64 `json:"tagIds"` // 标签ID集合 TagNames []string `json:"tagNames"` // 标签名称集合 TagSlugs []string `json:"tagSlugs"` // 标签slug集合 与tagNames顺序一致 ThemeIds []int64 `json:"themeIds"` // 题材ID集合 ThemeNames []string `json:"themeNames"` // 题材名称集合 ContentType playletmod.ContentType `json:"contentType"` // 内容类型 0-短剧 1-普通短剧影集 2-漫画短剧 3-动漫 4-漫画 PayType playletmod.PayType `json:"payType"` // 支付方式 0-免费 1-金币 2-VIP SingleCoins int64 `json:"singleCoins"` // 单集金币,支付方式为金币时生效 TotalEpisode int64 `json:"totalEpisode"` // 总集数 UpdateStatus int `json:"updateStatus"` // 更新状态 1-连载中 2-已完结 CountBrowse int64 `json:"countBrowse"` // 观看展示数 HeatValue int64 `json:"heatValue"` // 热度值 CountCollect int64 `json:"countCollect"` // 收藏展示数 CountLike int64 `json:"countLike"` // 点赞展示数 VirtualCountLike int64 `json:"virtualCountLike"` // 后台虚拟点赞数 DisplayCountLike int64 `json:"displayCountLike"` // 点赞展示数 CreatedAt time.Time `json:"createdAt"` // 创建时间 UpdatedAt time.Time `json:"updatedAt"` // 修改时间 SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息 }