// src/mocks/handlers/financial.js // 财务数据相关的 Mock Handlers import { http, HttpResponse } from 'msw'; import { generateFinancialData } from '../data/financial'; // 模拟延迟 const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms)); export const financialHandlers = [ // 1. 股票基本信息 http.get('/api/financial/stock-info/:stockCode', async ({ params }) => { await delay(150); const { stockCode } = params; const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.stockInfo }); }), // 2. 资产负债表 http.get('/api/financial/balance-sheet/:stockCode', async ({ params, request }) => { await delay(250); const { stockCode } = params; const url = new URL(request.url); const limit = parseInt(url.searchParams.get('limit') || '4', 10); const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.balanceSheet.slice(0, limit) }); }), // 3. 利润表 http.get('/api/financial/income-statement/:stockCode', async ({ params, request }) => { await delay(250); const { stockCode } = params; const url = new URL(request.url); const limit = parseInt(url.searchParams.get('limit') || '4', 10); const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.incomeStatement.slice(0, limit) }); }), // 4. 现金流量表 http.get('/api/financial/cashflow/:stockCode', async ({ params, request }) => { await delay(250); const { stockCode } = params; const url = new URL(request.url); const limit = parseInt(url.searchParams.get('limit') || '4', 10); const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.cashflow.slice(0, limit) }); }), // 5. 财务指标 http.get('/api/financial/financial-metrics/:stockCode', async ({ params, request }) => { await delay(250); const { stockCode } = params; const url = new URL(request.url); const limit = parseInt(url.searchParams.get('limit') || '4', 10); const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.financialMetrics.slice(0, limit) }); }), // 6. 主营业务 http.get('/api/financial/main-business/:stockCode', async ({ params }) => { await delay(200); const { stockCode } = params; const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.mainBusiness }); }), // 7. 业绩预告 http.get('/api/financial/forecast/:stockCode', async ({ params }) => { await delay(200); const { stockCode } = params; const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.forecast }); }), // 8. 行业排名 http.get('/api/financial/industry-rank/:stockCode', async ({ params }) => { await delay(250); const { stockCode } = params; const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.industryRank }); }), // 9. 期间对比 http.get('/api/financial/comparison/:stockCode', async ({ params }) => { await delay(250); const { stockCode } = params; const data = generateFinancialData(stockCode); return HttpResponse.json({ success: true, data: data.periodComparison }); }), ];