import { NextRequest, NextResponse } from "next/server" import { prisma } from "@/lib/prisma" import bcrypt from "bcryptjs" import { z } from "zod" const registerSchema = z.object({ email: z.string().email("请输入有效的邮箱地址"), password: z.string().min(6, "密码至少6个字符"), name: z.string().optional(), }) export async function POST(req: NextRequest) { try { const body = await req.json() const { email, password, name } = registerSchema.parse(body) // 检查用户是否已存在 const existingUser = await prisma.user.findUnique({ where: { email } }) if (existingUser) { return NextResponse.json( { error: "该邮箱已被注册" }, { status: 400 } ) } // 加密密码 const hashedPassword = await bcrypt.hash(password, 10) // 创建用户 const user = await prisma.user.create({ data: { email, password: hashedPassword, name, }, select: { id: true, email: true, name: true, createdAt: true, } }) return NextResponse.json({ message: "注册成功", user }) } catch (error) { if (error instanceof z.ZodError) { return NextResponse.json( { error: error.errors[0].message }, { status: 400 } ) } console.error("注册失败:", error) return NextResponse.json( { error: "注册失败,请稍后重试" }, { status: 500 } ) } }