Initial commit
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package web
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"videoweb/app/service/playletser"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
// Rank 排行榜页 SSR:GET /api/app/playlet/rank,列表用接口字段渲染。
|
||||
func Rank(c *gin.Context) {
|
||||
sortOrder := strings.TrimSpace(c.Param("sortOrder"))
|
||||
if sortOrder != "" {
|
||||
value, err := strconv.Atoi(sortOrder)
|
||||
if err != nil || value < 1 || value > 3 {
|
||||
NotFound(c, "页面不存在")
|
||||
return
|
||||
}
|
||||
}
|
||||
if sortOrder == "" {
|
||||
sortOrder = strings.TrimSpace(c.Query("sortOrder"))
|
||||
}
|
||||
page := strings.TrimSpace(c.Param("page"))
|
||||
if page != "" {
|
||||
value, err := strconv.Atoi(page)
|
||||
if err != nil || value <= 0 {
|
||||
NotFound(c, "页面不存在")
|
||||
return
|
||||
}
|
||||
}
|
||||
if page == "" {
|
||||
page = strings.TrimSpace(c.Query("page"))
|
||||
}
|
||||
q := playletser.ParseRankQuery(page, sortOrder)
|
||||
if c.Query("sortOrder") != "" || c.Query("page") != "" {
|
||||
target := "/rank"
|
||||
if q.SortOrder != 1 {
|
||||
target += "/" + strconv.Itoa(q.SortOrder)
|
||||
}
|
||||
if q.PageNum > 1 {
|
||||
target += "/page/" + strconv.Itoa(q.PageNum)
|
||||
}
|
||||
target += "/"
|
||||
c.Redirect(http.StatusMovedPermanently, target)
|
||||
return
|
||||
}
|
||||
if redirectCanonical(c, playletser.RankCanonicalPath(q)) {
|
||||
return
|
||||
}
|
||||
raw := playletser.FetchRankOrEmpty(c, q)
|
||||
if playletser.PageOutOfRange(q.PageNum, q.PageSize, raw.TotalCount) {
|
||||
NotFound(c, "页面不存在")
|
||||
return
|
||||
}
|
||||
tabs := playletser.BuildRankTabs(q)
|
||||
seoSelections := make([]playletser.SEOSelection, 0, 1)
|
||||
for _, tab := range tabs {
|
||||
if tab.Active {
|
||||
seoSelections = append(seoSelections, playletser.SEOSelection{Dimension: "排行榜类型", Value: tab.Label})
|
||||
break
|
||||
}
|
||||
}
|
||||
data := gin.H{
|
||||
"title": "排行榜",
|
||||
"description": "黄果短剧排行榜实时更新热播短剧,查看热门榜、飙升榜,不错过高口碑必看剧集。",
|
||||
"navActive": "rank",
|
||||
"seoInfo": raw.SeoInfo,
|
||||
"seoSelections": seoSelections,
|
||||
"tabs": tabs,
|
||||
"list": raw.List,
|
||||
"rankOffset": playletser.RankOffset(q),
|
||||
"sortOrder": q.SortOrder,
|
||||
"isBinge": playletser.IsRankBinge(q.SortOrder),
|
||||
"pagination": playletser.BuildRankPagination(q, raw.TotalCount),
|
||||
}
|
||||
if raw.TotalCount <= 0 || len(raw.List) == 0 {
|
||||
setNoIndex(data, true)
|
||||
}
|
||||
HTMLOK(c, "rank.html", data)
|
||||
}
|
||||
Reference in New Issue
Block a user