import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'; import { generateFuturesOverview, generateFutureData, riskAlerts, aiMarketAnalysis } from '../utils/mockData'; // 模拟异步获取期货概览数据 export const fetchFuturesOverview = createAsyncThunk( 'futures/fetchOverview', async () => { // 模拟API请求延迟 await new Promise(resolve => setTimeout(resolve, 500)); return generateFuturesOverview(); } ); // 模拟异步获取单个期货详情 export const fetchFutureDetail = createAsyncThunk( 'futures/fetchDetail', async ({ code, name }) => { // 模拟API请求延迟 await new Promise(resolve => setTimeout(resolve, 500)); return generateFutureData(code, name); } ); // 模拟异步获取风险预警 export const fetchRiskAlerts = createAsyncThunk( 'futures/fetchRiskAlerts', async () => { // 模拟API请求延迟 await new Promise(resolve => setTimeout(resolve, 300)); return riskAlerts; } ); // 模拟异步获取AI市场分析 export const fetchAIMarketAnalysis = createAsyncThunk( 'futures/fetchAIMarketAnalysis', async () => { // 模拟API请求延迟 await new Promise(resolve => setTimeout(resolve, 400)); return aiMarketAnalysis; } ); const futuresSlice = createSlice({ name: 'futures', initialState: { overview: [], selectedFuture: null, riskAlerts: [], aiAnalysis: null, loading: false, error: null }, reducers: { selectFuture: (state, action) => { state.selectedFuture = action.payload; }, clearSelectedFuture: (state) => { state.selectedFuture = null; } }, extraReducers: (builder) => { builder // 处理fetchFuturesOverview .addCase(fetchFuturesOverview.pending, (state) => { state.loading = true; state.error = null; }) .addCase(fetchFuturesOverview.fulfilled, (state, action) => { state.loading = false; state.overview = action.payload; }) .addCase(fetchFuturesOverview.rejected, (state, action) => { state.loading = false; state.error = action.error.message; }) // 处理fetchFutureDetail .addCase(fetchFutureDetail.pending, (state) => { state.loading = true; state.error = null; }) .addCase(fetchFutureDetail.fulfilled, (state, action) => { state.loading = false; state.selectedFuture = action.payload; }) .addCase(fetchFutureDetail.rejected, (state, action) => { state.loading = false; state.error = action.error.message; }) // 处理fetchRiskAlerts .addCase(fetchRiskAlerts.pending, (state) => { state.loading = true; state.error = null; }) .addCase(fetchRiskAlerts.fulfilled, (state, action) => { state.loading = false; state.riskAlerts = action.payload; }) .addCase(fetchRiskAlerts.rejected, (state, action) => { state.loading = false; state.error = action.error.message; }) // 处理fetchAIMarketAnalysis .addCase(fetchAIMarketAnalysis.pending, (state) => { state.loading = true; state.error = null; }) .addCase(fetchAIMarketAnalysis.fulfilled, (state, action) => { state.loading = false; state.aiAnalysis = action.payload; }) .addCase(fetchAIMarketAnalysis.rejected, (state, action) => { state.loading = false; state.error = action.error.message; }); } }); export const { selectFuture, clearSelectedFuture } = futuresSlice.actions; export default futuresSlice.reducer;