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 }