import { NextRequest, NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' import { verifyToken } from '@/lib/auth' // 更新购物车项数量 export async function PUT( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params const authHeader = request.headers.get('authorization') if (!authHeader || !authHeader.startsWith('Bearer ')) { return NextResponse.json( { message: '请先登录' }, { status: 401 } ) } const token = authHeader.substring(7) const decoded = verifyToken(token) if (!decoded) { return NextResponse.json( { message: '登录已过期' }, { status: 401 } ) } const { quantity } = await request.json() if (!quantity || quantity < 1) { return NextResponse.json( { message: '数量必须大于0' }, { status: 400 } ) } // 检查购物车项是否属于当前用户 const cartItem = await prisma.cartItem.findFirst({ where: { id: id, userId: decoded.userId }, include: { component: true } }) if (!cartItem) { return NextResponse.json( { message: '购物车项不存在' }, { status: 404 } ) } // 检查库存 if (quantity > cartItem.component.stock) { return NextResponse.json( { message: '库存不足' }, { status: 400 } ) } const updatedCartItem = await prisma.cartItem.update({ where: { id: id }, data: { quantity: quantity }, include: { component: { include: { componentType: true } } } }) return NextResponse.json(updatedCartItem) } catch (error) { console.error('更新购物车项失败:', error) return NextResponse.json( { message: '更新购物车项失败' }, { status: 500 } ) } } // 删除购物车项 export async function DELETE( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { const { id } = await params const authHeader = request.headers.get('authorization') if (!authHeader || !authHeader.startsWith('Bearer ')) { return NextResponse.json( { message: '请先登录' }, { status: 401 } ) } const token = authHeader.substring(7) const decoded = verifyToken(token) if (!decoded) { return NextResponse.json( { message: '登录已过期' }, { status: 401 } ) } // 检查购物车项是否属于当前用户 const cartItem = await prisma.cartItem.findFirst({ where: { id: id, userId: decoded.userId } }) if (!cartItem) { return NextResponse.json( { message: '购物车项不存在' }, { status: 404 } ) } await prisma.cartItem.delete({ where: { id: id } }) return NextResponse.json({ message: '已从购物车移除' }) } catch (error) { console.error('删除购物车项失败:', error) return NextResponse.json( { message: '删除购物车项失败' }, { status: 500 } ) } }