import { NextRequest, NextResponse } from 'next/server'; import pool from '@/lib/db'; export async function GET( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { let connection; try { const { id } = await params; connection = await pool.getConnection(); const [rows] = await connection.query("SELECT * FROM houses WHERE id = ? AND status = 'approved'", [id]); if (rows.length === 0) { connection.release(); return NextResponse.json({ error: '房屋不存在或待审核' }, { status: 404 }); } const row = rows[0]; const house = { id: row.id, owner: row.owner, title: row.title, description: row.description, price: row.price, district: row.district, address: row.address, phone: row.phone, images: row.images ? JSON.parse(row.images) : [], createdAt: row.created_at }; connection.release(); return NextResponse.json({ house }); } catch (error) { console.error('Get house error:', error); return NextResponse.json({ error: '获取房屋信息失败' }, { status: 500 }); } finally { if (connection) connection.release(); } } export async function PUT( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { let connection; try { const token = request.cookies.get('auth_token')?.value; if (!token) { return NextResponse.json({ error: '请先登录' }, { status: 401 }); } const { id } = await params; connection = await pool.getConnection(); const [users] = await connection.query('SELECT username FROM users WHERE token = ?', [token]); if (users.length === 0) { connection.release(); return NextResponse.json({ error: '用户不存在' }, { status: 401 }); } const [houses] = await connection.query('SELECT * FROM houses WHERE id = ?', [id]); if (houses.length === 0) { connection.release(); return NextResponse.json({ error: '房屋不存在' }, { status: 404 }); } if (houses[0].owner !== users[0].username) { connection.release(); return NextResponse.json({ error: '无权修改此房屋' }, { status: 403 }); } const body = await request.json(); const { title, description, price, district, address, phone, images } = body; await connection.query( 'UPDATE houses SET title = ?, description = ?, price = ?, district = ?, address = ?, phone = ?, images = ?, status = ?, reject_reason = NULL WHERE id = ?', [ title || houses[0].title, description ?? houses[0].description, price !== undefined ? Number(price) : houses[0].price, district || houses[0].district, address || houses[0].address, phone || houses[0].phone, images ? JSON.stringify(images) : houses[0].images, 'pending', id ] ); const [updated] = await connection.query('SELECT * FROM houses WHERE id = ?', [id]); const row = updated[0]; const house = { id: row.id, owner: row.owner, title: row.title, description: row.description, price: row.price, district: row.district, address: row.address, phone: row.phone, images: row.images ? JSON.parse(row.images) : [], status: row.status, reject_reason: row.reject_reason, createdAt: row.created_at }; connection.release(); return NextResponse.json({ success: true, house }); } catch (error) { console.error('Update house error:', error); return NextResponse.json({ error: '更新房屋失败' }, { status: 500 }); } finally { if (connection) connection.release(); } } export async function DELETE( request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { let connection; try { const token = request.cookies.get('auth_token')?.value; if (!token) { return NextResponse.json({ error: '请先登录' }, { status: 401 }); } const { id } = await params; connection = await pool.getConnection(); const [users] = await connection.query('SELECT username FROM users WHERE token = ?', [token]); if (users.length === 0) { connection.release(); return NextResponse.json({ error: '用户不存在' }, { status: 401 }); } const [houses] = await connection.query('SELECT * FROM houses WHERE id = ?', [id]); if (houses.length === 0) { connection.release(); return NextResponse.json({ error: '房屋不存在' }, { status: 404 }); } if (houses[0].owner !== users[0].username) { connection.release(); return NextResponse.json({ error: '无权删除此房屋' }, { status: 403 }); } await connection.query('DELETE FROM houses WHERE id = ?', [id]); connection.release(); return NextResponse.json({ success: true }); } catch (error) { console.error('Delete house error:', error); return NextResponse.json({ error: '删除房屋失败' }, { status: 500 }); } finally { if (connection) connection.release(); } }