Your Name 6cac41f1c0
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
接入DuluPay充值闭环并统一升级弹窗比例
2026-02-14 15:25:36 +08:00

45 lines
1.4 KiB
TypeScript

import { NextResponse } from "next/server";
import { desc, eq } from "drizzle-orm";
import { auth } from "@/app/(auth)/auth";
import { db } from "@/lib/db";
import { paymentOrder } from "@/lib/db/schema";
export async function GET() {
try {
const session = await auth();
if (!session?.user?.id) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
const orders = await db
.select({
id: paymentOrder.id,
provider: paymentOrder.provider,
outTradeNo: paymentOrder.outTradeNo,
tradeNo: paymentOrder.tradeNo,
packageId: paymentOrder.packageId,
points: paymentOrder.points,
amountCents: paymentOrder.amountCents,
currency: paymentOrder.currency,
payType: paymentOrder.payType,
status: paymentOrder.status,
paidAt: paymentOrder.paidAt,
createdAt: paymentOrder.createdAt,
})
.from(paymentOrder)
.where(eq(paymentOrder.userId, session.user.id))
.orderBy(desc(paymentOrder.createdAt))
.limit(200);
return NextResponse.json({
orders: orders.map((order) => ({
...order,
amount: Number((order.amountCents / 100).toFixed(2)),
})),
});
} catch (error) {
console.error("[Payment Orders API] Error:", error);
return NextResponse.json({ error: "Failed to fetch payment orders" }, { status: 500 });
}
}