Files
soul-yongping/app/api/orders/route.ts

81 lines
2.4 KiB
TypeScript
Raw Normal View History

/**
*
* 开发: 卡若
* 技术支持: 存客宝
*
* GET /api/orders - userId
* GET /api/orders?userId= -
*/
import { type NextRequest, NextResponse } from "next/server"
import { query } from "@/lib/db"
function rowToOrder(row: Record<string, unknown>) {
return {
id: row.id,
orderSn: row.order_sn,
userId: row.user_id,
openId: row.open_id,
productType: row.product_type,
productId: row.product_id,
amount: row.amount,
description: row.description,
status: row.status,
transactionId: row.transaction_id,
payTime: row.pay_time,
2026-02-05 11:35:57 +08:00
referrerId: row.referrer_id ?? null,
referralCode: row.referral_code ?? null,
createdAt: row.created_at,
updatedAt: row.updated_at,
// 新增:购买者信息
userNickname: row.user_nickname ?? null,
userAvatar: row.user_avatar ?? null,
}
}
export async function GET(request: NextRequest) {
try {
const { searchParams } = new URL(request.url)
const userId = searchParams.get("userId")
let rows: Record<string, unknown>[] = []
try {
if (userId) {
// 按用户查询订单JOIN users 表获取用户信息)
rows = (await query(
`SELECT o.*, u.nickname as user_nickname, u.avatar as user_avatar
FROM orders o
LEFT JOIN users u ON o.user_id = u.id
WHERE o.user_id = ?
ORDER BY o.created_at DESC`,
[userId]
)) as Record<string, unknown>[]
} else {
// 管理后台:无 userId 时返回全部订单JOIN users 表获取购买者昵称)
rows = (await query(
`SELECT o.*, u.nickname as user_nickname, u.avatar as user_avatar
FROM orders o
LEFT JOIN users u ON o.user_id = u.id
ORDER BY o.created_at DESC`
)) as Record<string, unknown>[]
}
} catch (e) {
console.error("[Karuo] Orders query error:", e)
// 表可能未初始化,返回空列表
rows = []
}
const orders = rows.map(rowToOrder)
return NextResponse.json({
code: 0,
message: "获取成功",
data: orders,
success: true,
orders,
})
} catch (error) {
console.error("[Karuo] Get orders error:", error)
return NextResponse.json({ code: 500, message: "服务器错误" }, { status: 500 })
}
}