package playletser import ( "fmt" "net/url" "strconv" "videoweb/app/service/upstream" "videoweb/pub/common/log" "github.com/gin-gonic/gin" ) const ( todayUpdatePath = "/api/app/playlet/today-update" defaultTodayUpdateSize = 40 ) // TodayUpdateQuery 今日更新分页参数。 type TodayUpdateQuery struct { PageNum int PageSize int } // Normalize 校正分页默认值。 func (q *TodayUpdateQuery) Normalize() { if q.PageNum <= 0 { q.PageNum = 1 } if q.PageSize <= 0 { q.PageSize = defaultTodayUpdateSize } if q.PageSize > 50 { q.PageSize = 50 } } // FetchTodayUpdate 分页查询今日更新短剧。 func FetchTodayUpdate(c *gin.Context, q TodayUpdateQuery) (*PlayletVideoResp, error) { q.Normalize() params := url.Values{} params.Set("pageNum", strconv.Itoa(q.PageNum)) params.Set("pageSize", strconv.Itoa(q.PageSize)) var env APIEnvelope[PlayletVideoResp] if err := upstream.GetPublicJSON(c, todayUpdatePath+"?"+params.Encode(), &env); err != nil { return nil, err } if env.Code != 200 { return nil, fmt.Errorf("playlet today-update code=%d msg=%s", env.Code, env.Msg) } return &env.Data, nil } // FetchTodayUpdateOrEmpty 失败时返回空列表。 func FetchTodayUpdateOrEmpty(c *gin.Context, q TodayUpdateQuery) *PlayletVideoResp { data, err := FetchTodayUpdate(c, q) if err != nil { log.Error("fetch playlet today-update failed", log.E(err)) return &PlayletVideoResp{PageNum: q.PageNum, PageSize: q.PageSize} } if data == nil { return &PlayletVideoResp{PageNum: q.PageNum, PageSize: q.PageSize} } data.SeoInfo.Normalize() return data }