Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
85 lines
2.5 KiB
Go
85 lines
2.5 KiB
Go
package web
|
||
|
||
import (
|
||
"videoweb/app/service/playletser"
|
||
"videoweb/pub/common/log"
|
||
"videoweb/pub/common/useragent"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
)
|
||
|
||
// Collect 我的收藏 SSR:
|
||
// 短剧 GET /api/app/playlet/collect/list;剧集 GET /api/app/playlet/chapter/collect/list。
|
||
func Collect(c *gin.Context) {
|
||
if useragent.TokenFromRequest(c.Request) == "" {
|
||
RedirectToLogin(c)
|
||
return
|
||
}
|
||
|
||
q := playletser.ParseCollectListQuery(routeOrQuery(c, "page", "page"), routeOrQuery(c, "type", "type"))
|
||
if redirectCanonical(c, playletser.CollectCanonicalPath(q)) {
|
||
return
|
||
}
|
||
data := gin.H{
|
||
"title": "我的收藏",
|
||
"description": "查看你在黄果短剧收藏的短剧与剧集,随时继续追更喜欢的内容。",
|
||
"navActive": "userCenter",
|
||
"collectType": q.Type,
|
||
"pageNum": q.PageNum,
|
||
"pageSize": q.PageSize,
|
||
"totalCount": int64(0),
|
||
"pagination": playletser.BuildCollectPagination(q, 0),
|
||
}
|
||
setNoIndex(data, false)
|
||
|
||
if q.Type == playletser.CollectTypeChapter {
|
||
raw, code, err := playletser.FetchChapterCollectList(c, q)
|
||
if err != nil {
|
||
aborted, retry := AbortSSRIfSessionExpired(c, code)
|
||
if aborted {
|
||
return
|
||
}
|
||
if retry {
|
||
raw, _, err = playletser.FetchChapterCollectList(c, q)
|
||
}
|
||
if err != nil {
|
||
log.Error("fetch playlet chapter collect list failed", log.E(err))
|
||
raw = &playletser.PlayletChapterCollectListResp{PageNum: q.PageNum, PageSize: q.PageSize}
|
||
}
|
||
}
|
||
if raw == nil {
|
||
raw = &playletser.PlayletChapterCollectListResp{PageNum: q.PageNum, PageSize: q.PageSize}
|
||
}
|
||
data["chapterList"] = raw.List
|
||
data["pageNum"] = raw.PageNum
|
||
data["pageSize"] = raw.PageSize
|
||
data["totalCount"] = raw.TotalCount
|
||
data["pagination"] = playletser.BuildCollectPagination(q, raw.TotalCount)
|
||
} else {
|
||
raw, code, err := playletser.FetchCollectList(c, q)
|
||
if err != nil {
|
||
aborted, retry := AbortSSRIfSessionExpired(c, code)
|
||
if aborted {
|
||
return
|
||
}
|
||
if retry {
|
||
raw, _, err = playletser.FetchCollectList(c, q)
|
||
}
|
||
if err != nil {
|
||
log.Error("fetch playlet collect list failed", log.E(err))
|
||
raw = &playletser.PlayletCollectListResp{PageNum: q.PageNum, PageSize: q.PageSize}
|
||
}
|
||
}
|
||
if raw == nil {
|
||
raw = &playletser.PlayletCollectListResp{PageNum: q.PageNum, PageSize: q.PageSize}
|
||
}
|
||
data["list"] = raw.List
|
||
data["pageNum"] = raw.PageNum
|
||
data["pageSize"] = raw.PageSize
|
||
data["totalCount"] = raw.TotalCount
|
||
data["pagination"] = playletser.BuildCollectPagination(q, raw.TotalCount)
|
||
}
|
||
|
||
HTMLOK(c, "collect.html", data)
|
||
}
|