Files
web_huangguo2_h5/app/service/playletser/operate.go
T
谢宇宁andClaude Opus 5.5 0fbdba5ccf Initial commit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 11:47:47 +07:00

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
}