Initial commit

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
fish03
2026-09-23 14:43:16 +07:00
co-authored by Claude Opus 5.5
commit bef9f8b4ed
663 changed files with 81305 additions and 0 deletions
+82
View File
@@ -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)
}