@@ -0,0 +1,236 @@
|
||||
package vidctrl
|
||||
|
||||
import (
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/constant"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/l/operatorlgmod"
|
||||
"91porn-server/models/v/discount_area_mod"
|
||||
"91porn-server/web/service/discount_area_ser"
|
||||
"encoding/json"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// DiscountAreaList doc
|
||||
// @Summary 获取折扣专区列表
|
||||
// @Description 获取折扣专区列表
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Success 200 {object} discount_area_mod.WebDiscountAreaListResp "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/list [get]
|
||||
func DiscountAreaList(ctx *gin.Context) {
|
||||
list, err := discount_area_mod.GetAllNoDeleteDiscountArea()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, &discount_area_mod.WebDiscountAreaListResp{
|
||||
List: list,
|
||||
})
|
||||
}
|
||||
|
||||
// DiscountAreaAdd doc
|
||||
// @Summary 新增折扣专区
|
||||
// @Description 新增折扣专区
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param title formData string true "标题"
|
||||
// @Param desc formData string true "描述"
|
||||
// @Param discount formData integer true "折扣,1折 10,1.5折 15"
|
||||
// @Param status formData integer true "0-未开启 1-开启"
|
||||
// @Param sortCode formData integer true "排序字段"
|
||||
// @Param recommendNum formData integer true "推荐展示视频个数"
|
||||
// @Success 200 {object} string "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/add [post]
|
||||
func DiscountAreaAdd(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := discount_area_mod.WebDiscountAreaAddReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if req.Discount < 0 || req.Discount > 100 {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
err = discount_area_ser.AddDiscountArea(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInsertError, err.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoDiscountArea, constant.Add, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// DiscountAreaUpdate doc
|
||||
// @Summary 修改折扣专区
|
||||
// @Description 修改折扣专区
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData string true "id"
|
||||
// @Param title formData string false "标题"
|
||||
// @Param desc formData string false "描述"
|
||||
// @Param discount formData integer false "折扣,1折 10,1.5折 15"
|
||||
// @Param status formData integer false "0-未开启 1-开启"
|
||||
// @Param sortCode formData integer false "排序字段"
|
||||
// @Param recommendNum formData integer true "推荐展示视频个数"
|
||||
// @Success 200 {object} string "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/update [post]
|
||||
func DiscountAreaUpdate(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := discount_area_mod.WebDiscountAreaUpdateReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if req.Discount != nil && (*req.Discount < 0 || *req.Discount > 100) {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
err = discount_area_ser.UpdateDiscountArea(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInsertError, err.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoDiscountArea, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// DiscountAreaDelete doc
|
||||
// @Summary 删除折扣专区
|
||||
// @Description 删除折扣专区
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData integer true "id"
|
||||
// @Success 200 {object} string "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/delete [post]
|
||||
func DiscountAreaDelete(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := discount_area_mod.WebDiscountAreaDeleteReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
err = discount_area_ser.DeleteDiscountArea(req.ID)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, nil)
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoDiscountArea, constant.Delete, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// DiscountAreaVids doc
|
||||
// @Summary 折扣专区视频列表
|
||||
// @Description 折扣专区视频列表
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "页码数"
|
||||
// @Param pageSize formData integer true "页码数"
|
||||
// @Param discountAreaId formData string true "折扣专区id"
|
||||
// @Param vid formData string true "帖子id"
|
||||
// @Success 200 {object} discount_area_mod.WebDiscountAreaVidsResp "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/vid/list [get]
|
||||
func DiscountAreaVids(ctx *gin.Context) {
|
||||
req := discount_area_mod.WebDiscountAreaVidsReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
list, total, err := discount_area_ser.GetDiscountAreaVids(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, &discount_area_mod.WebDiscountAreaVidsResp{
|
||||
List: list,
|
||||
Total: total,
|
||||
})
|
||||
}
|
||||
|
||||
// DiscountAreaAddVid doc
|
||||
// @Summary 折扣专区新增视频
|
||||
// @Description 折扣专区新增视频
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param discountAreaId formData string true "折扣专区id"
|
||||
// @Param vids formData []string true "帖子id"
|
||||
// @Success 200 {object} string "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/vid/add [post]
|
||||
func DiscountAreaAddVid(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := discount_area_mod.WebDiscountAreaAddVidReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code := discount_area_ser.DiscountAreaAddVid(&req)
|
||||
if code != stderr.Success {
|
||||
common.ServeJSON(ctx, code, code.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoDiscountAreaVideo, constant.Add, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
}
|
||||
|
||||
// DiscountAreaDeleteVid doc
|
||||
// @Summary 折扣专区删除视频
|
||||
// @Description 折扣专区删除视频
|
||||
// @Tags discountArea
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param vids formData []string true "视频id"
|
||||
// @Success 200 {object} string "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/discount_area/vid/delete [post]
|
||||
func DiscountAreaDeleteVid(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := discount_area_mod.WebDiscountAreaDeleteVidReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code := discount_area_ser.DiscountAreaDeleteVid(req.Ids)
|
||||
if code != stderr.Success {
|
||||
common.ServeJSON(ctx, code, code.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoDiscountAreaVideo, constant.Delete, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
}
|
||||
@@ -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, "")
|
||||
}
|
||||
@@ -0,0 +1,126 @@
|
||||
package vidctrl
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/constant"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/l/operatorlgmod"
|
||||
"91porn-server/models/v/rjctmpltmod"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// GetRejectTemplate doc
|
||||
// @Summary 获取审核拒绝模版
|
||||
// @Description 获取审核拒绝模版
|
||||
// @Tags recharge
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/recharge/channel/list [get]
|
||||
func GetRejectTemplate(ctx *gin.Context) {
|
||||
rType := ctx.Query("type")
|
||||
infos, err := rjctmpltmod.FindMany(rType)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, err.Error())
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, gin.H{
|
||||
"list": infos,
|
||||
})
|
||||
}
|
||||
|
||||
// RejectTemplateInsert doc
|
||||
// @Summary 新增
|
||||
// @Description 新增
|
||||
// @Tags recharge
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param reachargeDetails formData rjctmpltmod.RejectTemplate ture "product卡"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/rejectTemp/insert [post]
|
||||
func RejectTemplateInsert(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
r := rjctmpltmod.RejectTemplate{}
|
||||
if err = ctx.ShouldBind(&r); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
|
||||
return
|
||||
}
|
||||
if err = rjctmpltmod.InsertOne(r); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInputExist, err.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(r)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.RejectTemplate, constant.Add, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// RejectTemplateUpdate doc
|
||||
// @Summary 编辑充值渠道
|
||||
// @Description 编辑充值渠道
|
||||
// @Tags recharge
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/recharge/channel/update [post]
|
||||
func RejectTemplateUpdate(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
set := rjctmpltmod.Edit{}
|
||||
if err = ctx.ShouldBind(&set); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
|
||||
return
|
||||
}
|
||||
if err = rjctmpltmod.Update(set); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbUpdateError, err.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(set)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.RejectTemplate, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// RejectTemplateDelete doc
|
||||
// @Summary 删除
|
||||
// @Description 删除
|
||||
// @Tags recharge
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData int true "product等级""
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/recharge/channel/delete [delete]
|
||||
func RejectTemplateDelete(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
var p struct {
|
||||
IDs []primitive.ObjectID `json:"ids"`
|
||||
}
|
||||
if err = ctx.ShouldBind(&p); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err.Error())
|
||||
return
|
||||
}
|
||||
if err = rjctmpltmod.DeleteMany(p.IDs); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, err.Error())
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(p)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.RejectTemplate, constant.Delete, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
@@ -0,0 +1,840 @@
|
||||
package vidctrl
|
||||
|
||||
import (
|
||||
"91porn-server/models/v/export_task_mod"
|
||||
"91porn-server/models/v/vidtimeonlinemod"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"91porn-server/common"
|
||||
"91porn-server/common/constant"
|
||||
"91porn-server/common/constant/redisconst"
|
||||
"91porn-server/common/stderr"
|
||||
"91porn-server/models/l/operatorlgmod"
|
||||
"91porn-server/models/s/statrecordmod"
|
||||
"91porn-server/models/v/operationlogmod"
|
||||
"91porn-server/models/v/pushmod"
|
||||
"91porn-server/models/v/tagmod"
|
||||
"91porn-server/models/v/vidmod"
|
||||
"91porn-server/models/v/vidpopmod"
|
||||
"91porn-server/web/service/vidser"
|
||||
"91porn-server/web/webg"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
)
|
||||
|
||||
// GetVidList doc
|
||||
// @Summary 获取视频列表
|
||||
// @Description 根据各种条件获取视频的列表
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Param status formData integer true "是否通过审核,0 未审核 1通过 2审核失败 3视为免费 4所有 5非零"
|
||||
// @Param key formData string true "查询的排序条件,createdAt,playCount"
|
||||
// @Param value formData integer true "正序反序,-1,1"
|
||||
// @Param isFree formData integer true "是否付费视频,0, 付费,1,免费, 2, 所有"
|
||||
// @Param isUserUp formData integer true "是否用户上传,0, 所有,1,是, 2,否"
|
||||
// @Param chosen formData integer true "是否精选 1精选 2未精选"
|
||||
// @Param title formData string true "过滤标题"
|
||||
// @Param uid formData string true "上传用户uid过滤"
|
||||
// @Param start formData integer true "上传时间,开始范围,时间戳"
|
||||
// @Param end formData integer true "上传时间,结束范围,时间戳"
|
||||
// @Param sectionID formData string false "专题ID"
|
||||
// @Param isSortedUnderModule formData string false "视频在专题下是否设置了排序"
|
||||
// @Param seedLinkUrl formData string false "种子下载链接"
|
||||
// @Param seedSize formData int false "种子影片大小"
|
||||
// @Param seedPlayTime formData int false "种子影片时长"
|
||||
// @Success 200 {object} vidmod.ListResp "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/list [get]
|
||||
func GetVidList(ctx *gin.Context) {
|
||||
req := vidmod.ListReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
m, sort, err := assembleConditions(req)
|
||||
if err != stderr.Success {
|
||||
common.ServeJSON(ctx, err, err)
|
||||
return
|
||||
}
|
||||
code, data := vidser.GetVidList(m, sort, req.PageNumber, req.PageSize, req.IsPush)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// GetVidList doc
|
||||
// @Summary 导出视频列表
|
||||
// @Description 根据各种条件导出视频的列表
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param status formData integer true "是否通过审核,0 未审核 1通过 2审核失败 3视为免费 4所有 5非零"
|
||||
// @Param key formData string true "查询的排序条件,createdAt,playCount"
|
||||
// @Param value formData integer true "正序反序,-1,1"
|
||||
// @Param isFree formData integer true "是否付费视频,0, 付费,1,免费, 2, 所有"
|
||||
// @Param isUserUp formData integer true "是否用户上传,0, 所有,1,是, 2,否"
|
||||
// @Param chosen formData integer true "是否精选 1精选 2未精选"
|
||||
// @Param title formData string true "过滤标题"
|
||||
// @Param uid formData string true "上传用户uid过滤"
|
||||
// @Param start formData integer true "上传时间,开始范围,时间戳"
|
||||
// @Param end formData integer true "上传时间,结束范围,时间戳"
|
||||
// @Param sectionID formData string false "专题ID"
|
||||
// @Param isSortedUnderModule formData string false "视频在专题下是否设置了排序"
|
||||
// @Success 200 {string} string "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/export [post]
|
||||
func ExportVidList(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.ListReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
err = export_task_mod.CreateTask(export_task_mod.ExportVidTask, manager, req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrExportFileFail, err)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, "success")
|
||||
//m, sort, err := assembleConditions(req)
|
||||
//if err != stderr.Success {
|
||||
// common.ServeJSON(ctx, err, err)
|
||||
// return
|
||||
//}
|
||||
//buff, err := vidser.ExportVidList(m, sort)
|
||||
//if err != stderr.Success {
|
||||
// common.ServeJSON(ctx, err, err)
|
||||
// return
|
||||
//}
|
||||
//common.ServeFile(ctx, "video-list", common.FileExcel, &buff)
|
||||
}
|
||||
|
||||
func assembleConditions(req vidmod.ListReq) (m map[string]interface{}, sort vidser.SortModeList, err stderr.Code) {
|
||||
sort = vidser.SortModeList{{Field: "createdAt", Value: -1}}
|
||||
m = make(map[string]interface{})
|
||||
if req.ShowType != nil {
|
||||
m["showType"] = *req.ShowType
|
||||
}
|
||||
if req.Status != 4 {
|
||||
if req.Status == 7 {
|
||||
m["status"] = map[string]int{"$gt": 0}
|
||||
} else {
|
||||
m["status"] = req.Status
|
||||
}
|
||||
}
|
||||
if req.IsFree == 0 {
|
||||
m["coins"] = map[string]int{"$gt": 0}
|
||||
}
|
||||
if req.IsFree == 1 {
|
||||
m["coins"] = map[string]int{"$eq": 0}
|
||||
}
|
||||
if req.IsUserUp == 2 {
|
||||
m["publisherID"] = map[string]int{"$lt": 115000}
|
||||
}
|
||||
if req.IsUserUp == 1 {
|
||||
m["publisherID"] = map[string]int{"$gt": 115000}
|
||||
}
|
||||
if len(req.Title) != 0 {
|
||||
m["title"] = map[string]string{"$regex": req.Title, "$options": "i"}
|
||||
}
|
||||
if req.UID > 0 {
|
||||
m["publisherID"] = req.UID
|
||||
}
|
||||
if req.Chosen == 1 {
|
||||
m["chosen"] = true
|
||||
}
|
||||
if req.Chosen == 2 {
|
||||
m["chosen"] = false
|
||||
}
|
||||
if req.FreeArea == 1 {
|
||||
m["freeArea"] = true
|
||||
}
|
||||
if req.FreeArea == 2 {
|
||||
m["freeArea"] = false
|
||||
}
|
||||
if !req.End.IsZero() {
|
||||
m["createdAt"] = map[string]time.Time{"$gte": req.Start, "$lt": req.End}
|
||||
}
|
||||
if req.ReviewAccount != "" {
|
||||
m["reviewAccount"] = req.ReviewAccount
|
||||
}
|
||||
if len(req.Tag) != 0 {
|
||||
id, err := tagmod.GetTagIDByName(req.Tag)
|
||||
if err != nil {
|
||||
return m, sort, stderr.ErrDbQueryError
|
||||
}
|
||||
m["tags"] = id
|
||||
//sort = vidser.SortModeList{{Field: "tagSort." + id.Hex(), Value: -1}, {Field: "createdAt", Value: -1}}
|
||||
}
|
||||
if len(req.ID) != 0 {
|
||||
oid, err := primitive.ObjectIDFromHex(req.ID)
|
||||
if err != nil {
|
||||
return m, sort, stderr.ErrParamError
|
||||
}
|
||||
m["_id"] = oid
|
||||
}
|
||||
//通过初始价格判断是否是马甲账号
|
||||
if req.IsPretendAcc == 1 {
|
||||
m["coins"] = vidmod.PretendAccInitCoins
|
||||
}
|
||||
if req.IsPretendAcc == 2 {
|
||||
//i := make(map[string]int64)
|
||||
//i["$ne"] = vidmod.PretendAccInitCoins
|
||||
m["coins"] = map[string]int64{"$ne": vidmod.PretendAccInitCoins}
|
||||
}
|
||||
m["deleteAt"] = bson.M{"$exists": false}
|
||||
if req.NewsType != "" {
|
||||
m["newsType"] = req.NewsType
|
||||
}
|
||||
|
||||
if req.LiaoBaTop != nil {
|
||||
if *req.LiaoBaTop {
|
||||
sort = vidser.LiaoBaTopSortModeList()
|
||||
m["liaoBaTopSort"] = bson.M{"$gt": 0}
|
||||
} else {
|
||||
m["liaoBaTopSort"] = 0
|
||||
}
|
||||
}
|
||||
if req.SectionID != "" {
|
||||
m["sectionID"] = req.SectionID
|
||||
}
|
||||
m["isSortedUnderModule"] = req.IsSortedUnderModule
|
||||
if req.IsSortedUnderModule {
|
||||
sort = nil
|
||||
}
|
||||
if req.IsRecommended != nil {
|
||||
if *req.IsRecommended {
|
||||
m["recoWeight"] = bson.M{"$gte": 0}
|
||||
} else {
|
||||
m["recoWeight"] = bson.M{"$lt": 0}
|
||||
}
|
||||
}
|
||||
if req.Key == "likeRate" || req.Key == "purchaseRate" {
|
||||
m[req.Key] = req.Value
|
||||
}
|
||||
if req.IsHappinessPlazaTop != nil && *req.IsHappinessPlazaTop {
|
||||
if *req.IsHappinessPlazaTop {
|
||||
m["happinessPlazaTop"] = bson.M{"$gt": 0}
|
||||
} else {
|
||||
m["happinessPlazaTop"] = bson.M{"$lte": 0}
|
||||
}
|
||||
}
|
||||
return m, sort, stderr.Success
|
||||
}
|
||||
|
||||
// GetVidListByIds doc
|
||||
// @Summary 根据Ids获取视频列表
|
||||
// @Description 根据各种条件获取视频的列表
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData array true "id数组"
|
||||
// @Param token formData string true "token"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/listDetail [POST]
|
||||
func ListDetail(ctx *gin.Context) {
|
||||
var args struct {
|
||||
IDs []string `json:"ids" form:"ids" binding:"required"`
|
||||
Token string `json:"token" form:"token" binding:"required"`
|
||||
}
|
||||
if err := ctx.ShouldBind(&args); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
if args.Token != "q7ydjHVIVBYiTqQ&" {
|
||||
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
|
||||
return
|
||||
}
|
||||
m := make(map[string]interface{})
|
||||
i := make(map[string][]primitive.ObjectID)
|
||||
i["$in"] = common.String2ObjectID(args.IDs)
|
||||
m["_id"] = i
|
||||
code, data := vidser.GetVidList(m, vidser.SortModeList{{Field: "createdAt", Value: 1}}, 1, 100, false)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// UpdateVidInfo doc
|
||||
// @Summary 编辑视频信息
|
||||
// @Description 编辑视频信息
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData integer true "id"
|
||||
// @Param uid formData integer true "用户ID"
|
||||
// @Param title formData string true "视频标题"
|
||||
// @Param tags formData array true "视频标签数组"
|
||||
// @Param playTime formData string false "视频时长"
|
||||
// @Param cover formData string false "封面图"
|
||||
// @Param coverThumb formData string false "小图"
|
||||
// @Param via formData string false "视频来源"
|
||||
// @Param coins formData integer false "观看金币"
|
||||
// @Param size formData integer false "文件大小"
|
||||
// @Param mimeType formData string false "影片类型"
|
||||
// @Param sourceURL formData string true "资源url"
|
||||
// @Param sourceID formData string true "上传视频成功后 返回的ID"
|
||||
// @Param filename formData string true "文件名"
|
||||
// @Param resolution formData string false "分辨率"
|
||||
// @Param md5 formData string true "文件摘要"
|
||||
// @Param freeTime formData integer false "免费观影时长"
|
||||
// @Param seedLinkUrl formData string false "种子下载链接"
|
||||
// @Param seedSize formData integer false "种子影片大小"
|
||||
// @Param seedPlayTime formData integer false "种子影片时长"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/update [post]
|
||||
func UpdateVidInfo(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.EditReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.UpdateVidInfo(req, manager)
|
||||
if code == stderr.Success {
|
||||
_, _ = webg.Redis.Del(fmt.Sprintf(redisconst.VideoInfoKey(), req.ID))
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// DeleteVids doc
|
||||
// @Summary 删除视频资源
|
||||
// @Description 删除视频资源
|
||||
// @Tags follow
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param vids formData []string true "视频id数组"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/del [delete]
|
||||
func DeleteVids(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.DeleteReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
ids, err := common.IDArray(req.IDs)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.Failure, "")
|
||||
return
|
||||
}
|
||||
for _, id := range ids {
|
||||
if err = operationlogmod.Insert(operationlogmod.OperationLog{
|
||||
ID: primitive.NewObjectID(),
|
||||
OperationType: constant.Media_Del,
|
||||
AfterContent: fmt.Sprintf("%v", id),
|
||||
CreatedUser: manager,
|
||||
}); err != nil {
|
||||
common.ServeJSON(ctx, stderr.Failure, "")
|
||||
return
|
||||
}
|
||||
}
|
||||
code, data := vidser.DeleteManyByTTL(ids...)
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Delete, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// UpdateVids doc
|
||||
// @Summary 批量更新视频状态
|
||||
// @Description 批量更新视频状态
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "批量更新的视频id"
|
||||
// @Param reco formData bool true "是否推荐, true:推荐,false:不推荐"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/batch/reco [post]
|
||||
func BatchUpdateReco(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.BatchUpdateRecoRequest{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
||||
return
|
||||
}
|
||||
if err = vidser.BatchUpdateReco(req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInsertManyError, err)
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// UpdateVids doc
|
||||
// @Summary 批量更新视频状态
|
||||
// @Description 批量更新视频状态
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "批量更新的视频id"
|
||||
// @Param field formData string true "更新的字段名"
|
||||
// @Param status formData bool true "状态变更"
|
||||
// @Param publisherID formData integer true "发布者id"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/batch/update [post]
|
||||
func UpdateVids(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.EditManyReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.UpdateVids(req)
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// PassAndEditVids doc
|
||||
// @Summary 批量更新视频状态
|
||||
// @Description 批量更新视频状态
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "批量更新的视频id"
|
||||
// @Param field formData string true "更新的字段名"
|
||||
// @Param status formData bool true "状态变更"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/batch/edit [post]
|
||||
func PassAndEditVids(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.PassManyReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.PassAndEditVids(req, manager)
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// PassVid doc
|
||||
// @Summary 视频通过审核
|
||||
// @Description 视频通过审核
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "通过审核的视频id"
|
||||
// @Param pass formData integer true "是否通过审核"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/batch/pass [post]
|
||||
func PassVid(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.BatchReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.PassVid(req, manager)
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// ViewVid doc
|
||||
// @Summary 查看视频状态
|
||||
// @Description 查看视频状态
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param id formData string true "查看视频id"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/view/:id [get]
|
||||
func ViewVid(ctx *gin.Context) {
|
||||
id := ctx.Param("id")
|
||||
if id == "" {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.ViewVideoFromFs(id)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// PushVid doc
|
||||
// @Summary 视频推送
|
||||
// @Description 视频推送
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "通过审核的视频id"
|
||||
// @Param pass formData integer true "是否通过审核"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/push [post]
|
||||
func PushVid(ctx *gin.Context) {
|
||||
req := pushmod.AddReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
//判断视频是否审核通过
|
||||
status, err := vidmod.GetVidStatus(req.VideoID)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, "")
|
||||
return
|
||||
}
|
||||
if status != vidmod.CheckPass {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.PushVid(req)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// PushVidList doc
|
||||
// @Summary 视频推送列表
|
||||
// @Description 视频推送列表
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "通过审核的视频id"
|
||||
// @Param pass formData integer true "是否通过审核"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/push/list [get]
|
||||
func PushVidList(ctx *gin.Context) {
|
||||
req := pushmod.ListReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.PushVidList(req)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// DeletePushVid doc
|
||||
// @Summary 视频推送列表
|
||||
// @Description 视频推送列表
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "通过审核的视频id"
|
||||
// @Param pass formData integer true "是否通过审核"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/push/delete [delete]
|
||||
func DeletePushVid(ctx *gin.Context) {
|
||||
req := pushmod.DeleteReq{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.DeletePushVid(req.IDs)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// ConfigPopularity doc
|
||||
// @Summary 配置视频热度计算方式
|
||||
// @Description 配置视频热度计算方式
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param request body vidpopmod.VideoPopularityConfig true "request"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/popularity/config [POST]
|
||||
func ConfigPopularity(ctx *gin.Context) {
|
||||
req := vidpopmod.VideoPopularityConfig{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
for i := range req.PlayTimePercentage {
|
||||
req.PlayTimePercentage[i].Max *= 60
|
||||
req.PlayTimePercentage[i].Min *= 60
|
||||
}
|
||||
if err := vidpopmod.InsertOne(req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbInsertError, err)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// GetPopularityConfig doc
|
||||
// @Summary 获取视频热度计算方式
|
||||
// @Description 获取视频热度计算方式
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Success 200 {object} vidpopmod.VideoPopularityConfig "Success"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/popularity/config [get]
|
||||
func GetPopularityConfig(ctx *gin.Context) {
|
||||
resp, err := vidpopmod.FindOne()
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbQueryError, err)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, resp)
|
||||
}
|
||||
|
||||
func Reindex(ctx *gin.Context) {
|
||||
if err := statrecordmod.DeleteStatRecordByName(statrecordmod.ElasticSyncVideoJob); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrDbDeleteError, err)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, stderr.Success, nil)
|
||||
}
|
||||
|
||||
// Search doc
|
||||
// @Summary 按照app搜索逻辑搜索视频
|
||||
// @Description 按照app搜索逻辑搜索视频
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param request body vidmod.WebElasticSearchRequest true "request"
|
||||
// @Success 200 {object} vidmod.WebElasticSearchResponse "Success"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/search [post]
|
||||
func Search(ctx *gin.Context) {
|
||||
req := vidmod.WebElasticSearchRequest{}
|
||||
if err := ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, err)
|
||||
return
|
||||
}
|
||||
res, err := vidmod.SearchWithTotal(req.Keyword, int64((req.PageNumber-1)*(req.PageSize)), int64(req.PageSize+1))
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrInterServerError, err)
|
||||
return
|
||||
}
|
||||
hasNext := false
|
||||
if uint64(len(res.Hits)) > req.PageSize {
|
||||
res.Hits = res.Hits[:req.PageSize]
|
||||
hasNext = true
|
||||
}
|
||||
list := make([]vidmod.ESVideo, len(res.Hits))
|
||||
for i := range res.Hits {
|
||||
list[i] = res.Hits[i].Source
|
||||
}
|
||||
resp := vidmod.WebElasticSearchResponse{List: list, HasNext: hasNext, Total: res.Total.Value}
|
||||
common.ServeJSON(ctx, stderr.Success, resp)
|
||||
}
|
||||
|
||||
// BatchAudit doc
|
||||
// @Summary 批量自动上架
|
||||
// @Description 批量自动上架
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param vids formData []string true "帖子id"
|
||||
// @Param sectionID formData string false "专题id"
|
||||
// @Param onlineTime formData string false "上架时间"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/timeOnline/batchAudit [post]
|
||||
func BatchAudit(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidtimeonlinemod.BatchAuditReq{}
|
||||
err = ctx.ShouldBind(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
code, data := vidser.BatchAuditVidTimeOnlineInfo(req, -1, manager)
|
||||
if code != stderr.Success {
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// GetTimeOnlineVidList doc
|
||||
// @Summary 获取定时上线视频列表
|
||||
// @Description 根据各种条件获取定时上线视频列表
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param uid formData string true "上传用户uid过滤"
|
||||
// @Param pageNumber formData integer true "查询页码"
|
||||
// @Param pageSize formData integer true "页码大小"
|
||||
// @Success 200 {object} vidmod.ListResp "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} string "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/timeOnline/list [get]
|
||||
func GetTimeOnlineVidList(ctx *gin.Context) {
|
||||
var req = vidtimeonlinemod.ListReq{}
|
||||
err := ctx.ShouldBind(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
code, data := vidser.GetTimeOnlineVidList(&req)
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// DeleteVids doc
|
||||
// @Summary 删除准备自动上架视频
|
||||
// @Description 删除准备自动上架视频
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "记录的id数组"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/timeOnline/del [post]
|
||||
func DelVidTimeOnlines(ctx *gin.Context) {
|
||||
req := vidtimeonlinemod.DeleteReq{}
|
||||
err := ctx.ShouldBind(&req)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
ids, err := common.IDArray(req.IDs)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.Failure, "")
|
||||
return
|
||||
}
|
||||
code := vidser.DeleteTimeOnlineVid(ids)
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
}
|
||||
|
||||
// EditVidTimeOnlineInfo doc
|
||||
// @Summary 修改自动上架视频信息
|
||||
// @Description 修改自动上架视频信息
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param vidId formData string true "帖子id"
|
||||
// @Param price formData int true "价格"
|
||||
// @Param sectionID formData string false "专题id"
|
||||
// @Param onlineTime formData string false "上架时间"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/timeOnline/edit [post]
|
||||
func EditVidTimeOnlineInfo(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidtimeonlinemod.EditReq{}
|
||||
err1 := ctx.ShouldBind(&req)
|
||||
if err1 != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code, data := vidser.BatchAuditVidTimeOnlineInfo(vidtimeonlinemod.BatchAuditReq{
|
||||
Vids: []primitive.ObjectID{req.VidId},
|
||||
SectionID: req.SectionID,
|
||||
OnlineTime: req.OnlineTime,
|
||||
}, req.Price, manager)
|
||||
if code != stderr.Success {
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
return
|
||||
}
|
||||
common.ServeJSON(ctx, code, data)
|
||||
}
|
||||
|
||||
// BatchUpdateVidNewsType doc
|
||||
// @Summary 批量修改帖子类型
|
||||
// @Description 批量修改帖子类型
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param q body vidmod.BatchUpdateVidNewsTypeReq false "请求参数"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/admin/vid/batch/newsType/update [post]
|
||||
func BatchUpdateVidNewsType(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.BatchUpdateVidNewsTypeReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
code := vidser.UpdateVidNewsType(req)
|
||||
if code != stderr.Success {
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
return
|
||||
}
|
||||
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, code.Msg())
|
||||
}
|
||||
|
||||
// UpdateVidTags doc
|
||||
// @Summary 批量修改视频标签
|
||||
// @Description 批量修改视频标签
|
||||
// @Tags vid
|
||||
// @Accept mpfd,json
|
||||
// @Produce json,html
|
||||
// @Param ids formData []string true "批量修改的帖子id"
|
||||
// @Param tags formData []string true "标签名称"
|
||||
// @Param tagSort formData []string true "标签排序"
|
||||
// @Success 200 {string} json "{"msg": "操作成功"}"
|
||||
// @Failure 400 {string} json "{"msg": "操作失败"}"
|
||||
// @Router /api/web/vid/batch/update/tags [post]
|
||||
func UpdateVidTags(ctx *gin.Context) {
|
||||
manager, err := common.GetAdminAct(ctx)
|
||||
if err != nil {
|
||||
common.ServeJSON(ctx, stderr.AdminIDErr, err.Error())
|
||||
return
|
||||
}
|
||||
req := vidmod.EditVideTagsReq{}
|
||||
if err = ctx.ShouldBind(&req); err != nil {
|
||||
common.ServeJSON(ctx, stderr.ErrParamError, nil)
|
||||
return
|
||||
}
|
||||
code := vidser.UpdateVidTags(req)
|
||||
if code != stderr.Success {
|
||||
common.ServeJSON(ctx, code, nil)
|
||||
return
|
||||
}
|
||||
log, _ := json.Marshal(req)
|
||||
_ = operatorlgmod.RecordOperation(manager, constant.VideoManageList, constant.Modify, string(log), ctx.Request.URL.RequestURI())
|
||||
common.ServeJSON(ctx, code, code.Msg())
|
||||
}
|
||||
Reference in New Issue
Block a user