forked from 77media/video-flow
67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import { BASE_URL } from "./constants";
|
|
|
|
// 获取路演配置数据
|
|
export const fetchRoadshowConfigs = async () => {
|
|
const controller = new AbortController();
|
|
const timeoutId = setTimeout(() => controller.abort(), 10000); // 10秒超时
|
|
|
|
try {
|
|
console.log('开始请求接口数据...');
|
|
const response = await fetch(BASE_URL + '/serversetting/roadshow-configs', {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify({}),
|
|
signal: controller.signal,
|
|
});
|
|
|
|
clearTimeout(timeoutId);
|
|
|
|
if (!response.ok) {
|
|
throw new Error(`接口请求失败: HTTP ${response.status} - ${response.statusText}`);
|
|
}
|
|
|
|
const result = await response.json();
|
|
console.log('接口返回数据:', result);
|
|
|
|
// 验证返回数据格式
|
|
if (result.code !== 0) {
|
|
throw new Error(`接口错误: ${result.message || '未知错误'} (code: ${result.code})`);
|
|
}
|
|
|
|
if (!result.successful) {
|
|
throw new Error(`接口调用不成功: ${result.message || '未知原因'}`);
|
|
}
|
|
|
|
if (!result.data || !Array.isArray(result.data) || result.data.length === 0) {
|
|
throw new Error('接口返回数据格式错误或为空');
|
|
}
|
|
|
|
// 验证数据结构
|
|
let validData: any[] = [];
|
|
result.data.forEach((item: any) => {
|
|
if (item) {
|
|
validData.push(JSON.parse(item));
|
|
}
|
|
});
|
|
|
|
if (validData.length === 0) {
|
|
throw new Error('接口返回的数据格式不正确');
|
|
}
|
|
|
|
console.log('成功获取并验证接口数据:', validData);
|
|
return validData;
|
|
|
|
} catch (error: unknown) {
|
|
clearTimeout(timeoutId);
|
|
|
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
throw new Error('接口请求超时,请检查网络连接');
|
|
}
|
|
|
|
console.error('接口请求失败:', error);
|
|
throw error;
|
|
}
|
|
};
|