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) }