Files
web_hgtv_h5/app/service/playletser/today_update.go
T
谢宇宁andClaude Opus 5.5 3639d2184a Initial commit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:47:17 +07:00

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
}