import { adaptOrderSummary } from "@/lib/adapters/orders"; import { backendRequest } from "@/lib/http/backend-client"; import { jsonSuccess, parsePositiveIntegerParam, withErrorHandling, } from "@/lib/http/response"; import type { OrderListResponseDto, OrderStatus } from "@/lib/types/backend"; const MESSAGE = "订单总览当前显示真实后端最近订单。"; const DEFAULT_LIMIT = 6; const ALLOWED_STATUS = new Set([ "created", "running", "waiting_review", "succeeded", "failed", "cancelled", ]); export async function GET(request: Request) { return withErrorHandling(async () => { const url = new URL(request.url); const pageParam = url.searchParams.get("page"); const limitParam = url.searchParams.get("limit"); const queryParam = url.searchParams.get("query")?.trim(); const statusParam = url.searchParams.get("status")?.trim(); const params = new URLSearchParams({ page: String( pageParam ? parsePositiveIntegerParam(pageParam, "page") : 1, ), limit: String( limitParam ? parsePositiveIntegerParam(limitParam, "limit") : DEFAULT_LIMIT, ), }); if (statusParam && ALLOWED_STATUS.has(statusParam as OrderStatus)) { params.set("status", statusParam); } if (queryParam) { params.set("query", queryParam); } const response = await backendRequest( `/orders?${params.toString()}`, ); return jsonSuccess( { page: response.data.page, limit: response.data.limit, total: response.data.total, totalPages: response.data.total_pages, items: response.data.items.map(adaptOrderSummary), }, { mode: "proxy", message: MESSAGE, }, ); }); }