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

144 lines
4.7 KiB
Go

package vidctrl
import (
"fmt"
"time"
"91porn-server/app/service/vidser"
"91porn-server/common"
"91porn-server/common/stderr"
"91porn-server/models/v/vidmod"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson/primitive"
)
// GetNewsList doc
// @Summary 获取帖子
// @Description 获取帖子
// @Tags
// @Accept mpfd,json
// @Produce json,html
// @Param type formData integer true "类型"
// @Param pageNumber formData integer true "查询页码"
// @Param pageSize formData integer true "页码大小"
// @Success 200 {object} vidmod.NewsListResp
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/vid/news/list [get]
func GetNewsList(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
return
}
req := vidmod.NewsListReq{}
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
//如果第一页,追加置顶、力荐、加精
head := []*vidmod.VideoModel{}
if req.PageNumber == vidmod.TypeHotest && !(req.Type == vidmod.TypeNewst && req.SubType == 1) {
isMadou := false
if req.Type == vidmod.TypePay && req.SubType == vidmod.MadouUp {
isMadou = true
}
head, err = vidser.GetHeadNews(req.Type, primitive.NilObjectID, isMadou)
if err != nil {
common.ServeJSON(ctx, stderr.ErrDbQueryError, "")
return
}
}
var code stderr.Code
var data interface{}
switch req.Type {
case vidmod.TypeNewst: //最新
if req.ReqTime != "" {
reqTime, err := time.Parse(time.RFC3339, req.ReqTime)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, fmt.Sprintf("reqTime: %s", req.ReqTime))
return
}
code, data = vidser.GetNewestNewsList(uid, req.PageNumber, req.PageSize, head, reqTime)
} else { //当没有传reqTime参数时, 返回默认最新
code, data = vidser.GetNewestNewsList_old(uid, req.PageNumber, req.PageSize, head, req.SubType)
}
case vidmod.TypeHotest: //最热
code, data = vidser.GetHotestNewsList(uid, req.SubType, req.PageNumber, req.PageSize)
case vidmod.TypeSameCity: //同城
ip := common.GetIP(ctx)
code, data = vidser.GetLocationList(uid, ip, req.City, req.PageNumber, req.PageSize, vidmod.COVER)
case vidmod.TypePay: //金币专区
if req.Version == vidmod.Version {
/** TODO:
返回model为二维数组
*/
code, data = vidser.GetOriginalList(uid, req.SubType, req.PageNumber, req.PageSize)
} else {
code, data = vidser.GetNewsCoinsList(uid, req.SubType, req.PageNumber, req.PageSize, head)
}
case vidmod.TypeVip: //会员专区
code, data = vidser.GetVIPVideo(uid, req.PageNumber, req.PageSize)
}
common.ServeJSON(ctx, code, data)
}
// DoUnlike doc
// @Summary 不感兴趣
// @Description 不感兴趣
// @Tags vid
// @Accept mpfd,json
// @Produce json,html
// @Param type formData integer true "类型"
// @Param pageNumber formData integer true "查询页码"
// @Param pageSize formData integer true "页码大小"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/vid/news/unlike [post]
func DoUnlike(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, nil)
return
}
req := vidmod.UnlikeReq{}
if err = ctx.ShouldBind(&req); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, nil)
return
}
code, data := vidser.DoUnlikeVideo(uid, req.VideoID)
common.ServeJSON(ctx, code, data)
}
// List doc
// @Summary 获取帖子
// @Description 获取帖子
// @Tags
// @Accept mpfd,json
// @Produce json,html
// @Param type query integer true "类型"
// @Param model query integer false "模块"
// @Param time query time.Time false "请求页面时间"
// @Param tag query string false "标签ID"
// @Param paymentType query integer false "付费类型"
// @Param city query string false "城市"
// @Param pageNumber query integer true "查询页码"
// @Param pageSize query integer true "页码大小"
// @Success 200 {object} vidmod.NewsListResp
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/vid/list [get]
func List(c *gin.Context) {
uid, err := common.GetUID(c)
if err != nil {
common.ServeJSON(c, stderr.ErrNoToken, nil)
return
}
var req vidmod.AppListReq
if err = c.ShouldBind(&req); err != nil {
common.ServeJSON(c, stderr.ErrParamError, nil)
return
}
data, code := vidser.List(uid, &req)
common.ServeJSON(c, code, data)
}