2026-01-21 15:49:12 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 订单管理接口
|
|
|
|
|
|
* 开发: 卡若
|
|
|
|
|
|
* 技术支持: 存客宝
|
2026-01-31 17:39:21 +08:00
|
|
|
|
*
|
|
|
|
|
|
* GET /api/orders - 管理后台:返回全部订单(无 userId)
|
|
|
|
|
|
* GET /api/orders?userId= - 按用户返回订单
|
2026-01-21 15:49:12 +08:00
|
|
|
|
*/
|
2026-01-09 11:58:08 +08:00
|
|
|
|
import { type NextRequest, NextResponse } from "next/server"
|
2026-01-31 17:39:21 +08:00
|
|
|
|
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,
|
2026-01-31 17:39:21 +08:00
|
|
|
|
createdAt: row.created_at,
|
|
|
|
|
|
updatedAt: row.updated_at,
|
2026-02-05 21:08:28 +08:00
|
|
|
|
// 新增:购买者信息
|
|
|
|
|
|
userNickname: row.user_nickname ?? null,
|
|
|
|
|
|
userAvatar: row.user_avatar ?? null,
|
2026-01-31 17:39:21 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-09 11:58:08 +08:00
|
|
|
|
|
|
|
|
|
|
export async function GET(request: NextRequest) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const { searchParams } = new URL(request.url)
|
|
|
|
|
|
const userId = searchParams.get("userId")
|
|
|
|
|
|
|
2026-01-31 17:39:21 +08:00
|
|
|
|
let rows: Record<string, unknown>[] = []
|
|
|
|
|
|
try {
|
|
|
|
|
|
if (userId) {
|
2026-02-05 21:08:28 +08:00
|
|
|
|
// 按用户查询订单(JOIN users 表获取用户信息)
|
2026-01-31 17:39:21 +08:00
|
|
|
|
rows = (await query(
|
2026-02-05 21:08:28 +08:00
|
|
|
|
`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`,
|
2026-01-31 17:39:21 +08:00
|
|
|
|
[userId]
|
|
|
|
|
|
)) as Record<string, unknown>[]
|
|
|
|
|
|
} else {
|
2026-02-05 21:08:28 +08:00
|
|
|
|
// 管理后台:无 userId 时返回全部订单(JOIN users 表获取购买者昵称)
|
2026-01-31 17:39:21 +08:00
|
|
|
|
rows = (await query(
|
2026-02-05 21:08:28 +08:00
|
|
|
|
`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`
|
2026-01-31 17:39:21 +08:00
|
|
|
|
)) as Record<string, unknown>[]
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.error("[Karuo] Orders query error:", e)
|
|
|
|
|
|
// 表可能未初始化,返回空列表
|
|
|
|
|
|
rows = []
|
2026-01-09 11:58:08 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-31 17:39:21 +08:00
|
|
|
|
const orders = rows.map(rowToOrder)
|
2026-01-09 11:58:08 +08:00
|
|
|
|
|
|
|
|
|
|
return NextResponse.json({
|
|
|
|
|
|
code: 0,
|
|
|
|
|
|
message: "获取成功",
|
|
|
|
|
|
data: orders,
|
2026-01-31 17:39:21 +08:00
|
|
|
|
success: true,
|
|
|
|
|
|
orders,
|
2026-01-09 11:58:08 +08:00
|
|
|
|
})
|
|
|
|
|
|
} catch (error) {
|
2026-01-21 15:49:12 +08:00
|
|
|
|
console.error("[Karuo] Get orders error:", error)
|
2026-01-09 11:58:08 +08:00
|
|
|
|
return NextResponse.json({ code: 500, message: "服务器错误" }, { status: 500 })
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|