|
|
|
|
|
// 市场数据服务
|
|
|
|
|
|
import { futuresList, generateFuturesOverview, generateFutureData, generateKlineData, riskAlerts } from '../utils/mockData';
|
|
|
|
|
|
|
|
|
|
|
|
// 获取市场概览
|
|
|
|
|
|
export const fetchMarketOverview = async () => {
|
|
|
|
|
|
// 模拟API请求延迟
|
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 300));
|
|
|
|
|
|
return generateFuturesOverview();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 获取品种详情
|
|
|
|
|
|
export const fetchMarketDetail = async (symbol: string) => {
|
|
|
|
|
|
// 模拟API请求延迟
|
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 200));
|
|
|
|
|
|
const future = futuresList.find(item => item.code === symbol);
|
|
|
|
|
|
if (!future) {
|
|
|
|
|
|
throw new Error('品种不存在');
|
|
|
|
|
|
}
|
|
|
|
|
|
return generateFutureData(symbol, future.name);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 获取K线数据
|
|
|
|
|
|
export const fetchKlineData = async (symbol: string, period: string) => {
|
|
|
|
|
|
// 模拟API请求延迟
|
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 200));
|
|
|
|
|
|
return generateKlineData(30);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 获取市场热点
|
|
|
|
|
|
export const fetchMarketHotspots = async () => {
|
|
|
|
|
|
// 模拟API请求延迟
|
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 200));
|
|
|
|
|
|
const overview = generateFuturesOverview();
|
|
|
|
|
|
// 按涨跌幅排序,返回前10个
|
|
|
|
|
|
return overview
|
|
|
|
|
|
.sort((a, b) => Math.abs(b.changePercent) - Math.abs(a.changePercent))
|
|
|
|
|
|
.slice(0, 10)
|
|
|
|
|
|
.map(item => ({
|
|
|
|
|
|
symbol: item.code,
|
|
|
|
|
|
name: item.name,
|
|
|
|
|
|
change: item.changePercent,
|
|
|
|
|
|
volume: Math.floor(Math.random() * 1000000) + 100000
|
|
|
|
|
|
}));
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 获取风险预警
|
|
|
|
|
|
export const fetchRiskAlerts = async () => {
|
|
|
|
|
|
// 模拟API请求延迟
|
|
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 100));
|
|
|
|
|
|
return riskAlerts;
|
|
|
|
|
|
};
|