fix: preserve billing response shape
This commit is contained in:
1 parent
600cba023c
commit
2ef3da7af5
7 files changed
+488
-6
No files matched your search
@@ -20,6 +20,7 @@ import {
|
||||
X
|
||||
} from "lucide-react";
|
||||
import { billingUnitLabel, formatBillingAmount } from "@/lib/billing";
|
||||
import { parseAdminBillingPayload, parseMemberBillingPayload } from "@/lib/client/billing-api";
|
||||
import { pulseFeedback, revealChildren, runScopedMotion } from "@/lib/ui/motion";
|
||||
import type { BillingAccountConfig, BillingParameterDimension, BillingParameterTier, BillingPriceRule, OrganizationWallet } from "@/lib/types";
|
||||
|
||||
@@ -161,8 +162,9 @@ export function BillingManager({ isSuperAdmin }: { isSuperAdmin: boolean }) {
|
||||
try {
|
||||
if (isSuperAdmin) {
|
||||
const adminResponse = await fetch("/api/admin/billing", { cache: "no-store" });
|
||||
const adminPayload = await readApiPayload<AdminPayload>(adminResponse);
|
||||
if (!adminResponse.ok) throw new Error(adminPayload.error || "读取超管计费数据失败");
|
||||
const rawAdminPayload = await readApiPayload<AdminPayload>(adminResponse);
|
||||
if (!adminResponse.ok) throw new Error(rawAdminPayload.error || "读取超管计费数据失败");
|
||||
const adminPayload = parseAdminBillingPayload(rawAdminPayload);
|
||||
setAdmin(adminPayload);
|
||||
setBilling(buildAdminBillingPayload(adminPayload));
|
||||
setAccountDraft({ ...emptyAccountDraft, ...adminPayload.billingAccount });
|
||||
@@ -172,8 +174,9 @@ export function BillingManager({ isSuperAdmin }: { isSuperAdmin: boolean }) {
|
||||
}));
|
||||
} else {
|
||||
const billingResponse = await fetch("/api/billing", { cache: "no-store" });
|
||||
const billingPayload = await readApiPayload<BillingPayload>(billingResponse);
|
||||
if (!billingResponse.ok) throw new Error(billingPayload.error || "读取计费数据失败");
|
||||
const rawBillingPayload = await readApiPayload<BillingPayload>(billingResponse);
|
||||
if (!billingResponse.ok) throw new Error(rawBillingPayload.error || "读取计费数据失败");
|
||||
const billingPayload = parseMemberBillingPayload(rawBillingPayload);
|
||||
setBilling(billingPayload);
|
||||
}
|
||||
} catch (nextError) {
|
||||
@@ -324,7 +327,7 @@ async function readApiPayload<T extends Record<string, unknown>>(response: Respo
|
||||
} catch {
|
||||
return {
|
||||
error: response.status >= 500
|
||||
? "计费服务返回了服务器错误,请检查服务端日志,并确认已执行 npm run db:migrate。"
|
||||
? "计费服务返回了服务器错误,请检查 Go API 状态和服务端日志。"
|
||||
: `服务器返回了无效响应(HTTP ${response.status})。`
|
||||
} as T & { error?: string };
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user