Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+118
View File
@@ -0,0 +1,118 @@
package vidctrl
import (
"91porn-server/common"
"91porn-server/common/stderr"
"91porn-server/models/commod"
"91porn-server/web/service/vidser"
"time"
"go.mongodb.org/mongo-driver/bson/primitive"
"github.com/gin-gonic/gin"
)
// GetMediaList doc
// @Summary 获取媒体资源库资源
// @Description 获取媒体资源库资源
// @Tags vid
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber formData integer true "查询页码"
// @Param pageSize formData integer true "页码大小"
// @Router /api/web/admin/mediaResource/list [get]
func GetMediaList(ctx *gin.Context) {
var p struct {
Title string `form:"title" json:"title" `
TagText string `form:"tag_text" json:"tag_text"` //标签搜索
HashId string `form:"hash_id" json:"hash_id"`
MVia int `form:"mVia" json:"mVia"` //0 (defalut) from all;1 from uploader;2 from non-uploader
VideoType int `form:"videoType" json:"videoType"` //0 长视频 1短视频 2图文
VloggerUserId int `form:"vlogger_user_id" json:"vlogger_user_id"` //up主所在平台的uid
SyncType string `form:"syncType" json:"syncType"` //同步类型all 全量 incr
TerminalCdo string `form:"terminalCdo" json:"terminalCdo"` // 上传者
SortType int `form:"sortType" json:"sortType"` // 0-正序 1-倒序
StartTime time.Time `form:"start" json:"start"` // 开始时间
EndTime time.Time `form:"end" json:"end"` // 结束时间
MaxTotal int `json:"maxTotal" form:"maxTotal"` // 最大列表总数
commod.Page
}
if err := ctx.ShouldBind(&p); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
data, total, err := vidser.GetMediaList(ctx, int64(p.PageNumber), int64(p.PageSize), int64(p.VloggerUserId),
p.Title, p.TagText, p.HashId, p.MVia, p.VideoType, p.SyncType, p.TerminalCdo, p.StartTime, p.EndTime, p.SortType, p.MaxTotal)
if err != nil {
common.ServeJSON(ctx, stderr.Failure, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"count": total,
"list": data,
})
}
// UseMedia doc
// @Summary 使用资源
// @Description 使用资源媒体资源库资源
// @Tags vid
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber formData integer true "查询页码"
// @Param pageSize formData integer true "页码大小"
// @Router /api/web/admin/mediaResource/use [post]
func UseMedia(ctx *gin.Context) {
manager, err := common.GetAdminAct(ctx)
if err != nil {
return
}
var p struct {
IDs []int64 `json:"ids"`
AuthorID uint64 `json:"authorID"`
Tags []string `json:"tags"`
SectionID primitive.ObjectID `json:"sectionID"`
VideoType int `json:"videoType"` //0 长视频 1短视频 2图文
OnlineTime time.Time `json:"onlineTime" form:"onlineTime"` // 自动上架时间
Coins *int64 `json:"coins" form:"coins"`
}
if err = ctx.ShouldBind(&p); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
hits, err := vidser.UseMedias(ctx, p.IDs, p.AuthorID, p.SectionID, p.Tags, p.VideoType, manager, p.Coins, p.OnlineTime)
if err != nil {
common.ServeJSON(ctx, stderr.Failure, err.Error())
return
}
resp := gin.H{"sensitiveHits": hits}
if len(hits) > 0 {
resp["sensitiveTip"] = vidser.SensitiveForcedOfflineTip
}
common.ServeJSON(ctx, stderr.Success, resp)
}
// IgnoreMedia doc
// @Summary 忽略媒体资源
// @Description 忽略媒体资源库资源
// @Tags vid
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber formData integer true "查询页码"
// @Param pageSize formData integer true "页码大小"
// @Router /api/web/admin/mediaResource/ignore [post]
func IgnoreMedia(ctx *gin.Context) {
var p struct {
IDs []int64 `json:"ids"`
VideoType int `json:"videoType"`
}
if err := ctx.ShouldBind(&p); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
if err := vidser.IgnoreMedias(ctx, p.IDs, p.VideoType); err != nil {
common.ServeJSON(ctx, stderr.Failure, err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, "")
}