import { NextRequest, NextResponse } from "next/server" import { getServerSession } from "next-auth" import { authOptions } from "@/lib/auth" import { prisma } from "@/lib/prisma" import { checkPermission } from "@/lib/permissions" import { Role } from "@prisma/client" // 导入家族数据 export async function POST( req: NextRequest, { params }: { params: Promise<{ treeId: string }> } ) { try { const session = await getServerSession(authOptions) if (!session?.user?.id) { return NextResponse.json({ error: "未授权" }, { status: 401 }) } const { treeId } = await params // 检查权限(需要 EDITOR 权限) const { hasPermission } = await checkPermission(session.user.id, treeId, Role.EDITOR) if (!hasPermission) { return NextResponse.json({ error: "无权限导入数据" }, { status: 403 }) } const body = await req.json() const { members, rootId } = body // 删除现有成员 await prisma.familyMember.deleteMany({ where: { treeId } }) // 批量创建新成员 const memberArray = Object.values(members) await prisma.familyMember.createMany({ data: memberArray.map((member: any) => ({ ...member, treeId, })) }) // 更新家族树的 rootMemberId if (rootId) { await prisma.familyTree.update({ where: { id: treeId }, data: { rootMemberId: rootId } }) } // 记录操作日志 await prisma.activityLog.create({ data: { treeId, userId: session.user.id, action: 'IMPORT', entityType: 'SETTINGS', entityName: '导入家族数据', changes: { memberCount: memberArray.length }, } }) return NextResponse.json({ success: true, memberCount: memberArray.length }) } catch (error) { console.error("导入数据失败:", error) return NextResponse.json( { error: "导入数据失败" }, { status: 500 } ) } }