287 lines
9.1 KiB
JavaScript
287 lines
9.1 KiB
JavaScript
import axiosInstance from './axiosConfig';
|
||
|
||
// const API_BASE_URL = 'http://zybdatasupport.online:8000' // 不再需要
|
||
|
||
// // 创建 axios 实例 // 不再需要
|
||
// const axiosInstance = axios.create({
|
||
// baseURL: API_BASE_URL,
|
||
// headers: {
|
||
// 'Content-Type': 'application/json',
|
||
// 'Accept': 'application/json',
|
||
// 'X-Requested-With': 'XMLHttpRequest'
|
||
// },
|
||
// timeout: 10000
|
||
// })
|
||
|
||
// // 设置请求拦截器,自动添加 token // 不再需要
|
||
// axiosInstance.interceptors.request.use(
|
||
// config => {
|
||
// const token = localStorage.getItem('access_token')
|
||
// if (token) {
|
||
// config.headers.Authorization = `Bearer ${token}`
|
||
// }
|
||
// return config
|
||
// },
|
||
// error => {
|
||
// return Promise.reject(error)
|
||
// }
|
||
// )
|
||
|
||
// // 添加响应拦截器 // 不再需要
|
||
// axiosInstance.interceptors.response.use(
|
||
// response => response,
|
||
// error => {
|
||
// if (error.response) {
|
||
// console.error('请求错误:', {
|
||
// status: error.response.status,
|
||
// data: error.response.data,
|
||
// config: error.config
|
||
// })
|
||
// } else if (error.request) {
|
||
// console.error('网络错误:', error.request)
|
||
// } else {
|
||
// console.error('请求配置错误:', error.message)
|
||
// }
|
||
// return Promise.reject(error)
|
||
// }
|
||
// )
|
||
|
||
/**
|
||
* 添加赛事
|
||
* @param {Object} tournamentData - 赛事数据
|
||
* @param {string} tournamentData.name - 赛事名称
|
||
* @param {string} tournamentData.format - 赛事类型(single, double, count)
|
||
* @param {string} tournamentData.organizer - 组织者
|
||
* @param {string} tournamentData.qq_code - QQ号
|
||
* @param {string} tournamentData.status - 状态(prepare, finish, starting)
|
||
* @param {string} tournamentData.start_time - 开始时间(格式年/月/日,例2025/05/24)
|
||
* @param {string} tournamentData.end_time - 结束时间(格式年/月/日,例2025/05/24)
|
||
* @returns {Promise} 返回添加赛事的响应数据
|
||
*/
|
||
export const addTournament = async (tournamentData) => {
|
||
try {
|
||
const response = await axiosInstance.post('/tournament/add', tournamentData)
|
||
return response.data
|
||
} catch (error) {
|
||
console.error('添加赛事失败:', {
|
||
status: error.response?.status,
|
||
data: error.response?.data,
|
||
message: error.message
|
||
})
|
||
throw error
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取赛事列表
|
||
* @returns {Promise} 返回赛事列表数据
|
||
*/
|
||
export const getTournamentList = async () => {
|
||
try {
|
||
const response = await axiosInstance.get('/tournament/getlist')
|
||
return response.data
|
||
} catch (error) {
|
||
console.error('获取赛事列表失败:', {
|
||
status: error.response?.status,
|
||
data: error.response?.data,
|
||
message: error.message
|
||
})
|
||
throw error
|
||
}
|
||
}
|
||
|
||
|
||
// 更新赛事
|
||
export const updateTournament = async (id, data) => {
|
||
try {
|
||
console.log('更新赛事,发送数据:', data)
|
||
const response = await axiosInstance.put(`/tournament/update/${id}`, {
|
||
name: data.name,
|
||
format: data.format,
|
||
organizer: data.organizer,
|
||
qq_code: data.qq_code,
|
||
start_time: data.start_time,
|
||
end_time: data.end_time,
|
||
status: data.status
|
||
})
|
||
return response.data
|
||
} catch (error) {
|
||
console.error('更新赛事失败:', error)
|
||
if (error.response) {
|
||
console.error('错误详情:', {
|
||
status: error.response.status,
|
||
data: error.response.data,
|
||
headers: error.response.headers,
|
||
config: error.config
|
||
})
|
||
// 如果有详细的错误信息,抛出它
|
||
if (error.response.data?.detail) {
|
||
throw new Error(error.response.data.detail)
|
||
}
|
||
}
|
||
throw error
|
||
}
|
||
}
|
||
|
||
// 删除赛事
|
||
export const deleteTournament = async (id) => {
|
||
try {
|
||
const response = await axiosInstance.delete(`/tournament/delete/${id}`)
|
||
return response.data
|
||
} catch (error) {
|
||
console.error('删除赛事失败:', error)
|
||
throw error
|
||
}
|
||
}
|
||
|
||
|
||
// 添加报名结果
|
||
export const addSignUpResult = async (data) => {
|
||
try {
|
||
const response = await axiosInstance.post('/tournament/signup_result/add', {
|
||
tournament_id: parseInt(data.tournament_id),
|
||
tournament_name: data.tournament_name,
|
||
team_name: data.team_name,
|
||
sign_name: data.sign_name.trim(),
|
||
win: '0',
|
||
lose: '0',
|
||
status: 'tie'
|
||
})
|
||
return response.data
|
||
} catch (error) {
|
||
console.error('请求错误:', error)
|
||
if (error.response?.data?.detail) {
|
||
throw new Error(error.response.data.detail)
|
||
}
|
||
throw error
|
||
}
|
||
}
|
||
|
||
// 获取参赛结果列表
|
||
export const getSignUpResultList = async () => {
|
||
try {
|
||
const response = await axiosInstance.get('/tournament/signup_result/getlist')
|
||
return response.data
|
||
} catch (error) {
|
||
console.error('获取参赛结果列表失败:', {
|
||
status: error.response?.status,
|
||
data: error.response?.data,
|
||
message: error.message
|
||
})
|
||
throw error
|
||
}
|
||
}
|
||
|
||
// 更新参赛结果
|
||
export const updateSignUpResult = async (id, data) => {
|
||
try {
|
||
// // 更新报名信息 (这部分逻辑根据您的要求被注释掉)
|
||
// console.log('更新报名信息...')
|
||
// await axiosInstance.put(`/tournament/signup/update/${id}`, {
|
||
// tournament_id: parseInt(data.tournament_id),
|
||
// type: data.team_name ? 'teamname' : 'individual',
|
||
// teamname: data.team_name || '',
|
||
// faction: data.faction || 'random',
|
||
// username: data.sign_name,
|
||
// qq: data.qq || ''
|
||
// })
|
||
// console.log('报名信息更新成功')
|
||
|
||
// 更新报名结果
|
||
console.log('更新报名结果...')
|
||
await axiosInstance.put(`/tournament/signup_result/update/${id}`, {
|
||
tournament_id: parseInt(data.tournament_id),
|
||
tournament_name: data.tournament_name,
|
||
team_name: data.team_name || null,
|
||
sign_name: data.sign_name,
|
||
win: data.win || '0',
|
||
lose: data.lose || '0',
|
||
status: data.status || 'tie'
|
||
})
|
||
console.log('报名结果更新成功')
|
||
|
||
return { success: true }
|
||
} catch (error) {
|
||
console.error('更新参赛结果失败:', {
|
||
status: error.response?.status,
|
||
data: error.response?.data,
|
||
message: error.message
|
||
})
|
||
throw error
|
||
}
|
||
}
|
||
|
||
// 删除参赛选手
|
||
export const deleteSignUpResult = async (id) => {
|
||
try {
|
||
// 删除报名结果
|
||
console.log('删除报名结果...')
|
||
await axiosInstance.delete(`/tournament/signup_result/delete/${id}`)
|
||
console.log('报名结果删除成功')
|
||
|
||
// // 删除报名信息 (这部分逻辑根据您的要求被注释掉)
|
||
// console.log('删除报名信息...')
|
||
// await axiosInstance.delete(`/tournament/signup/delete/${id}`)
|
||
// console.log('报名信息删除成功')
|
||
|
||
return { success: true }
|
||
} catch (error) {
|
||
console.error('删除参赛选手失败:', {
|
||
status: error.response?.status,
|
||
data: error.response?.data,
|
||
message: error.message
|
||
})
|
||
throw error
|
||
}
|
||
}
|
||
|
||
// 添加报名
|
||
export const addSignUp = async (data) => {
|
||
try {
|
||
console.log('开始报名流程,数据:', data)
|
||
|
||
// 调用报名 API
|
||
console.log('调用报名 API...')
|
||
await axiosInstance.post('/tournament/signup/add', {
|
||
tournament_id: data.id,
|
||
type: data.type,
|
||
teamname: data.team_name || '',
|
||
faction: data.faction || 'random',
|
||
username: data.sign_name,
|
||
qq: data.qq || ''
|
||
})
|
||
console.log('报名 API 调用成功')
|
||
|
||
// 调用报名结果 API
|
||
console.log('调用报名结果 API...')
|
||
await axiosInstance.post('/tournament/signup_result/add', {
|
||
tournament_id: data.id,
|
||
tournament_name: data.tournament_name,
|
||
team_name: data.team_name || null,
|
||
sign_name: data.sign_name,
|
||
win: '0',
|
||
lose: '0',
|
||
status: 'tie'
|
||
})
|
||
console.log('报名结果 API 调用成功')
|
||
|
||
return {
|
||
signup: { success: true },
|
||
result: { success: true }
|
||
}
|
||
} catch (error) {
|
||
console.error('报名请求错误:', {
|
||
message: error.message,
|
||
response: error.response?.data,
|
||
status: error.response?.status,
|
||
config: error.config
|
||
})
|
||
|
||
// 如果是服务器返回的错误信息,直接使用
|
||
if (error.response?.data?.detail) {
|
||
throw new Error(error.response.data.detail)
|
||
}
|
||
// 其他错误,包装成更友好的错误信息
|
||
throw new Error('报名失败,请检查网络连接后重试')
|
||
}
|
||
}
|