Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
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
|
|
}
|