Files
huangguo_server/app/api/recommctrl/recommctrl.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

146 lines
4.7 KiB
Go

package recommctrl
import (
"91porn-server/app/service/m3u8ticket"
"91porn-server/app/service/recommser"
"91porn-server/common"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/middleware/requestid"
"91porn-server/models/commod"
"91porn-server/models/v/recmdtag"
"github.com/gin-gonic/gin"
)
// GetVidList doc
// @Summary 获取短视频推荐列表
// @Description 获取推荐视频
// @Tags recommend
// @Accept mpfd,json
// @Produce json,html
// @Param pageSize formData integer true "页码大小"
// @Param X-Request-ID header string false "重试幂等ID;同一次请求重试保持不变"
// @Success 200 {object} recommod.VideoListResp
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/recommend/vid/list [get]
func GetVidList(ctx *gin.Context) {
uid, _ := common.GetUID(ctx)
type Param struct {
PageSize uint64 `json:"pageSize" form:"pageSize" binding:"required,min=1,max=100"` // 每页条数
}
param := Param{}
if err := ctx.ShouldBind(&param); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
if param.PageSize < 1 {
param.PageSize = 10
}
requestID, _ := requestid.FromClient(ctx)
code, data := recommser.GetVidListContext(
ctx.Request.Context(),
uid,
param.PageSize,
requestID,
)
// 推荐视频列表:对 m3u8 播放地址签票
m3u8ticket.Sign(ctx, data)
common.ServeJSON(ctx, code, data)
}
// GetUserList doc
// @Summary 获取主播推荐列表
// @Description 获取主播荐视频
// @Tags recommend
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber formData integer true "查询页码"
// @Param pageSize formData integer true "页码大小"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/recommend/user/list [get]
func GetUserList(ctx *gin.Context) {
//uid用来做用户行为分析,暂时没用
uid, _ := common.GetUID(ctx)
param := commod.Page{}
if err := ctx.ShouldBind(&param); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
if param.PageSize < 1 {
param.PageSize = 10
}
code, data := recommser.GetUserList(uid, param.PageNumber, param.PageSize)
common.ServeJSON(ctx, code, data)
}
// GetLightVidList doc
// @Summary 获取轻量视频推荐列表
// @Description 获取轻量推荐视频
// @Tags recommend
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {object} proto.LightVideoRes
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/recommend/vid/lightlist [get]
func GetLightVidList(ctx *gin.Context) {
param := commod.Page{}
if err := ctx.ShouldBind(&param); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
if param.PageSize < 1 {
param.PageSize = 10
}
code, data := recommser.GetLightVidList(ctx.ClientIP())
common.ServeJSON(ctx, code, data)
}
// GetVidAd doc
// @Summary 获取视频插播广告
// @Description 获取视频插播广告
// @Tags recommend
// @Accept mpfd,json
// @Produce json,html
// @Param pageSize formData integer true "页码大小"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/recommend/GetVidAd/list [get]
func GetVidAd(ctx *gin.Context) {
uid, _ := common.GetUID(ctx)
data := recommser.GetAd(uid)
common.ServeJSON(ctx, stderr.Success, data)
}
// GetShortDiscoverList doc
// @Summary 获取抖音短视频视频列表
// @Description 获取抖音短视频列表(第一页存在发现tag列表)
// @Tags recommend
// @Accept json
// @Produce json,html
// @Param type query recmdtag.AppGetShortDiscoverListReq true "请求参数"
// @Success 200 {object} recmdtag.AppGetShortDiscoverListRep "{}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/app/recommend/vid/list/discover [get]
func GetShortDiscoverList(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
param := &recmdtag.AppGetShortDiscoverListReq{}
if err = ctx.ShouldBind(&param); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
resp, code, err := recommser.GetShortDiscoverList(uid, param)
if err != nil {
log.Error("GetShortVideoList error:", log.E(err))
}
m3u8ticket.Sign(ctx, resp)
common.ServeJSON(ctx, code, resp)
}