feat: 微信mock数据调整

This commit is contained in:
zdl
2025-10-28 18:47:39 +08:00
parent e05ea154a2
commit 356f865f09

View File

@@ -136,7 +136,9 @@ export const authHandlers = [
}); });
// 模拟微信授权 URL实际是微信的 URL // 模拟微信授权 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 }); console.log('[Mock] 生成微信二维码:', { sessionId, authUrl });
@@ -147,16 +149,16 @@ export const authHandlers = [
session.status = 'scanned'; session.status = 'scanned';
console.log(`[Mock] 模拟用户扫码: ${sessionId}`); console.log(`[Mock] 模拟用户扫码: ${sessionId}`);
// 再过2秒自动确认登录 // 再过5秒自动确认登录(延长时间让用户看到 scanned 状态)
setTimeout(() => { setTimeout(() => {
const session2 = mockWechatSessions.get(sessionId); const session2 = mockWechatSessions.get(sessionId);
if (session2 && session2.status === 'scanned') { if (session2 && session2.status === 'scanned') {
session2.status = 'confirmed'; session2.status = 'authorized'; // ✅ 使用 'authorized' 状态,与后端保持一致
session2.user = { session2.user = {
id: 999, id: 999,
nickname: '微信用户', nickname: '微信用户',
wechat_openid: 'mock_openid_' + sessionId, 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, phone: null,
email: null, email: null,
has_wechat: true, has_wechat: true,
@@ -168,6 +170,7 @@ export const authHandlers = [
is_subscription_active: true, is_subscription_active: true,
subscription_days_left: 0 subscription_days_left: 0
}; };
session2.user_info = { user_id: session2.user.id }; // ✅ 添加 user_info 字段
console.log(`[Mock] 模拟用户确认登录: ${sessionId}`, session2.user); console.log(`[Mock] 模拟用户确认登录: ${sessionId}`, session2.user);
} }
}, 2000); }, 2000);
@@ -185,7 +188,7 @@ export const authHandlers = [
}), }),
// 4. 检查微信扫码状态 // 4. 检查微信扫码状态
http.post('/api/auth/wechat/check-status', async ({ request }) => { http.post('/api/auth/wechat/check', async ({ request }) => {
await delay(200); // 轮询请求,延迟短一些 await delay(200); // 轮询请求,延迟短一些
const body = await request.json(); const body = await request.json();
@@ -209,18 +212,16 @@ export const authHandlers = [
console.log('[Mock] 检查微信状态:', { session_id, status: session.status }); console.log('[Mock] 检查微信状态:', { session_id, status: session.status });
// ✅ 返回与后端真实 API 一致的扁平化数据结构
return HttpResponse.json({ return HttpResponse.json({
code: 0, status: session.status,
message: '成功', user_info: session.user_info,
data: { expires_in: Math.floor((session.createdAt + 5 * 60 * 1000 - Date.now()) / 1000)
status: session.status,
user: session.user
}
}); });
}), }),
// 5. 微信登录确认 // 5. 微信登录确认
http.post('/api/auth/wechat/login', async ({ request }) => { http.post('/api/auth/login/wechat', async ({ request }) => {
await delay(NETWORK_DELAY); await delay(NETWORK_DELAY);
const body = await request.json(); const body = await request.json();
@@ -228,7 +229,7 @@ export const authHandlers = [
const session = mockWechatSessions.get(session_id); const session = mockWechatSessions.get(session_id);
if (!session || session.status !== 'confirmed') { if (!session || session.status !== 'authorized') { // ✅ 使用 'authorized' 状态,与前端保持一致
return HttpResponse.json({ return HttpResponse.json({
success: false, success: false,
error: '微信登录未确认或已过期' error: '微信登录未确认或已过期'
@@ -386,12 +387,12 @@ if (process.env.NODE_ENV === 'development' || process.env.REACT_APP_ENABLE_MOCK
setTimeout(() => { setTimeout(() => {
const session2 = mockWechatSessions.get(targetSessionId); const session2 = mockWechatSessions.get(targetSessionId);
if (session2 && session2.status === 'scanned') { if (session2 && session2.status === 'scanned') {
session2.status = 'confirmed'; session2.status = 'authorized'; // ✅ 使用 'authorized' 状态,与自动扫码流程保持一致
session2.user = { session2.user = {
id: 999, id: 999,
nickname: '微信测试用户', nickname: '微信测试用户',
wechat_openid: 'mock_openid_' + targetSessionId, 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, phone: null,
email: null, email: null,
has_wechat: true, has_wechat: true,
@@ -402,6 +403,7 @@ if (process.env.NODE_ENV === 'development' || process.env.REACT_APP_ENABLE_MOCK
is_subscription_active: true, is_subscription_active: true,
subscription_days_left: 0 subscription_days_left: 0
}; };
session2.user_info = { user_id: session2.user.id }; // ✅ 添加 user_info 字段
console.log(`[Mock API] ✅ 模拟确认登录: ${targetSessionId}`, session2.user); console.log(`[Mock API] ✅ 模拟确认登录: ${targetSessionId}`, session2.user);
} }
}, 1000); }, 1000);