38 lines
947 B
Go
38 lines
947 B
Go
package applistser
|
|
|
|
import (
|
|
"fmt"
|
|
"videoweb/app/service/upstream"
|
|
"videoweb/pub/common/log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const listPath = "/api/app/applist/list"
|
|
|
|
// FetchList 拉取应用分类列表。categoryId=0 表示默认。
|
|
func FetchList(c *gin.Context, categoryID int64) (*AppListResp, error) {
|
|
path := fmt.Sprintf("%s?categoryId=%d", listPath, categoryID)
|
|
var env APIEnvelope[AppListResp]
|
|
if err := upstream.GetPublicJSON(c, path, &env); err != nil {
|
|
return nil, err
|
|
}
|
|
if env.Code != 200 {
|
|
return nil, fmt.Errorf("applist code=%d msg=%s", env.Code, env.Msg)
|
|
}
|
|
return &env.Data, nil
|
|
}
|
|
|
|
// FetchListOrEmpty 失败时返回空结构,保证 SSR 可渲染。
|
|
func FetchListOrEmpty(c *gin.Context, categoryID int64) *AppListResp {
|
|
data, err := FetchList(c, categoryID)
|
|
if err != nil {
|
|
log.Error("fetch applist failed", log.E(err))
|
|
return &AppListResp{}
|
|
}
|
|
if data == nil {
|
|
return &AppListResp{}
|
|
}
|
|
return data
|
|
}
|