Initial commit: web_hghl_server

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-10-26 16:28:14 +08:00
co-authored by Claude Opus 4.7
commit 65fca60622
653 changed files with 135901 additions and 0 deletions
+92
View File
@@ -0,0 +1,92 @@
package proto
import (
"time"
"videoweb/pub/common/response"
"videoweb/pub/models/contenttagmod"
"videoweb/pub/pubdef"
)
// ContentTagListReq web端统一标签分页列表请求
type ContentTagListReq struct {
pubdef.Page
Id *int64 `form:"id" json:"id"` // 标签ID
Name string `form:"name" json:"name"` // 标签名称,支持模糊查询
Type *contenttagmod.ContentTagType `form:"type" json:"type"` // 内容类型 1-视频 5-短剧
Status *bool `form:"status" json:"status"` // 状态 true-启用 false-停用
}
// ContentTagListResp web端统一标签列表项
type ContentTagListResp struct {
Id int64 `json:"id"` // ID
Name string `json:"name"` // 标签名称
Slug string `json:"slug"` // slug
Types []contenttagmod.ContentTagType `json:"types"` // 支持类型 1-视频 5-短剧
TypeNames []string `json:"typeNames"` // 支持类型名称
Status bool `json:"status"` // 状态 true-启用 false-停用
Rank int64 `json:"rank"` // 排序,越大越靠前
VideoCount int64 `json:"videoCount"` // 绑定视频数量
PlayletCount int64 `json:"playletCount"` // 绑定短剧数量
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
CreatedById int64 `json:"createdById"` // 创建人ID
CreatedByName string `json:"createdByName"` // 创建人名称
UpdatedByName string `json:"updatedByName"` // 修改人名称
CreatedAt time.Time `json:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt"` // 修改时间
}
// ContentTagListPageResp web端统一标签分页列表响应
type ContentTagListPageResp struct {
response.BasePageResp
}
// ContentTagOptionReq web端统一标签下拉列表请求
type ContentTagOptionReq struct {
Type *contenttagmod.ContentTagType `form:"type" json:"type"` // 内容类型 1-视频 5-短剧,不传返回全部启用标签
}
// ContentTagOptionResp web端统一标签下拉列表响应
type ContentTagOptionResp struct {
List []*ContentTagOptionItem `json:"list"` // 标签下拉列表
}
// ContentTagOptionItem web端统一标签下拉项
type ContentTagOptionItem struct {
Id int64 `json:"id"` // ID
Name string `json:"name"` // 标签名称
Types []contenttagmod.ContentTagType `json:"types"` // 支持类型 1-视频 5-短剧
TypeNames []string `json:"typeNames"` // 支持类型名称
Rank int64 `json:"rank"` // 排序,越大越靠前
BindCount int64 `json:"bindCount"` // 当前查询类型的绑定数量,不传type时返回0
}
// ContentTagAddReq web端新增统一标签请求
type ContentTagAddReq struct {
Name string `json:"name" binding:"required"` // 标签名称
Slug string `json:"slug"` // slug,不传则按 SEO 关键词或名称自动生成
Types []contenttagmod.ContentTagType `json:"types" binding:"required"` // 支持类型 1-视频 5-短剧
Status *bool `json:"status" binding:"required"` // 状态 true-启用 false-停用
Rank int64 `json:"rank"` // 排序,越大越靠前
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// ContentTagAddResp web端新增统一标签响应
type ContentTagAddResp struct {
Id int64 `json:"id"` // ID
}
// ContentTagUpdateReq web端更新统一标签请求
type ContentTagUpdateReq struct {
Id int64 `json:"id" binding:"required"` // ID
Name *string `json:"name"` // 标签名称
Slug *string `json:"slug"` // slug,历史数据为空时更新会自动生成
Types *[]contenttagmod.ContentTagType `json:"types"` // 支持类型 1-视频 5-短剧
Status *bool `json:"status"` // 状态 true-启用 false-停用
Rank *int64 `json:"rank"` // 排序,越大越靠前
SeoInfo *pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// ContentTagDelReq web端删除统一标签请求
type ContentTagDelReq struct {
Id int64 `json:"id" binding:"required"` // ID
}
+67
View File
@@ -0,0 +1,67 @@
package proto
import (
"time"
"videoweb/pub/common/response"
)
// HomeBannerListReq web端首页 banner 分页列表请求
type HomeBannerListReq struct {
PageNum int64 `form:"pageNum" json:"pageNum"` // 页码,默认1
PageSize int64 `form:"pageSize" json:"pageSize"` // 每页数量,默认10,最大100
Id *int64 `form:"id" json:"id"` // 首页 banner ID
Name string `form:"name" json:"name"` // 名称,支持模糊查询
Status *bool `form:"status" json:"status"` // 状态 true-启用 false-停用
}
// HomeBannerListResp web端首页 banner 列表项
type HomeBannerListResp struct {
Id int64 `json:"id"` // ID
Name string `json:"name"` // 名称
Image string `json:"image"` // 图片
VerticalImage string `json:"verticalImage"` // 竖版图片
Url string `json:"url"` // URL
Rank int64 `json:"rank"` // 排序
Status bool `json:"status"` // 状态 true-启用 false-停用
CreatedById int64 `json:"createdById"` // 创建人ID
CreatedByName string `json:"createdByName"` // 创建人名称
UpdatedByName string `json:"updatedByName"` // 修改人名称
CreatedAt time.Time `json:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt"` // 修改时间
}
// HomeBannerListPageResp web端首页 banner 分页列表响应
type HomeBannerListPageResp struct {
response.BasePageResp
}
// HomeBannerAddReq web端新增首页 banner 请求
type HomeBannerAddReq struct {
Name string `json:"name" binding:"required"` // 名称
Image string `json:"image" binding:"required"` // 图片
VerticalImage string `json:"verticalImage"` // 竖版图片
Url string `json:"url"` // URL
Rank int64 `json:"rank"` // 排序
Status *bool `json:"status" binding:"required"` // 状态 true-启用 false-停用
}
// HomeBannerAddResp web端新增首页 banner 响应
type HomeBannerAddResp struct {
Id int64 `json:"id"` // ID
}
// HomeBannerUpdateReq web端更新首页 banner 请求
type HomeBannerUpdateReq struct {
Id int64 `json:"id" binding:"required"` // ID
Name *string `json:"name"` // 名称
Image *string `json:"image"` // 图片
VerticalImage *string `json:"verticalImage"` // 竖版图片
Url *string `json:"url"` // URL
Rank *int64 `json:"rank"` // 排序
Status *bool `json:"status"` // 状态 true-启用 false-停用
}
// HomeBannerDelReq web端删除首页 banner 请求
type HomeBannerDelReq struct {
Id int64 `json:"id" binding:"required"` // ID
}
+355
View File
@@ -0,0 +1,355 @@
package proto
import (
"time"
"videoweb/pub/common/response"
"videoweb/pub/models/playletchaptermod"
"videoweb/pub/models/playletmod"
"videoweb/pub/pubdef"
)
// PlayletListReq web端短剧分页列表请求
type PlayletListReq struct {
pubdef.Page
Id *int64 `form:"id" json:"id"` // 短剧ID
CategoryId *int64 `form:"categoryId" json:"categoryId"` // 分类ID
TagId *int64 `form:"tagId" json:"tagId"` // 标签ID
ThemeId *int64 `form:"themeId" json:"themeId"` // 题材ID
ContentType *playletmod.ContentType `form:"contentType" json:"contentType"` // 内容类型,0-短剧、1-普通短剧/影集、2-漫画短剧、3-动漫、4-漫画
PayType *playletmod.PayType `form:"payType" json:"payType"` // 支付方式,0-免费、1-金币、2-VIP
Status *playletmod.Status `form:"status" json:"status"` // 上架状态,0-下架、1-上架
IsFeatured *bool `form:"isFeatured" json:"isFeatured"` // 是否爆剧,true-是、false-否
IsOriginal *bool `form:"isOriginal" json:"isOriginal"` // 是否原创:true只查原创,false只查非原创,不传查全部
ShowOriginal *bool `form:"showOriginal" json:"showOriginal"` // 页面是否展示原创标识 不传查全部
IsRecommend *bool `form:"isRecommend" json:"isRecommend"` // 是否推荐,true-推荐、false-不推荐
ShowOnBanner *bool `form:"showOnBanner" json:"showOnBanner"` // 是否显示在首页banner,true-显示、false-不显示
Title string `form:"title" json:"title"` // 短剧标题,支持模糊查询
OperatorName string `form:"operatorName" json:"operatorName"` // 最后操作人名称,支持模糊查询
}
// PlayletListResp web端短剧列表项
type PlayletListResp struct {
Id int64 `json:"id"` // 短剧ID
Status playletmod.Status `json:"status"` // 上架状态,0-下架、1-上架
IsFeatured bool `json:"isFeatured"` // 是否爆剧,true-是、false-否
IsOriginal bool `json:"isOriginal"` // 是否原创:后台新增为true,媒资导入为false
ShowOriginal bool `json:"showOriginal"` // 页面是否展示原创标识
MediaBusiness string `json:"mediaBusiness"` // 媒资业务来源,按媒资标题前缀记录,如 CGDJ;空表示未标记
IsRecommend bool `json:"isRecommend"` // 是否推荐,true-推荐、false-不推荐
ShowOnBanner bool `json:"showOnBanner"` // 是否显示在首页banner,true-显示、false-不显示
Banner string `json:"banner"` // banner图
ReviewAt time.Time `json:"reviewAt"` // 审核时间
OnlineAt time.Time `json:"onlineAt"` // 上架时间
Title string `json:"title"` // 标题
Slug string `json:"slug"` // slug
Desc string `json:"desc"` // 简介
Anchor string `json:"anchor"` // 作者/演员
Cover string `json:"cover"` // 封面原图
CompressedCover string `json:"compressedCover"` // 压缩封面
Preview string `json:"preview"` // 预告
CategoryIds []int64 `json:"categoryIds"` // 分类ID集合
CategoryBinds []PlayletCategoryBind `json:"categoryBinds"` // 各分类下的排序
CategoryRank int64 `json:"categoryRank"` // 当前筛选分类下的排序
CategoryNames []string `json:"categoryNames"` // 分类名称集合
ThemeIds []int64 `json:"themeIds"` // 题材ID集合
ThemeNames []string `json:"themeNames"` // 题材名称集合
TagIds []int64 `json:"tagIds"` // 标签ID集合
TagNames []string `json:"tagNames"` // 标签名称集合
OldTags []string `json:"oldTags"` // 媒资库原标签名称
ContentType playletmod.ContentType `json:"contentType"` // 内容类型,0-短剧、1-普通短剧/影集、2-漫画短剧、3-动漫、4-漫画
PayType playletmod.PayType `json:"payType"` // 支付方式,0-免费、1-金币、2-VIP
SingleCoins int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时生效
TotalEpisode int64 `json:"totalEpisode"` // 总集数
FreeEpisodeCount int64 `json:"freeEpisodeCount"` // 官网开放集数 1至1000表示开放第1集到第N集 -1表示开放全集 历史未配置按2集返回
UpdateStatus int `json:"updateStatus"` // 连载状态,1-连载中、2-已完结
TopRank int64 `json:"topRank"` // 置顶排序
RecommendRank int64 `json:"recommendRank"` // 推荐排序
CountComment int64 `json:"countComment"` // 评论数
CountBuy int64 `json:"countBuy"` // 购买数
CountBrowse int64 `json:"countBrowse"` // 浏览数
VirtualCountBrowse int64 `json:"virtualCountBrowse"` // 后台虚拟观看数
DisplayCountBrowse int64 `json:"displayCountBrowse"` // 展示观看数
HeatValue int64 `json:"heatValue"` // 热度值
VirtualHeatValue int64 `json:"virtualHeatValue"` // 后台虚拟热度值
DisplayHeatValue int64 `json:"displayHeatValue"` // 展示热度值
CountCollect int64 `json:"countCollect"` // 收藏数
CountLike int64 `json:"countLike"` // 真实点赞数
VirtualCountLike int64 `json:"virtualCountLike"` // 虚拟点赞数
DisplayCountLike int64 `json:"displayCountLike"` // 展示点赞数=真实点赞数+虚拟点赞数
CountDisLike int64 `json:"countDisLike"` // 不喜欢数
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
OperatorId int64 `json:"operatorId"` // 最后操作人ID
OperatorName string `json:"operatorName"` // 最后操作人名称
CreatedAt time.Time `json:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt"` // 更新时间
}
// PlayletListPageResp web端短剧分页列表响应
type PlayletListPageResp struct {
response.BasePageResp
}
// PlayletCategoryBind 短剧在指定分类下的排序
type PlayletCategoryBind struct {
Id int64 `json:"id"` // 分类ID
Rank int64 `json:"rank"` // 排序值,越大越靠前,不填为0
}
// PlayletDelReq 删除短剧请求
type PlayletDelReq struct {
Ids []int64 `json:"ids" binding:"required"` // 短剧ID集合
}
// PlayletAddReq web端新增短剧请求
type PlayletAddReq struct {
CategoryIds []int64 `json:"categoryIds"` // 分类ID集合
CategoryBinds []PlayletCategoryBind `json:"categoryBinds"` // 各分类下的排序,优先于categoryIds
ThemeIds []int64 `json:"themeIds"` // 题材ID集合
Title string `json:"title" binding:"required"` // 标题
Slug string `json:"slug"` // slug,不传则按 SEO 关键词或标题自动生成
Desc string `json:"desc"` // 简介
Anchor string `json:"anchor"` // 作者/演员
Cover string `json:"cover"` // 封面原图
Preview string `json:"preview"` // 预告
TagIds []int64 `json:"tagIds"` // 标签ID集合
ContentType playletmod.ContentType `json:"contentType"` // 内容类型,0-短剧、1-普通短剧/影集、2-漫画短剧、3-动漫、4-漫画
PayType playletmod.PayType `json:"payType"` // 支付方式,0-免费、1-金币、2-VIP
SingleCoins int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时生效
TotalEpisode int64 `json:"totalEpisode"` // 总集数
FreeEpisodeCount *int64 `json:"freeEpisodeCount"` // 官网开放集数 不传默认2集 1至1000表示开放第1集到第N集 -1表示开放全集 0无效
TopRank int64 `json:"topRank"` // 置顶排序
RecommendRank int64 `json:"recommendRank"` // 推荐排序
Status playletmod.Status `json:"status"` // 上架状态,0-下架、1-上架
IsFeatured bool `json:"isFeatured"` // 是否爆剧,true-是、false-否
ShowOriginal bool `json:"showOriginal"` // 页面是否展示原创标识
IsRecommend bool `json:"isRecommend"` // 是否推荐,true-推荐、false-不推荐
ShowOnBanner bool `json:"showOnBanner"` // 是否显示在首页banner
Banner string `json:"banner"` // banner图
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletAddResp web端新增短剧响应
type PlayletAddResp struct {
Id int64 `json:"id"` // 短剧ID
}
// PlayletUpdateReq web端更新短剧请求
type PlayletUpdateReq struct {
Id int64 `json:"id" binding:"required"` // 短剧ID
Status *playletmod.Status `json:"status"` // 上架状态,0-下架、1-上架
IsFeatured *bool `json:"isFeatured"` // 是否爆剧,true-是、false-否
ShowOriginal *bool `json:"showOriginal"` // 页面是否展示原创标识 不传保持原值
IsRecommend *bool `json:"isRecommend"` // 是否推荐,true-推荐、false-不推荐
ShowOnBanner *bool `json:"showOnBanner"` // 是否显示在首页banner
Banner *string `json:"banner"` // banner图
CategoryIds *[]int64 `json:"categoryIds"` // 分类ID集合,传空数组表示清空分类
CategoryBinds *[]PlayletCategoryBind `json:"categoryBinds"` // 各分类下的排序,优先于categoryIds
ThemeIds *[]int64 `json:"themeIds"` // 题材ID集合
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集合,传空数组表示清空标签
ContentType *playletmod.ContentType `json:"contentType"` // 内容类型,0-短剧、1-普通短剧/影集、2-漫画短剧、3-动漫、4-漫画
PayType *playletmod.PayType `json:"payType"` // 支付方式,0-免费、1-金币、2-VIP
SingleCoins *int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时生效
TotalEpisode *int64 `json:"totalEpisode"` // 总集数
FreeEpisodeCount *int64 `json:"freeEpisodeCount"` // 官网可播放范围 不传则不修改 传1至1000时仅开放第1集至指定集数 传-1开放全部剧集 传0报参数错误
TopRank *int64 `json:"topRank"` // 置顶排序
RecommendRank *int64 `json:"recommendRank"` // 推荐排序
SeoInfo *pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletPayTypeSetReq web端单/批量设置短剧默认支付方式请求
type PlayletPayTypeSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
PayType playletmod.PayType `json:"payType"` // 支付方式,0-免费、1-金币、2-VIP
SingleCoins *int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时必填且需大于0
}
// PlayletWatermarkResetReq web端按短剧ID批量重置剧集水印请求
type PlayletWatermarkResetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条,传多个表示批量
}
// PlayletChapterListReq web端短剧剧集分页列表请求
type PlayletChapterListReq struct {
pubdef.Page
PlayletId *int64 `form:"playletId" json:"playletId"` // 短剧ID
Id *int64 `form:"id" json:"id"` // 剧集ID
WatermarkStatus *playletchaptermod.WatermarkStatus `form:"watermarkStatus" json:"watermarkStatus"` // 水印状态 0-未处理 1-已登记 2-处理中 3-已完成 4-处理失败
}
// PlayletChapterListResp web端短剧剧集列表项
type PlayletChapterListResp struct {
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"` // 原片视频地址
WatermarkVideoUrl string `json:"watermarkVideoUrl"` // 加水印后的视频地址
MediaSize int64 `json:"mediaSize"` // 资源大小
MediaTime int64 `json:"mediaTime"` // 影片长度,单位秒
CountComment int64 `json:"countComment"` // 评论数
CountBuy int64 `json:"countBuy"` // 购买数
CountBrowse int64 `json:"countBrowse"` // 浏览数
CountCollect int64 `json:"countCollect"` // 收藏数
CountLike int64 `json:"countLike"` // 点赞数
CountDisLike int64 `json:"countDisLike"` // 不喜欢数
PayType playletchaptermod.PayType `json:"payType"` // 支付方式 0-免费 1-金币 2-VIP
SingleCoins int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时生效
WatermarkStatus playletchaptermod.WatermarkStatus `json:"watermarkStatus"` // 水印状态 0-未处理 1-已登记 2-处理中 3-已完成 4-处理失败
MediaSourceId string `json:"mediaSourceId"` // media切片服原片ID
MediaTaskId string `json:"mediaTaskId"` // media切片服水印任务ID
CreatedAt time.Time `json:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt"` // 更新时间
}
// PlayletChapterListPageResp web端短剧剧集分页列表响应
type PlayletChapterListPageResp struct {
response.BasePageResp
}
// PlayletChapterAddReq web端新增短剧剧集请求
type PlayletChapterAddReq struct {
PlayletId int64 `json:"playletId" binding:"required"` // 短剧ID
CurrentEpisode int64 `json:"currentEpisode" binding:"required"` // 第几集
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"` // 影片长度,单位秒
PayType playletchaptermod.PayType `json:"payType"` // 支付方式 0-免费 1-金币 2-VIP
SingleCoins int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时生效
MediaSourceId string `json:"mediaSourceId"` // media切片服原片ID,上传正片已创建原片时直接沿用
}
// PlayletChapterAddResp web端新增短剧剧集响应
type PlayletChapterAddResp struct {
Id int64 `json:"id"` // 剧集ID
}
// PlayletChapterUpdateReq web端编辑短剧剧集请求
type PlayletChapterUpdateReq struct {
Id int64 `json:"id" binding:"required"` // 剧集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"` // 影片长度,单位秒
PayType *playletchaptermod.PayType `json:"payType"` // 支付方式 0-免费 1-金币 2-VIP
SingleCoins *int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时生效
}
// PlayletChapterDelReq web端单/批量删除短剧剧集请求
type PlayletChapterDelReq struct {
Ids []int64 `json:"ids"` // 剧集ID集合,传1个表示单条删除,传多个表示批量删除
}
// PlayletChapterSyncReq web端手动同步短剧剧集请求
type PlayletChapterSyncReq struct {
PlayletIds []int64 `json:"playletIds" binding:"required"` // 短剧ID集合,传1个表示单条同步,传多个表示批量同步
}
// PlayletChapterSyncResult web端手动同步短剧剧集结果项
type PlayletChapterSyncResult struct {
PlayletId int64 `json:"playletId"` // 短剧ID
NewChapterCount int `json:"newChapterCount"` // 本次新增剧集数量
Success bool `json:"success"` // 是否同步成功
Reason string `json:"reason"` // 失败原因
}
// PlayletChapterSyncResp web端手动同步短剧剧集响应
type PlayletChapterSyncResp struct {
Total int `json:"total"` // 同步总数
SuccessCount int `json:"successCount"` // 成功数量
FailedCount int `json:"failedCount"` // 失败数量
List []*PlayletChapterSyncResult `json:"list"` // 同步结果集合
}
// PlayletChapterPayTypeSetReq web端单/批量设置短剧剧集支付方式请求
type PlayletChapterPayTypeSetReq struct {
Ids []int64 `json:"ids"` // 剧集ID集合,传1个表示单条设置,传多个表示批量设置
PayType playletchaptermod.PayType `json:"payType"` // 支付方式 0-免费 1-金币 2-VIP
SingleCoins *int64 `json:"singleCoins"` // 单集金币,支付方式为1-金币时必填且需大于0
}
// PlayletStatusSetReq web端单/批量设置短剧上下架请求
type PlayletStatusSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
Status playletmod.Status `json:"status"` // 上架状态,0-下架、1-上架
}
// PlayletRecommendSetReq web端单/批量设置短剧推荐请求
type PlayletRecommendSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
IsRecommend bool `json:"isRecommend"` // 是否推荐,true-推荐、false-不推荐
}
// PlayletFeaturedSetReq web端单/批量设置短剧是否爆剧请求
type PlayletFeaturedSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
IsFeatured bool `json:"isFeatured"` // 是否爆剧,true-是、false-否
}
// PlayletBannerSetReq web端单/批量设置短剧是否显示在首页banner请求
type PlayletBannerSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
ShowOnBanner bool `json:"showOnBanner"` // 是否显示在首页banner,true-显示、false-不显示
}
// PlayletCategorySetReq web端单/批量设置短剧分类请求
type PlayletCategorySetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
CategoryIds *[]int64 `json:"categoryIds"` // 分类ID集合,可设置多个分类,传空数组表示清空分类,不传表示参数错误
}
// PlayletTagSetReq web端单/批量设置短剧标签请求
type PlayletTagSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
TagIds *[]int64 `json:"tagIds"` // 标签ID集合,可设置多个标签,传空数组表示清空标签,不传表示参数错误
}
// PlayletThemeSetReq web端单/批量设置短剧题材请求
type PlayletThemeSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
ThemeIds []int64 `json:"themeIds"` // 题材ID集合,可设置多个题材
}
// PlayletVirtualLikeSetReq web端单/批量设置短剧虚拟点赞数请求
type PlayletVirtualLikeSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合,传1个表示单条设置,传多个表示批量设置
MinVirtualCountLike int64 `json:"minVirtualCountLike"` // 虚拟点赞数最小值,必须大于等于0
MaxVirtualCountLike int64 `json:"maxVirtualCountLike"` // 虚拟点赞数最大值,必须大于等于最小值
}
// PlayletVirtualBrowseSetReq web端单/批量设置短剧虚拟观看数请求
type PlayletVirtualBrowseSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合
MinVirtualCountBrowse int64 `json:"minVirtualCountBrowse"` // 虚拟观看数最小值
MaxVirtualCountBrowse int64 `json:"maxVirtualCountBrowse"` // 虚拟观看数最大值
}
// PlayletVirtualHeatSetReq web端单/批量设置短剧虚拟热度请求
type PlayletVirtualHeatSetReq struct {
Ids []int64 `json:"ids"` // 短剧ID集合
MinVirtualHeatValue int64 `json:"minVirtualHeatValue"` // 虚拟热度最小值
MaxVirtualHeatValue int64 `json:"maxVirtualHeatValue"` // 虚拟热度最大值
}
+67
View File
@@ -0,0 +1,67 @@
package proto
import (
"time"
"videoweb/pub/common/response"
"videoweb/pub/pubdef"
)
// PlayletCategoryListReq web端分类分页列表请求
type PlayletCategoryListReq struct {
pubdef.Page
Id *int64 `form:"id" json:"id"` // 分类ID
Name string `form:"name" json:"name"` // 分类名称,支持模糊查询
Status *bool `form:"status" json:"status"` // 启用状态
}
// PlayletCategoryListResp web端分类列表项
type PlayletCategoryListResp struct {
Id int64 `json:"id"` // 分类ID
Name string `json:"name"` // 分类名称
Slug string `json:"slug"` // slug
Icon string `json:"icon"` // 分类图标
Status bool `json:"status"` // 启用状态
Rank int64 `json:"rank"` // 排序,越大越靠前
Remark string `json:"remark"` // 备注
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
CreatedAt time.Time `json:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt"` // 更新时间
}
// PlayletCategoryListPageResp web端分类分页列表响应
type PlayletCategoryListPageResp struct {
response.BasePageResp
}
// PlayletCategoryAddReq web端新增分类请求
type PlayletCategoryAddReq struct {
Name string `json:"name" binding:"required"` // 分类名称
Slug string `json:"slug"` // slug,不传则按 SEO 关键词或名称自动生成
Icon string `json:"icon"` // 分类图标
Status bool `json:"status"` // 启用状态
Rank int64 `json:"rank"` // 排序,越大越靠前
Remark string `json:"remark"` // 备注
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletCategoryAddResp web端新增分类响应
type PlayletCategoryAddResp struct {
Id int64 `json:"id"` // 分类ID
}
// PlayletCategoryUpdateReq web端更新分类请求
type PlayletCategoryUpdateReq struct {
Id int64 `json:"id" binding:"required"` // 分类ID
Name *string `json:"name"` // 分类名称
Slug *string `json:"slug"` // slug,历史数据为空时更新会自动生成
Icon *string `json:"icon"` // 分类图标
Status *bool `json:"status"` // 启用状态
Rank *int64 `json:"rank"` // 排序,越大越靠前
Remark *string `json:"remark"` // 备注
SeoInfo *pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletCategoryDelReq web端删除分类请求
type PlayletCategoryDelReq struct {
Id int64 `json:"id" binding:"required"` // 分类ID
}
+114
View File
@@ -0,0 +1,114 @@
package proto
import (
"time"
"videoweb/pub/common/response"
"videoweb/pub/pubdef"
)
// PlayletHomeConfigListReq web端首页配置分页列表请求
type PlayletHomeConfigListReq struct {
pubdef.Page
Id *int64 `form:"id" json:"id"`
Slug string `form:"slug" json:"slug"` // 页面路径标识
Title string `form:"title" json:"title"`
Desc string `form:"desc" json:"desc"`
Label string `form:"label" json:"label"`
Style string `form:"style" json:"style"`
ModuleType *int64 `form:"moduleType" json:"moduleType"`
DataType *int64 `form:"dataType" json:"dataType"` // 1全部上架短剧 2全部上架视频
RecommendType *int64 `form:"recommendType" json:"recommendType"`
CategoryId *int64 `form:"categoryId" json:"categoryId"`
Enabled *bool `form:"enabled" json:"enabled"`
}
// PlayletHomeConfigListResp web端首页配置列表项
type PlayletHomeConfigListResp struct {
Id int64 `json:"id"`
Slug string `json:"slug"` // 页面路径标识
Title string `json:"title"`
Desc string `json:"desc"`
Label string `json:"label"`
Style string `json:"style"`
CardBackgroundImage string `json:"cardBackgroundImage"`
ModuleType int64 `json:"moduleType"`
DataType int64 `json:"dataType"` // 1全部上架短剧 2全部上架视频
RecommendType int64 `json:"recommendType"`
CategoryId int64 `json:"categoryId"`
TopicIds []int64 `json:"topicIds"` // 专题ID集合 短剧为题材ID 视频为分类ID
Rank int64 `json:"rank"`
Enabled bool `json:"enabled"`
Limit int64 `json:"limit"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type PlayletHomeConfigListPageResp struct {
response.BasePageResp
}
// PlayletHomeTopicOptionsReq 首页专题下拉选项分页请求
type PlayletHomeTopicOptionsReq struct {
pubdef.Page
DataType int64 `form:"dataType" json:"dataType" binding:"required"` // 1短剧题材 2视频分类
ConfigId int64 `form:"configId" json:"configId"` // 编辑时传当前首页配置ID,用于回显已选项
}
// PlayletHomeTopicOption 首页专题下拉选项
type PlayletHomeTopicOption struct {
Id int64 `json:"id"` // 题材或视频分类ID
Name string `json:"name"` // 题材或视频分类名称
Status bool `json:"status"` // 上架状态,已选项下架时仍可回显
}
// PlayletHomeTopicOptionsResp 首页专题下拉选项分页响应
type PlayletHomeTopicOptionsResp struct {
List []*PlayletHomeTopicOption `json:"list"` // 当前页可选项
SelectedList []*PlayletHomeTopicOption `json:"selectedList"` // 当前配置已选项,独立于分页
TotalCount int64 `json:"totalCount"` // 可选项总数
PageNum int64 `json:"pageNum"` // 当前页码
PageSize int64 `json:"pageSize"` // 每页数量
}
type PlayletHomeConfigAddReq struct {
Title string `json:"title" binding:"required"`
Slug string `json:"slug"` // 页面路径标识 不传则按标题自动生成
Desc string `json:"desc"`
Label string `json:"label"`
Style string `json:"style" binding:"required"`
CardBackgroundImage string `json:"cardBackgroundImage"`
ModuleType int64 `json:"moduleType"`
DataType int64 `json:"dataType"` // 1全部上架短剧 2全部上架视频
RecommendType int64 `json:"recommendType" binding:"required"`
CategoryId int64 `json:"categoryId"`
TopicIds []int64 `json:"topicIds"` // 专题ID集合 短剧为题材ID 视频为分类ID
Rank int64 `json:"rank"`
Enabled bool `json:"enabled"`
Limit int64 `json:"limit"`
}
type PlayletHomeConfigAddResp struct {
Id int64 `json:"id"`
}
type PlayletHomeConfigUpdateReq struct {
Id int64 `json:"id" binding:"required"`
Slug *string `json:"slug"` // 不传保持原值 历史空值自动生成
Title *string `json:"title"`
Desc *string `json:"desc"`
Label *string `json:"label"`
Style *string `json:"style"`
CardBackgroundImage *string `json:"cardBackgroundImage"`
ModuleType *int64 `json:"moduleType"`
DataType *int64 `json:"dataType"` // 1全部上架短剧 2全部上架视频
RecommendType *int64 `json:"recommendType"`
CategoryId *int64 `json:"categoryId"`
TopicIds *[]int64 `json:"topicIds"` // 不传保持原值 传空数组清空专题
Rank *int64 `json:"rank"`
Enabled *bool `json:"enabled"`
Limit *int64 `json:"limit"`
}
type PlayletHomeConfigDelReq struct {
Ids []int64 `json:"ids" binding:"required"`
}
+91
View File
@@ -0,0 +1,91 @@
package proto
// PlayletResourceListReq web端短剧媒资列表请求
type PlayletResourceListReq struct {
Title *string `form:"title" json:"title"` // 标题
Tag *string `form:"tag" json:"tag"` // 标签
MediaType *int `form:"media_type" json:"media_type"` // 媒体类型 1-动漫 2-漫画 4-漫画短剧 5-短剧 6-普通短剧
SyncType *int `form:"sync_type" json:"sync_type"` // 同步类型 1-全量同步 2-增量同步
PageNumber int `form:"pageNumber" json:"pageNumber"` // 页码
PageSize int `form:"pageSize" json:"pageSize"` // 个数
}
// PlayletResourceListItem web端短剧媒资列表项
type PlayletResourceListItem struct {
ID uint `json:"id"`
VloggerId uint `json:"vlogger_id"`
Title string `json:"title"` // 标题
SaleCoin uint `json:"sale_coin"` // 整部售价
HorizontalCover string `json:"horizontal_cover"` // 横版封面
VerticalCover string `json:"vertical_cover"` // 竖版封面
Summary string `json:"summary"` // 简介
TotalEpisode uint `json:"total_episode"` // 总集数
UpdateStatus int `json:"update_status"` // 更新状态 1-连载中 2-已完结
MediaType int `json:"media_type"` // 媒体类型
Anchor string `json:"anchor"` // 作者
TagsText string `json:"tags_text"` // 标签文字
DataVersion int8 `json:"data_version"` // 数据版本
TerminalCdo string `json:"terminal_cdo"` // 上传者
CreateTime int64 `json:"create_time"` // 创建时间
UpdateTime int64 `json:"update_time"` // 修改时间
IsAdd bool `json:"isAdd"` // 是否已加入后台数据
}
// PlayletResourceListResp web端短剧媒资列表响应
type PlayletResourceListResp struct {
List []*PlayletResourceListItem `json:"list"`
Total uint `json:"total"`
}
// PlayletResourceUseReq web端短剧媒资入库请求
type PlayletResourceUseReq struct {
Ids []uint `json:"ids"` // 媒资中心资源ID集合
}
// PlayletResourceChapterListReq web端短剧媒资剧集列表请求
type PlayletResourceChapterListReq struct {
Id uint `form:"id" json:"id" binding:"required"` // 媒资中心资源ID
}
// PlayletResourceChapterItem web端短剧媒资剧集项
type PlayletResourceChapterItem struct {
Id uint `json:"id"` // 媒资内容ID
EpisodeNumber int `json:"episodeNumber"` // 第几集
Title string `json:"title"` // 章节名
Cover string `json:"cover"` // 封面
VideoUrl string `json:"videoUrl"` // 播放地址
Height uint `json:"height"` // 高
Width uint `json:"width"` // 宽
MediaSize uint `json:"mediaSize"` // 资源大小
PlayTime uint `json:"playTime"` // 播放时长(秒)
SaleCoin uint `json:"saleCoin"` // 单集售价
HashId string `json:"hashId"` // 资源hash
CreateTime int64 `json:"createTime"` // 创建时间
UpdateTime int64 `json:"updateTime"` // 更新时间
}
// PlayletResourceChapterListResp web端短剧媒资剧集列表响应
type PlayletResourceChapterListResp struct {
MediaId uint `json:"mediaId"` // 媒资中心资源ID
Title string `json:"title"` // 短剧标题
List []*PlayletResourceChapterItem `json:"list"` // 剧集列表
Total int `json:"total"` // 剧集数量
}
// PlayletResourceUseSuccess web端短剧媒资入库成功项
type PlayletResourceUseSuccess struct {
MediaId uint `json:"mediaId"`
PlayletId int64 `json:"playletId"`
}
// PlayletResourceUseFailed web端短剧媒资入库失败项
type PlayletResourceUseFailed struct {
MediaId uint `json:"mediaId"`
Reason string `json:"reason"`
}
// PlayletResourceUseResp web端短剧媒资入库响应
type PlayletResourceUseResp struct {
Success []*PlayletResourceUseSuccess `json:"success"`
Failed []*PlayletResourceUseFailed `json:"failed"`
}
+58
View File
@@ -0,0 +1,58 @@
package proto
import (
"time"
"videoweb/pub/common/response"
"videoweb/pub/pubdef"
)
// PlayletTagListReq web端标签分页列表请求
type PlayletTagListReq struct {
pubdef.Page
Id *int64 `form:"id" json:"id"`
Name string `form:"name" json:"name"`
Status *bool `form:"status" json:"status"`
}
// PlayletTagListResp web端标签列表项
type PlayletTagListResp struct {
Id int64 `json:"id"`
Name string `json:"name"`
Status bool `json:"status"`
Rank int64 `json:"rank"`
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// PlayletTagListPageResp web端标签分页列表响应
type PlayletTagListPageResp struct {
response.BasePageResp
}
// PlayletTagAddReq web端新增标签请求
type PlayletTagAddReq struct {
Name string `json:"name" binding:"required"`
Status bool `json:"status"`
Rank int64 `json:"rank"`
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletTagAddResp web端新增标签响应
type PlayletTagAddResp struct {
Id int64 `json:"id"`
}
// PlayletTagUpdateReq web端更新标签请求
type PlayletTagUpdateReq struct {
Id int64 `json:"id" binding:"required"`
Name *string `json:"name"`
Status *bool `json:"status"`
Rank *int64 `json:"rank"`
SeoInfo *pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletTagDelReq web端删除标签请求
type PlayletTagDelReq struct {
Id int64 `json:"id" binding:"required"`
}
+64
View File
@@ -0,0 +1,64 @@
package proto
import (
"time"
"videoweb/pub/common/response"
"videoweb/pub/pubdef"
)
// PlayletThemeListReq web端题材分页列表请求
type PlayletThemeListReq struct {
pubdef.Page
Id *int64 `form:"id" json:"id"` // 题材ID
Name string `form:"name" json:"name"` // 题材名称,支持模糊查询
Status *bool `form:"status" json:"status"` // 上架状态
}
// PlayletThemeListResp web端题材列表项
type PlayletThemeListResp struct {
Id int64 `json:"id"` // 题材ID
Name string `json:"name"` // 题材名称
Slug string `json:"slug"` // slug
Icon string `json:"icon"` // 题材图标
Status bool `json:"status"` // 上架状态
Rank int64 `json:"rank"` // 排序,越大越靠前
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
CreatedAt time.Time `json:"createdAt"` // 创建时间
UpdatedAt time.Time `json:"updatedAt"` // 更新时间
}
// PlayletThemeListPageResp web端题材分页列表响应
type PlayletThemeListPageResp struct {
response.BasePageResp
}
// PlayletThemeAddReq web端新增题材请求
type PlayletThemeAddReq struct {
Name string `json:"name" binding:"required"` // 题材名称
Slug string `json:"slug"` // slug,不传则按 SEO 关键词或名称自动生成
Icon string `json:"icon"` // 题材图标
Status bool `json:"status"` // 上架状态
Rank int64 `json:"rank"` // 排序,越大越靠前
SeoInfo pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletThemeAddResp web端新增题材响应
type PlayletThemeAddResp struct {
Id int64 `json:"id"` // 题材ID
}
// PlayletThemeUpdateReq web端更新题材请求
type PlayletThemeUpdateReq struct {
Id int64 `json:"id" binding:"required"` // 题材ID
Name *string `json:"name"` // 题材名称
Slug *string `json:"slug"` // slug,历史数据为空时更新会自动生成
Icon *string `json:"icon"` // 题材图标
Status *bool `json:"status"` // 上架状态
Rank *int64 `json:"rank"` // 排序,越大越靠前
SeoInfo *pubdef.SeoValue `json:"seoInfo"` // Seo相关信息
}
// PlayletThemeDelReq web端删除题材请求
type PlayletThemeDelReq struct {
Id int64 `json:"id" binding:"required"` // 题材ID
}
+21
View File
@@ -0,0 +1,21 @@
package proto
// SlugSyncReq 后台补齐历史空 slug 请求
type SlugSyncReq struct {
MaxSize int64 `json:"maxSize"` // 本次最多处理的空 slug 记录数,默认500,最大2000
Type string `json:"type"` // 可选,指定类型;空则按顺序处理全部
}
// SlugSyncResp 后台补齐历史空 slug 响应
type SlugSyncResp struct {
VideoUpdated int64 `json:"videoUpdated"` // 本次补齐的视频数
VideoCategoryUpdated int64 `json:"videoCategoryUpdated"` // 本次补齐的视频分类数
ActressUpdated int64 `json:"actressUpdated"` // 本次补齐的女优数
VideoCreaterUpdated int64 `json:"videoCreaterUpdated"` // 本次补齐的作者数
PlayletUpdated int64 `json:"playletUpdated"` // 本次补齐的短剧数
PlayletCategoryUpdated int64 `json:"playletCategoryUpdated"` // 本次补齐的短剧分类数
PlayletThemeUpdated int64 `json:"playletThemeUpdated"` // 本次补齐的短剧主题数
ContentTagUpdated int64 `json:"contentTagUpdated"` // 本次补齐的统一标签数
TotalUpdated int64 `json:"totalUpdated"` // 本次合计补齐数
HasMore bool `json:"hasMore"` // 是否还有未处理的历史数据
}