You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

51 lines
1.6 KiB

// 市场数据服务
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;
};