From 356f865f09154cd80b087eb16c95dbfab90b0bf8 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Tue, 28 Oct 2025 18:47:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BE=AE=E4=BF=A1mock=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mocks/handlers/auth.js | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/mocks/handlers/auth.js b/src/mocks/handlers/auth.js index 31f37832..b48a27db 100644 --- a/src/mocks/handlers/auth.js +++ b/src/mocks/handlers/auth.js @@ -136,7 +136,9 @@ export const authHandlers = [ }); // 模拟微信授权 URL(实际是微信的 URL) - const authUrl = `https://open.weixin.qq.com/connect/qrconnect?appid=mock&redirect_uri=&response_type=code&scope=snsapi_login&state=${sessionId}#wechat_redirect`; + // 使用真实的微信 AppID 和真实的授权回调地址(必须与微信开放平台配置的域名一致) + const mockRedirectUri = encodeURIComponent('http://valuefrontier.cn/api/auth/wechat/callback'); + const authUrl = `https://open.weixin.qq.com/connect/qrconnect?appid=wxa8d74c47041b5f87&redirect_uri=${mockRedirectUri}&response_type=code&scope=snsapi_login&state=${sessionId}#wechat_redirect`; console.log('[Mock] 生成微信二维码:', { sessionId, authUrl }); @@ -147,16 +149,16 @@ export const authHandlers = [ session.status = 'scanned'; console.log(`[Mock] 模拟用户扫码: ${sessionId}`); - // 再过2秒自动确认登录 + // 再过5秒自动确认登录(延长时间让用户看到 scanned 状态) setTimeout(() => { const session2 = mockWechatSessions.get(sessionId); if (session2 && session2.status === 'scanned') { - session2.status = 'confirmed'; + session2.status = 'authorized'; // ✅ 使用 'authorized' 状态,与后端保持一致 session2.user = { id: 999, nickname: '微信用户', wechat_openid: 'mock_openid_' + sessionId, - avatar_url: 'https://i.pravatar.cc/150?img=99', + avatar_url: 'https://ui-avatars.com/api/?name=微信用户&size=150&background=4299e1&color=fff', phone: null, email: null, has_wechat: true, @@ -168,6 +170,7 @@ export const authHandlers = [ is_subscription_active: true, subscription_days_left: 0 }; + session2.user_info = { user_id: session2.user.id }; // ✅ 添加 user_info 字段 console.log(`[Mock] 模拟用户确认登录: ${sessionId}`, session2.user); } }, 2000); @@ -185,7 +188,7 @@ export const authHandlers = [ }), // 4. 检查微信扫码状态 - http.post('/api/auth/wechat/check-status', async ({ request }) => { + http.post('/api/auth/wechat/check', async ({ request }) => { await delay(200); // 轮询请求,延迟短一些 const body = await request.json(); @@ -209,18 +212,16 @@ export const authHandlers = [ console.log('[Mock] 检查微信状态:', { session_id, status: session.status }); + // ✅ 返回与后端真实 API 一致的扁平化数据结构 return HttpResponse.json({ - code: 0, - message: '成功', - data: { - status: session.status, - user: session.user - } + status: session.status, + user_info: session.user_info, + expires_in: Math.floor((session.createdAt + 5 * 60 * 1000 - Date.now()) / 1000) }); }), // 5. 微信登录确认 - http.post('/api/auth/wechat/login', async ({ request }) => { + http.post('/api/auth/login/wechat', async ({ request }) => { await delay(NETWORK_DELAY); const body = await request.json(); @@ -228,7 +229,7 @@ export const authHandlers = [ const session = mockWechatSessions.get(session_id); - if (!session || session.status !== 'confirmed') { + if (!session || session.status !== 'authorized') { // ✅ 使用 'authorized' 状态,与前端保持一致 return HttpResponse.json({ success: false, error: '微信登录未确认或已过期' @@ -386,12 +387,12 @@ if (process.env.NODE_ENV === 'development' || process.env.REACT_APP_ENABLE_MOCK setTimeout(() => { const session2 = mockWechatSessions.get(targetSessionId); if (session2 && session2.status === 'scanned') { - session2.status = 'confirmed'; + session2.status = 'authorized'; // ✅ 使用 'authorized' 状态,与自动扫码流程保持一致 session2.user = { id: 999, nickname: '微信测试用户', wechat_openid: 'mock_openid_' + targetSessionId, - avatar_url: 'https://i.pravatar.cc/150?img=99', + avatar_url: 'https://ui-avatars.com/api/?name=微信测试用户&size=150&background=4299e1&color=fff', phone: null, email: null, has_wechat: true, @@ -402,6 +403,7 @@ if (process.env.NODE_ENV === 'development' || process.env.REACT_APP_ENABLE_MOCK is_subscription_active: true, subscription_days_left: 0 }; + session2.user_info = { user_id: session2.user.id }; // ✅ 添加 user_info 字段 console.log(`[Mock API] ✅ 模拟确认登录: ${targetSessionId}`, session2.user); } }, 1000);