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