// 比赛管理 API import { API_CONFIG, graphqlRequest } from '@/config/api' // GraphQL 查询语句 const GET_ACTIVITIES_QUERY = ` query GetActivities($page: Int!, $size: Int!, $name: String, $state: Int) { activities(page: $page, size: $size, name: $name, state: $state) { content { id name description signupDeadline matchTime address playerCount playerMax state stateName createTime updateTime } totalElements page size } } ` const GET_ACTIVITY_QUERY = ` query GetActivity($id: ID!) { activity(id: $id) { id pid name description signupDeadline matchTime address ratingSchemeId playerCount playerMax state stateName createTime updateTime ratingScheme { id name totalScore } stages { id name description matchTime address ratingSchemeId playerCount playerMax state stateName sortOrder ratingScheme { id name } } judges { id name phone description stageIds } } } ` const GET_ALL_ACTIVITIES_QUERY = ` query GetAllActivities { allActivities { id pid name state stateName sortOrder playerCount parent { id name } } } ` const SAVE_ACTIVITY_MUTATION = ` mutation SaveActivity($input: ActivityInput!) { saveActivity(input: $input) { id name description signupDeadline matchTime address ratingSchemeId playerMax state stateName } } ` const DELETE_ACTIVITY_MUTATION = ` mutation DeleteActivity($id: ID!) { deleteActivity(id: $id) } ` const UPDATE_ACTIVITY_STATE_MUTATION = ` mutation UpdateActivityState($id: ID!, $state: Int!) { updateActivityState(id: $id, state: $state) } ` // API 函数 export const getActivities = async (page = 0, size = 10, name = '', state) => { try { const variables = { page, size, name } if (state !== undefined && state !== null && state !== '') { variables.state = Number(state) } const result = await graphqlRequest(GET_ACTIVITIES_QUERY, variables) return result.data.activities } catch (error) { console.error('获取比赛列表失败:', error) throw new Error(error && error.message ? error.message : '获取比赛列表失败') } } export const getActivity = async (id) => { try { const result = await graphqlRequest(GET_ACTIVITY_QUERY, { id }) return result.data.activity } catch (error) { throw new Error(error && error.message ? error.message : '获取比赛详情失败') } } export const getAllActivities = async () => { try { const result = await graphqlRequest(GET_ALL_ACTIVITIES_QUERY) return result.data.allActivities } catch (error) { console.error('获取所有比赛失败:', error) throw new Error(error && error.message ? error.message : '获取所有比赛失败') } } export const saveActivity = async (activityData) => { try { const data = await graphqlRequest(SAVE_ACTIVITY_MUTATION, { input: activityData }) return data.data.saveActivity } catch (error) { console.error('保存比赛失败:', error) throw new Error(error && error.message ? error.message : '保存比赛失败') } } export const deleteActivity = async (id) => { try { const data = await graphqlRequest(DELETE_ACTIVITY_MUTATION, { id }) return data.data.deleteActivity } catch (error) { throw new Error(error && error.message ? error.message : '删除比赛失败') } } export const updateActivityState = async (id, state) => { try { const data = await graphqlRequest(UPDATE_ACTIVITY_STATE_MUTATION, { id, state }) return data.data.updateActivityState } catch (error) { throw new Error(error && error.message ? error.message : '更新比赛状态失败') } }