| | |
| | | // 比赛管理 API |
| | | |
| | | const GRAPHQL_ENDPOINT = 'http://localhost:8080/api/graphql'; |
| | | import { API_CONFIG, graphqlRequest } from '@/config/api' |
| | | |
| | | // GraphQL 查询语句 |
| | | const GET_ACTIVITIES_QUERY = ` |
| | | query GetActivities($page: Int!, $size: Int!, $name: String) { |
| | | activities(page: $page, size: $size, name: $name) { |
| | | query GetActivities($page: Int!, $size: Int!, $name: String, $state: Int) { |
| | | activities(page: $page, size: $size, name: $name, state: $state) { |
| | | content { |
| | | id |
| | | name |
| | |
| | | signupDeadline |
| | | matchTime |
| | | address |
| | | playerCount |
| | | playerMax |
| | | state |
| | | stateName |
| | | playerCount |
| | | createTime |
| | | ratingScheme { |
| | | id |
| | | name |
| | | } |
| | | updateTime |
| | | } |
| | | totalElements |
| | | page |
| | | size |
| | | } |
| | | } |
| | | `; |
| | | ` |
| | | |
| | | const GET_ACTIVITY_QUERY = ` |
| | | query GetActivity($id: ID!) { |
| | |
| | | matchTime |
| | | address |
| | | ratingSchemeId |
| | | playerCount |
| | | playerMax |
| | | state |
| | | stateName |
| | |
| | | matchTime |
| | | address |
| | | ratingSchemeId |
| | | playerCount |
| | | playerMax |
| | | state |
| | | stateName |
| | | sortOrder |
| | | ratingScheme { |
| | | id |
| | | name |
| | |
| | | } |
| | | } |
| | | } |
| | | `; |
| | | ` |
| | | |
| | | const GET_ALL_ACTIVITIES_QUERY = ` |
| | | query GetAllActivities { |
| | |
| | | name |
| | | state |
| | | stateName |
| | | sortOrder |
| | | playerCount |
| | | parent { |
| | | id |
| | | name |
| | | } |
| | | } |
| | | } |
| | | `; |
| | | ` |
| | | |
| | | const SAVE_ACTIVITY_MUTATION = ` |
| | | mutation SaveActivity($input: ActivityInput!) { |
| | |
| | | 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 = '') => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: GET_ACTIVITIES_QUERY, |
| | | variables: { page, size, name } |
| | | }) |
| | | }); |
| | | export const getActivities = async (page = 0, size = 10, name = '', state) => { |
| | | try { |
| | | const variables = { |
| | | page, |
| | | size, |
| | | name |
| | | } |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | 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 : '获取比赛列表失败') |
| | | } |
| | | return result.data.activities; |
| | | }; |
| | | } |
| | | |
| | | export const getActivity = async (id) => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: GET_ACTIVITY_QUERY, |
| | | variables: { id } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const result = await graphqlRequest(GET_ACTIVITY_QUERY, { id }) |
| | | return result.data.activity |
| | | } catch (error) { |
| | | throw new Error(error && error.message ? error.message : '获取比赛详情失败') |
| | | } |
| | | return result.data.activity; |
| | | }; |
| | | } |
| | | |
| | | export const getAllActivities = async () => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: GET_ALL_ACTIVITIES_QUERY |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | 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 : '获取所有比赛失败') |
| | | } |
| | | return result.data.allActivities; |
| | | }; |
| | | } |
| | | |
| | | export const saveActivity = async (activityData) => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: SAVE_ACTIVITY_MUTATION, |
| | | variables: { input: activityData } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | 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 : '保存比赛失败') |
| | | } |
| | | return result.data.saveActivity; |
| | | }; |
| | | } |
| | | |
| | | export const deleteActivity = async (id) => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: DELETE_ACTIVITY_MUTATION, |
| | | variables: { id } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const data = await graphqlRequest(DELETE_ACTIVITY_MUTATION, { id }) |
| | | return data.data.deleteActivity |
| | | } catch (error) { |
| | | throw new Error(error && error.message ? error.message : '删除比赛失败') |
| | | } |
| | | return result.data.deleteActivity; |
| | | }; |
| | | } |
| | | |
| | | 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 : '更新比赛状态失败') |
| | | } |
| | | } |