71 lines
1.8 KiB
TypeScript
71 lines
1.8 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { getServerSession } from 'next-auth/next'
|
|
import { authOptions } from '@/lib/authOptions'
|
|
import { db } from '@/lib/db'
|
|
|
|
export const dynamic = 'force-dynamic'
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
// 验证登录状态
|
|
const session = await getServerSession(authOptions)
|
|
if (!session || !session.user?.id) {
|
|
return NextResponse.json(
|
|
{ message: '请先登录' },
|
|
{ status: 401 }
|
|
)
|
|
}
|
|
|
|
const searchParams = request.nextUrl.searchParams
|
|
const orderNo = searchParams.get('order_no')
|
|
|
|
if (!orderNo) {
|
|
return NextResponse.json(
|
|
{ message: '订单号不能为空' },
|
|
{ status: 400 }
|
|
)
|
|
}
|
|
|
|
// 查找订单
|
|
const order = await db.findOrderByOrderNo(orderNo)
|
|
if (!order) {
|
|
return NextResponse.json(
|
|
{ message: '订单不存在' },
|
|
{ status: 404 }
|
|
)
|
|
}
|
|
|
|
// 验证订单是否属于当前用户
|
|
const userId = parseInt(session.user.id)
|
|
if (order.user_id !== userId) {
|
|
return NextResponse.json(
|
|
{ message: '无权访问此订单' },
|
|
{ status: 403 }
|
|
)
|
|
}
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
order: {
|
|
id: order.id,
|
|
order_no: order.order_no,
|
|
product_type: order.product_type,
|
|
product_name: order.product_name,
|
|
amount: order.amount,
|
|
status: order.status,
|
|
payment_method: order.payment_method,
|
|
trade_no: order.trade_no,
|
|
created_at: order.created_at,
|
|
paid_at: order.paid_at,
|
|
},
|
|
})
|
|
} catch (error) {
|
|
console.error('查询订单状态错误:', error)
|
|
return NextResponse.json(
|
|
{ message: '查询失败,请稍后重试' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|
|
|