82 lines
2.0 KiB
Go
82 lines
2.0 KiB
Go
package playletser
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"strconv"
|
|
"videoweb/app/service/upstream"
|
|
"videoweb/pub/common/log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const operateListPath = "/api/app/playlet/operate/list"
|
|
|
|
type OperateListQuery struct {
|
|
OperateType int
|
|
FilterType int
|
|
PageNum int
|
|
PageSize int
|
|
}
|
|
|
|
func (q *OperateListQuery) Normalize() {
|
|
if q.OperateType < 1 || q.OperateType > 2 {
|
|
q.OperateType = 1
|
|
}
|
|
if q.FilterType < 1 || q.FilterType > 3 {
|
|
q.FilterType = 1
|
|
}
|
|
if q.PageNum <= 0 {
|
|
q.PageNum = 1
|
|
}
|
|
if q.PageSize <= 0 {
|
|
q.PageSize = 40
|
|
}
|
|
if q.PageSize > 100 {
|
|
q.PageSize = 100
|
|
}
|
|
}
|
|
|
|
// FetchOperateList 按运营类型和筛选类型查询已上架短剧。
|
|
func FetchOperateList(c *gin.Context, q OperateListQuery) (*PlayletOperateListResp, error) {
|
|
q.Normalize()
|
|
params := url.Values{}
|
|
params.Set("operateType", strconv.Itoa(q.OperateType))
|
|
params.Set("filterType", strconv.Itoa(q.FilterType))
|
|
params.Set("pageNum", strconv.Itoa(q.PageNum))
|
|
params.Set("pageSize", strconv.Itoa(q.PageSize))
|
|
|
|
var env APIEnvelope[PlayletOperateListResp]
|
|
if err := upstream.GetPublicJSON(c, operateListPath+"?"+params.Encode(), &env); err != nil {
|
|
return nil, err
|
|
}
|
|
if env.Code != 200 {
|
|
return nil, fmt.Errorf("playlet operate list code=%d msg=%s tip=%s", env.Code, env.Msg, env.Tip)
|
|
}
|
|
return &env.Data, nil
|
|
}
|
|
|
|
// FetchOperateListOrEmpty 为 SSR 页面提供容错,接口异常时仍渲染完整页面骨架。
|
|
func FetchOperateListOrEmpty(c *gin.Context, q OperateListQuery) *PlayletOperateListResp {
|
|
q.Normalize()
|
|
data, err := FetchOperateList(c, q)
|
|
if err != nil {
|
|
log.Error("fetch playlet operate list failed", log.E(err))
|
|
return &PlayletOperateListResp{
|
|
OperateType: q.OperateType,
|
|
FilterType: q.FilterType,
|
|
PageNum: q.PageNum,
|
|
PageSize: q.PageSize,
|
|
}
|
|
}
|
|
if data == nil {
|
|
return &PlayletOperateListResp{
|
|
OperateType: q.OperateType,
|
|
FilterType: q.FilterType,
|
|
PageNum: q.PageNum,
|
|
PageSize: q.PageSize,
|
|
}
|
|
}
|
|
return data
|
|
}
|