import { NextRequest, NextResponse } from "next/server"; import { postSalonApi } from "@/app/lib/salonApi"; import { COOKIE_NAME } from "@/app/lib/auth-cookie"; function getUserIdFromCookie(request: NextRequest): string | null { const cookie = request.cookies.get(COOKIE_NAME)?.value; if (!cookie) return null; try { const payload = JSON.parse(Buffer.from(cookie, "base64url").toString("utf-8")); return payload?.userId ?? null; } catch { return null; } } export async function POST(request: NextRequest) { try { const userId = getUserIdFromCookie(request); if (!userId) { return NextResponse.json({ ok: false, error: "请先登录" }, { status: 401 }); } const body = await request.json(); const formData = body && typeof body === "object" ? body : {}; const record = { user_id: userId, nickname: formData.nickname || "", occupation: formData.profession || "", reason: formData.intro || "", single: formData.single || "", wechatId: formData.wechat || "", gender: formData.gender || "", education: formData.education || "", gradYear: formData.graduationYear || "", phone: formData.phone || "", media: formData.media || "", }; const { status, data } = await postSalonApi(request, "/api/salon/join", record); if (status >= 500) { const payload = typeof data === "object" && data !== null ? (data as Record) : {}; return NextResponse.json( { ok: false, error: (payload.detail as string) || (payload.error as string) || "提交失败" }, { status: 503 } ); } if (status >= 400) { return NextResponse.json(data, { status }); } const payload = typeof data === "object" && data !== null ? (data as Record) : {}; return NextResponse.json({ ok: true, user_id: payload.user_id ?? userId }); } catch (e) { const msg = e instanceof Error ? e.message : String(e); console.error("Join API error:", e); return NextResponse.json( { ok: false, error: `提交失败: ${msg}` }, { status: 500 } ); } }