Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
62 lines
2.1 KiB
Go
62 lines
2.1 KiB
Go
package web
|
||
|
||
import (
|
||
"strings"
|
||
"videoweb/app/service/playletser"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
// List 短剧列表页 SSR:GET /api/app/playlet/operate/list,operateType 固定为 1。
|
||
func List(c *gin.Context) {
|
||
slug := strings.TrimSpace(c.Param("slug"))
|
||
if slug == "ai-series" {
|
||
legacy := playletser.ParseListQuery(
|
||
routeOrQuery(c, "page", "page"),
|
||
routeOrQuery(c, "sortOrder", "sortOrder"),
|
||
c.Query("type"),
|
||
)
|
||
redirectCanonical(c, playletser.SeriesPathFromLegacyList(legacy.SortOrder, legacy.PageNum))
|
||
return
|
||
}
|
||
filter := routeOrQuery(c, "sortOrder", "filterType")
|
||
if filter == "" {
|
||
filter = strings.TrimSpace(c.Query("sortOrder"))
|
||
}
|
||
q, ok := playletser.ParseShortPlayQuery(filter, routeOrQuery(c, "page", "page"))
|
||
if !ok {
|
||
NotFound(c, "页面不存在")
|
||
return
|
||
}
|
||
if redirectCanonical(c, playletser.ShortPlayCanonicalPath(q)) {
|
||
return
|
||
}
|
||
raw := playletser.FetchOperateListOrEmpty(c, q)
|
||
if playletser.PageOutOfRange(q.PageNum, q.PageSize, raw.TotalCount) {
|
||
NotFound(c, "页面不存在")
|
||
return
|
||
}
|
||
sectionTitle := playletser.ShortPlaySectionTitle(q.FilterType)
|
||
data := gin.H{
|
||
"title": "短剧",
|
||
"description": "浏览黄果短剧全部短剧列表,按分类、标签筛选海量高清短剧,发现更多精彩剧集。",
|
||
"pageKey": "list",
|
||
"pageName": "AI成人短剧",
|
||
"pagePath": playletser.ShortPlayCanonicalPath(q),
|
||
"navActive": "list",
|
||
"seoInfo": playletser.SeoInfo{},
|
||
"seoSelections": []playletser.SEOSelection{{Dimension: "筛选", Value: strings.TrimSuffix(sectionTitle, "的AI成人短剧")}},
|
||
"filters": playletser.BuildShortPlayFilterTabs(q),
|
||
"sectionTitle": sectionTitle,
|
||
"list": raw.List,
|
||
"itemListOffset": (q.PageNum - 1) * q.PageSize,
|
||
"pagination": playletser.BuildShortPlayPagination(q, raw.TotalCount),
|
||
}
|
||
// /list/ai-short-play/original/ 入口页始终可索引;其余空结果仍 noindex。
|
||
isOriginalEntry := q.FilterType == 3 && q.PageNum <= 1
|
||
if !isOriginalEntry && (raw.TotalCount <= 0 || len(raw.List) == 0) {
|
||
setNoIndex(data, true)
|
||
}
|
||
HTMLOK(c, "list.html", data)
|
||
}
|