From 0c2476f3406f91479cf0ac5932ec3c441b52014a Mon Sep 17 00:00:00 2001 From: erio Date: Sun, 1 Mar 2026 21:24:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=97=A0=20token=20=E4=B8=8D=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=BD=99=E9=A2=9D=EF=BC=9B=E5=85=85=E5=80=BC=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=90=8E=E7=AB=8B=E5=8D=B3=E9=A2=84=E5=8F=96=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UserInfo.balance 改为可选字段 - 无 token 时不设 balance,PaymentForm 不渲染余额行 - COMPLETED 触发时立即调 loadUserAndOrders 刷新余额 2.2s 结果页展示期间余额已在后台拉取,回表单时即刻呈现新值 --- src/app/pay/orders/page.tsx | 2 +- src/app/pay/page.tsx | 9 +++++---- src/lib/pay-utils.ts | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/app/pay/orders/page.tsx b/src/app/pay/orders/page.tsx index b9bf426..96a8695 100644 --- a/src/app/pay/orders/page.tsx +++ b/src/app/pay/orders/page.tsx @@ -72,7 +72,7 @@ function OrdersContent() { return; } if (!hasToken) { - setUserInfo({ id: userId, username: `用户 #${userId}`, balance: 0 }); + setUserInfo({ id: userId, username: `用户 #${userId}` }); setOrders([]); setError('当前链接未携带登录 token,无法查询"我的订单"。'); return; diff --git a/src/app/pay/page.tsx b/src/app/pay/page.tsx index e9156a7..629a7f0 100644 --- a/src/app/pay/page.tsx +++ b/src/app/pay/page.tsx @@ -111,7 +111,7 @@ function PayContent() { (typeof meUser.displayName === 'string' && meUser.displayName.trim()) || (typeof meUser.username === 'string' && meUser.username.trim()) || `用户 #${userId}`, - balance: typeof meUser.balance === 'number' ? meUser.balance : 0, + balance: typeof meUser.balance === 'number' ? meUser.balance : undefined, }); if (Array.isArray(meData.orders)) { @@ -127,8 +127,8 @@ function PayContent() { } } - // 无 token 或 token 失效:只显示用户 ID,不展示隐私信息 - setUserInfo({ id: userId, username: `用户 #${userId}`, balance: 0 }); + // 无 token 或 token 失效:只显示用户 ID,不展示隐私信息(不显示余额) + setUserInfo({ id: userId, username: `用户 #${userId}` }); setMyOrders([]); setOrdersPage(1); setOrdersHasMore(false); @@ -254,12 +254,13 @@ function PayContent() { useEffect(() => { if (step !== 'result' || finalStatus !== 'COMPLETED') return; + // 立即在后台刷新余额,2.2s 显示结果页后再切回表单(届时余额已更新) + loadUserAndOrders(); const timer = setTimeout(() => { setStep('form'); setOrderResult(null); setFinalStatus(''); setError(''); - loadUserAndOrders(); }, 2200); return () => clearTimeout(timer); // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/src/lib/pay-utils.ts b/src/lib/pay-utils.ts index da0112e..00896e9 100644 --- a/src/lib/pay-utils.ts +++ b/src/lib/pay-utils.ts @@ -1,7 +1,7 @@ export interface UserInfo { id?: number; username: string; - balance: number; + balance?: number; } export interface MyOrder {