lrj
1 天以前 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b
web/src/api/activityPlayer.js
@@ -8,25 +8,145 @@
  createMockResponse 
} from './mockData.js'
const GRAPHQL_ENDPOINT = '/api/graphql'
import { API_CONFIG, graphqlRequest } from '@/config/api'
// 模拟数据开关 - 设置为true时使用模拟数据
// 已切换到真实数据模式
const USE_MOCK_DATA = false
async function graphqlRequest(query, variables = {}) {
  const response = await fetch(GRAPHQL_ENDPOINT, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ query, variables })
  })
  if (!response.ok) {
    const text = await response.text()
    throw new Error(`HTTP ${response.status}: ${text}`)
// GraphQL查询语句
const GET_ACTIVITY_PLAYERS_QUERY = `
  query GetActivityPlayers($activityId: ID!, $page: Int!, $size: Int!, $name: String) {
    activityPlayers(activityId: $activityId, page: $page, size: $size, name: $name) {
      content {
        id
        playerId
        activityId
        signupTime
        state
        stateName
        player {
          id
          name
          phone
          regionId
          region {
            id
            name
          }
        }
      }
      totalElements
      page
      size
    }
  }
  const result = await response.json()
  if (result.errors) throw new Error(result.errors.map(e => e.message).join('\n'))
  return result.data
`
const GET_ACTIVITY_PLAYER_QUERY = `
  query GetActivityPlayer($id: ID!) {
    activityPlayer(id: $id) {
      id
      playerId
      activityId
      signupTime
      state
      stateName
      player {
        id
        name
        phone
        regionId
        region {
          id
          name
        }
      }
      activity {
        id
        name
        description
      }
      attachments {
        id
        fileName
        fileUrl
        fileSize
        uploadTime
      }
    }
  }
`
const SAVE_ACTIVITY_PLAYER_MUTATION = `
  mutation SaveActivityPlayer($input: ActivityPlayerInput!) {
    saveActivityPlayer(input: $input) {
      id
      playerId
      activityId
      signupTime
      state
      stateName
    }
  }
`
const DELETE_ACTIVITY_PLAYER_MUTATION = `
  mutation DeleteActivityPlayer($id: ID!) {
    deleteActivityPlayer(id: $id)
  }
`
// API函数
export const getActivityPlayers = async (activityId, page = 0, size = 10, name = '') => {
  if (USE_MOCK_DATA) {
    return mockActivityPlayers
  }
  try {
    const data = await graphqlRequest(GET_ACTIVITY_PLAYERS_QUERY, { activityId, page, size, name })
    return data.activityPlayers
  } catch (error) {
    throw new Error(error.message || '获取比赛报名列表失败')
  }
}
export const getActivityPlayer = async (id) => {
  if (USE_MOCK_DATA) {
    return mockActivityPlayerDetail
  }
  try {
    const data = await graphqlRequest(GET_ACTIVITY_PLAYER_QUERY, { id })
    return data.activityPlayer
  } catch (error) {
    throw new Error(error.message || '获取比赛报名详情失败')
  }
}
export const saveActivityPlayer = async (activityPlayerData) => {
  if (USE_MOCK_DATA) {
    return { ...activityPlayerData, id: Date.now().toString() }
  }
  try {
    const data = await graphqlRequest(SAVE_ACTIVITY_PLAYER_MUTATION, { input: activityPlayerData })
    return data.saveActivityPlayer
  } catch (error) {
    throw new Error(error.message || '保存比赛报名失败')
  }
}
export const deleteActivityPlayer = async (id) => {
  if (USE_MOCK_DATA) {
    return true
  }
  try {
    const data = await graphqlRequest(DELETE_ACTIVITY_PLAYER_MUTATION, { id })
    return data.deleteActivityPlayer
  } catch (error) {
    throw new Error(error.message || '删除比赛报名失败')
  }
}
const GET_ACTIVITY_PLAYER_DETAIL = `
@@ -46,11 +166,15 @@
        fullPath
      }
      activityName
      projectName
      description
      feedback
      state
      submissionFiles {
        id
        name
        url
        thumbUrl
        fileExt
        fileSize
        mediaType
@@ -193,4 +317,44 @@
    }))
  }
  return graphqlRequest(GET_CURRENT_JUDGE_INFO)
}
// 审核相关mutations
const APPROVE_ACTIVITY_PLAYER = `
  mutation ApproveActivityPlayer($activityPlayerId: ID!, $feedback: String) {
    approveActivityPlayer(activityPlayerId: $activityPlayerId, feedback: $feedback)
  }
`
const REJECT_ACTIVITY_PLAYER = `
  mutation RejectActivityPlayer($activityPlayerId: ID!, $feedback: String!) {
    rejectActivityPlayer(activityPlayerId: $activityPlayerId, feedback: $feedback)
  }
`
const UPDATE_PLAYER_FEEDBACK = `
  mutation UpdatePlayerFeedback($activityPlayerId: ID!, $feedback: String!) {
    updatePlayerFeedback(activityPlayerId: $activityPlayerId, feedback: $feedback)
  }
`
/**
 * 审核通过
 */
export function approveActivityPlayer(activityPlayerId, feedback = '') {
  return graphqlRequest(APPROVE_ACTIVITY_PLAYER, { activityPlayerId, feedback })
}
/**
 * 审核驳回
 */
export function rejectActivityPlayer(activityPlayerId, feedback) {
  return graphqlRequest(REJECT_ACTIVITY_PLAYER, { activityPlayerId, feedback })
}
/**
 * 更新审核意见
 */
export function updatePlayerFeedback(activityPlayerId, feedback) {
  return graphqlRequest(UPDATE_PLAYER_FEEDBACK, { activityPlayerId, feedback })
}