/** * C 端主播 API 客户端:与后端 MongoDB 一致,头像用 getStreamerAvatarUrl 统一展示 */ export interface AppStreamer { id: string name: string title?: string game?: string gameId?: number avatar?: string | null coverImage?: string | null isLive?: boolean fans?: number hotValue?: number tags?: string[] intro?: string [k: string]: unknown } async function fetchJson(url: string): Promise<{ success: boolean; data?: T; message?: string }> { const res = await fetch(url, { cache: "no-store" }) const json = await res.json().catch(() => ({})) if (!res.ok) return { success: false, message: (json as { message?: string }).message ?? res.statusText } return json as { success: boolean; data?: T; message?: string } } /** C 端获取主播列表(与后台数据一致) */ export async function getStreamersForApp(): Promise { const r = await fetchJson("/api/streamers") if (!r.success || !r.data) return [] return Array.isArray(r.data) ? r.data : [] } /** C 端获取单条主播(与后台数据一致) */ export async function getStreamerById(id: string): Promise { const r = await fetchJson(`/api/streamers/${id}`) return r.success && r.data ? r.data : null }