package web import ( "fmt" "strings" "videoweb/app/service/authser" "videoweb/app/service/playletser" "videoweb/pub/common/log" "videoweb/pub/common/useragent" "github.com/gin-gonic/gin" ) type purchasedWork struct { Title, Image, Info, Date, Progress, URL string } // PurchasedSeries 已购剧集:GET /api/app/playlet/bought/list。 // 文档:http://172.104.181.99:25319/swagger/index.html#/app短剧相关接口/get_api_app_playlet_bought_list func PurchasedSeries(c *gin.Context) { page, validPage := accountPageNum(c) if !validPage { NotFound(c) return } data := gin.H{"title": "已购剧集 - 黄果短剧", "navActive": "purchased", "accountTab": "purchased"} responses := gin.H{} loadAccountSummary(c, data, responses) size := 20 if useragent.TokenFromRequest(c.Request) == "" { responses["playlet/bought/list"] = gin.H{"error": "暂无登录会话"} data["purchasedResponse"] = responses["playlet/bought/list"] HTMLOK(c, "purchased.html", data) return } list, code, err := playletser.FetchBoughtList(c, page, size) if retry, _ := authser.OnSessionExpired(c, code); retry { list, _, err = playletser.FetchBoughtList(c, page, size) } if err == nil && list != nil { responses["playlet/bought/list"] = gin.H{"code": 200, "data": list} data["paging"] = makeAccountPage("/purchased", page, size, list.TotalCount) works := make([]purchasedWork, 0, len(list.List)) for _, item := range list.List { title := strings.TrimSpace(item.PlayName) if title == "" { title = strings.TrimSpace(item.Title) } if title == "" { continue } info := fmt.Sprintf("已购 %d 集", item.BoughtChapterCount) if item.TotalEpisode > 0 { info += fmt.Sprintf(" / 共 %d 集", item.TotalEpisode) } info += fmt.Sprintf(" · %d 金币", item.CostCoins) progress := 0 if item.TotalEpisode > 0 { progress = item.WatchedCount * 100 / item.TotalEpisode } if progress < 0 { progress = 0 } if progress > 100 { progress = 100 } works = append(works, purchasedWork{ Title: title, Image: profileCover(item.Cover), Info: info, Date: playletser.FormatHistoryAt(item.BoughtAt), Progress: fmt.Sprintf("%d%%", progress), URL: playletser.ChapterPlayPath(item.Slug, item.ID, item.LastChapterID), }) } data["purchased"] = works } else if err != nil { responses["playlet/bought/list"] = gin.H{"error": "加载失败", "msg": err.Error()} log.Error("fetch bought playlets failed", log.E(err)) data["purchasedUnavailable"] = true } else { responses["playlet/bought/list"] = gin.H{"code": code, "data": list} } data["purchasedResponse"] = responses["playlet/bought/list"] HTMLOK(c, "purchased.html", data) }