重构赛事信息(修改树状图前)

This commit is contained in:
2025-07-31 00:17:22 +08:00
parent 0274eb5407
commit 605d60ec7e
7 changed files with 777 additions and 991 deletions

View File

@@ -3,239 +3,225 @@ import axiosInstance from './axiosConfig';
/**
* 添加赛事
* @param {Object} tournamentData - 赛事数据
* @param {string} tournamentData.name - 赛事名称
* @param {string} tournamentData.format - 赛事类型(single, double, count)
* @param {number} tournamentData.id - 数据库中id
* @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} 返回添加赛事的响应数据
* @returns {Promise<Object>} 返回添加赛事的响应数据
*/
export const addTournament = async (tournamentData) => {
try {
const response = await axiosInstance.post('/tournament/add', tournamentData)
return response.data
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
console.error('添加赛事失败:', error);
throw error;
}
}
};
/**
* 获取赛事列表
* @returns {Promise} 返回赛事列表数据
* @returns {Promise<Array<Object>>} 返回赛事列表数据
*/
export const getTournamentList = async () => {
try {
const response = await axiosInstance.get('/tournament/getlist')
return response.data
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
console.error('获取赛事列表失败:', error);
throw error;
}
}
};
// 更新赛事
export const updateTournament = async (id, data) => {
/**
* 更新赛事
* @param {number} id - 赛事ID
* @param {Object} tournamentData - 赛事数据
* @param {number} tournamentData.id - 数据库中id
* @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<Object>} 返回更新赛事的响应数据
*/
export const updateTournament = async (id, tournamentData) => {
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
const response = await axiosInstance.put(`/tournament/update/${id}`, tournamentData);
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
console.error('更新赛事失败:', error);
throw error;
}
}
};
// 删除赛事
/**
* 删除赛事
* @param {number} id - 赛事ID
* @returns {Promise<Object>} 返回删除赛事的响应数据
*/
export const deleteTournament = async (id) => {
try {
const response = await axiosInstance.delete(`/tournament/delete/${id}`)
return response.data
const response = await axiosInstance.delete(`/tournament/delete/${id}`);
return response.data;
} catch (error) {
console.error('删除赛事失败:', error)
throw error
console.error('删除赛事失败:', error);
throw error;
}
}
};
// 添加报名结果
export const addSignUpResult = async (data) => {
/**
* 添加玩家报名
* @param {Object} signupData - 报名数据
* @param {number} signupData.id - 数据库中id
* @param {string} signupData.type - 类型
* @param {string} signupData.teamname - 队伍名称
* @param {string} signupData.faction - 阵营(allied、soviet、empire、ob、voice、random)
* @param {string} signupData.username - 用户名
* @param {string} signupData.qq - QQ号
* @returns {Promise<Object>} 返回添加报名的响应数据
*/
export const addSignUp = async (signupData) => {
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
const response = await axiosInstance.post('/tournament/signup/add', signupData);
return response.data;
} catch (error) {
console.error('请求错误:', error)
if (error.response?.data?.detail) {
throw new Error(error.response.data.detail)
}
throw error
console.error('添加报名失败:', error);
throw error;
}
}
};
// 获取参赛结果列表
/**
* 获取玩家报名列表
* @returns {Promise<Array<Object>>} 返回报名列表数据
*/
export const getSignUpList = async () => {
try {
const response = await axiosInstance.get('/tournament/signup/getlist');
return response.data;
} catch (error) {
console.error('获取报名列表失败:', error);
throw error;
}
};
/**
* 更新玩家报名
* @param {number} id - 报名ID
* @param {Object} signupData - 报名数据
* @param {number} signupData.id - 数据库中id
* @param {string} signupData.type - 类型
* @param {string} signupData.teamname - 队伍名称
* @param {string} signupData.faction - 阵营(allied、soviet、empire、ob、voice、random)
* @param {string} signupData.username - 用户名
* @param {string} signupData.qq - QQ号
* @returns {Promise<Object>} 返回更新报名的响应数据
*/
export const updateSignUp = async (id, signupData) => {
try {
const response = await axiosInstance.put(`/tournament/signup/update/${id}`, signupData);
return response.data;
} catch (error) {
console.error('更新报名失败:', error);
throw error;
}
};
/**
* 删除玩家报名
* @param {number} id - 报名ID
* @returns {Promise<Object>} 返回删除报名的响应数据
*/
export const deleteSignUp = async (id) => {
try {
const response = await axiosInstance.delete(`/tournament/signup/delete/${id}`);
return response.data;
} catch (error) {
console.error('删除报名失败:', error);
throw error;
}
};
/**
* 添加报名结果
* @param {Object} resultData - 结果数据
* @param {number} resultData.tournament_id - 赛事id(int)
* @param {string} resultData.tournament_name - 赛事名称
* @param {string} resultData.team_name - 队伍名称(可选)
* @param {string} resultData.sign_name - 参赛人员名称
* @param {string} resultData.win - 参赛人员胜利局数(str)
* @param {string} resultData.lose - 参赛人员失败局数(str)
* @param {string} resultData.status - 参赛人员对局状态(win,lose,tie)
* @param {string} resultData.round - 轮数(str)
* @param {string} resultData.rival_name - 对方name(str)
* @returns {Promise<Object>} 返回添加报名结果的响应数据
*/
export const addSignUpResult = async (resultData) => {
try {
const response = await axiosInstance.post('/tournament/signup_result/add', resultData);
return response.data;
} catch (error) {
console.error('添加报名结果失败:', error);
throw error;
}
};
/**
* 获取报名结果列表
* @returns {Promise<Array<Object>>} 返回报名结果列表数据
*/
export const getSignUpResultList = async () => {
try {
const response = await axiosInstance.get('/tournament/signup_result/getlist')
return response.data
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
console.error('获取报名结果列表失败:', error);
throw error;
}
}
};
// 更新参赛结果
export const updateSignUpResult = async (id, data) => {
/**
* 更新报名结果
* @param {number} id - 结果ID
* @param {Object} resultData - 结果数据
* @param {number} resultData.tournament_id - 赛事id(int)
* @param {string} resultData.tournament_name - 赛事名称
* @param {string} resultData.team_name - 队伍名称(可选)
* @param {string} resultData.sign_name - 参赛人员名称
* @param {string} resultData.win - 参赛人员胜利局数(str)
* @param {string} resultData.lose - 参赛人员失败局数(str)
* @param {string} resultData.status - 参赛人员对局状态(win,lose,tie)
* @param {string} resultData.round - 轮数(str)
* @param {string} resultData.rival_name - 对方name(str)
* @returns {Promise<Object>} 返回更新报名结果的响应数据
*/
export const updateSignUpResult = async (id, resultData) => {
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 }
const response = await axiosInstance.put(`/tournament/signup_result/update/${id}`, resultData);
return response.data;
} catch (error) {
console.error('更新参赛结果失败:', {
status: error.response?.status,
data: error.response?.data,
message: error.message
})
throw error
console.error('更新报名结果失败:', error);
throw error;
}
}
};
// 删除参赛选手
/**
* 删除报名结果
* @param {number} id - 结果ID
* @returns {Promise<Object>} 返回删除报名结果的响应数据
*/
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 }
const response = await axiosInstance.delete(`/tournament/signup_result/delete/${id}`);
return response.data;
} catch (error) {
console.error('删除参赛选手失败:', {
status: error.response?.status,
data: error.response?.data,
message: error.message
})
throw error
console.error('删除报名结果失败:', error);
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('报名失败,请检查网络连接后重试')
}
}
};