Files
huangguo_server/app/api/hotspotctr/hotspot.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

158 lines
5.0 KiB
Go

package hotspotctr
import (
"91porn-server/app/service/rankser"
"91porn-server/app/service/search"
"91porn-server/app/service/searcher"
"91porn-server/app/service/searcher/tonesearcher"
"91porn-server/app/service/searcher/vidhotsearcher"
"91porn-server/app/service/tagser"
"91porn-server/common"
"91porn-server/common/stderr"
"91porn-server/models/commod"
"github.com/gin-gonic/gin"
)
// HotTag
// @Summary 获取用户喜欢标签及标签下对应的视频列表(默认3个视频)
// @Description 热点,获取用户喜欢标签及标签下对应的视频列表(默认3个视频)
// @Tags 热点
// @Accept json
// @Produce json
// @Param pageNumber formData integer true "页数"
// @Param pageSize formData integer true "每页条数"
// @Success 200 {object} tagser.TagGroupResp "成功"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/app/hotspot/htag [get]
func HotTag(ctx *gin.Context) {
var arg struct {
commod.Page
}
if err := ctx.ShouldBind(&arg); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, "hotspotctr HotTag arg error "+err.Error())
return
}
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
param := commod.Page{}
if err := ctx.ShouldBind(&param); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
resp := tagser.GetTagsList(uid, param)
common.ServeJSON(ctx, stderr.Success, resp)
}
// Rank doc
// @Summary 热点 - rank
// @Description 获取排行和音色热点
// @Tags 热点
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {string} json "{"msg": "操作成功" "data":{}}"
// @Failure 400 {string} json "{"msg": "操作失败" "data":{}}"
// @Router /api/app/hotspot/rank [get]
func Rank(ctx *gin.Context) {
rankMap, err := rankser.GetRankMap()
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
common.ServeJSON(ctx, stderr.Success, rankMap)
}
// Tone doc
// @Summary 热点 - tone
// @Description 获取排行和音色热点
// @Tags 热点
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {string} json "{"msg": "操作成功" "data":{}}"
// @Failure 400 {string} json "{"msg": "操作失败" "data":{}}"
// @Router /api/app/hotspot/area [get]
func Area(ctx *gin.Context) {
res, err := tonesearcher.NewToneSearcher().Search(nil, nil)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNetWorkBusy, err)
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": res.Data(),
"hasNext": res.HasNext(),
})
}
// WonderTagList doc
// @Summary 热点 - 发现精彩
// @Description 获取发现精彩标签列表
// @Tags 热点
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber query integer true "页码"
// @Param pageSize query integer true "每页条数"
// @Success 200 {string} json "{"msg": "操作成功", "data":[]}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/app/hotspot/wonder/list [get]
func WonderTagList(ctx *gin.Context) {
var arg struct {
commod.Page
}
if err := ctx.ShouldBind(&arg); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, "hotspotctr WonderTagList arg error "+err.Error())
return
}
skip := int64((arg.PageNumber - 1) * arg.PageSize)
limit := int64(arg.PageSize)
tags, hasNext, err := search.GetWonderTagList(skip, limit)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNetWorkBusy, "hotspotctr WonderTags error: "+err.Error())
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": tags,
"hasNext": hasNext,
})
}
// HotVidList doc
// @Summary 热点 - 今日最热视屏
// @Description 今日最热视屏
// @Tags 热点
// @Accept mpfd,json
// @Produce json,html
// @Param pageNumber query integer true "页码"
// @Param pageSize query integer true "每页条数"
// @Success 200 {string} json "{"msg": "操作成功", "data":{}}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /api/app/hotspot/hotvid/list [get]
func HotVidList(ctx *gin.Context) {
var arg struct {
commod.Page
}
if err := ctx.ShouldBind(&arg); err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, "hotspotctr HotVidList arg error "+err.Error())
return
}
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err)
return
}
opt := (&searcher.Option{}).
SetSkip(int64((arg.PageNumber - 1) * arg.PageSize)).
SetLimit(int64(arg.PageSize)) //最热视屏
res, err := vidhotsearcher.NewVidHotSearcher(uid).Search(nil, opt)
if err != nil {
common.ServeJSON(ctx, stderr.ErrParamError, err)
return
}
common.ServeJSON(ctx, stderr.Success, gin.H{
"list": res.Data(),
"hasNext": res.HasNext(),
})
}