Files
web_huangguo_web/app/api/web/history.go
T
fish03andClaude Opus 5.5 bef9f8b4ed Initial commit
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 14:43:16 +07:00

118 lines
2.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package web
import (
"net/http"
"videoweb/app/service/playletser"
"videoweb/pub/common/log"
"videoweb/pub/common/useragent"
"github.com/gin-gonic/gin"
)
// History 观看历史 SSR:GET /api/app/playlet/history/list。
func History(c *gin.Context) {
if useragent.TokenFromRequest(c.Request) == "" {
RedirectToLogin(c)
return
}
q := playletser.ParseHistoryListQuery(routeOrQuery(c, "page", "page"))
if redirectCanonical(c, playletser.HistoryCanonicalPath(q)) {
return
}
raw, code, err := playletser.FetchHistoryList(c, q)
if err != nil {
aborted, retry := AbortSSRIfSessionExpired(c, code)
if aborted {
return
}
if retry {
raw, _, err = playletser.FetchHistoryList(c, q)
}
if err != nil {
log.Error("fetch playlet history list failed", log.E(err))
raw = &playletser.PlayletHistoryListResp{PageNum: q.PageNum, PageSize: q.PageSize}
}
}
if raw == nil {
raw = &playletser.PlayletHistoryListResp{PageNum: q.PageNum, PageSize: q.PageSize}
}
data := gin.H{
"title": "观看历史",
"description": "查看黄果短剧观看历史,快速回到上次看到的剧集继续观看。",
"navActive": "userCenter",
"list": raw.List,
"pageNum": raw.PageNum,
"pageSize": raw.PageSize,
"totalCount": raw.TotalCount,
"pagination": playletser.BuildHistoryPagination(q, raw.TotalCount),
"emptyTitle": "暂无观看历史",
"emptyDesc": "开始播放短剧后,记录会出现在这里",
}
setNoIndex(data, false)
HTMLOK(c, "history.html", data)
}
// HistoryClear 代理上游 POST /api/app/playlet/history/clear。
func HistoryClear(c *gin.Context) {
if useragent.TokenFromRequest(c.Request) == "" {
c.JSON(http.StatusOK, gin.H{
"code": 401,
"msg": "unauthorized",
"tip": "请先登录",
"data": nil,
})
return
}
env, err := playletser.HistoryClear(c)
if err != nil {
log.Error("playlet history clear upstream failed", log.E(err))
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": "history clear failed",
"tip": "清空失败,请稍后重试",
"data": nil,
})
return
}
if env != nil && TryJSONSessionRecover(c, env.Code) {
env, err = playletser.HistoryClear(c)
if err != nil {
log.Error("playlet history clear retry failed", log.E(err))
c.JSON(http.StatusOK, gin.H{
"code": 500,
"msg": "history clear failed",
"tip": "清空失败,请稍后重试",
"data": nil,
})
return
}
}
if env == nil || env.Code != 200 {
tip := "清空失败"
msg := ""
code := 500
if env != nil {
code = env.Code
msg = env.Msg
tip = firstNonEmpty(env.Tip, env.Msg, tip)
}
c.JSON(http.StatusOK, gin.H{
"code": code,
"msg": msg,
"tip": tip,
"data": nil,
})
return
}
c.JSON(http.StatusOK, gin.H{
"code": 200,
"msg": firstNonEmpty(env.Msg, "success"),
"tip": firstNonEmpty(env.Tip, "已清空观看历史"),
"data": env.Data,
})
}