DCFronted/src/api/tournament.js
2025-06-02 21:06:39 +08:00

287 lines
9.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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('报名失败,请检查网络连接后重试')
}
}