import {
|
mockActivityPlayerDetail,
|
mockRatingScheme,
|
mockCurrentJudgeInfo,
|
mockJudgeRatings,
|
mockCurrentJudgeRating,
|
mockAverageScore,
|
createMockResponse
|
} from './mockData.js'
|
|
const GRAPHQL_ENDPOINT = '/api/graphql'
|
|
// 模拟数据开关 - 设置为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}`)
|
}
|
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_DETAIL = `
|
query GetActivityPlayerDetail($id: ID!) {
|
activityPlayerDetail(id: $id) {
|
id
|
playerInfo {
|
id
|
name
|
phone
|
description
|
avatarUrl
|
}
|
regionInfo {
|
id
|
name
|
fullPath
|
}
|
activityName
|
description
|
submissionFiles {
|
id
|
name
|
url
|
fileExt
|
fileSize
|
mediaType
|
}
|
ratingForm {
|
schemeId
|
schemeName
|
items {
|
id
|
name
|
maxScore
|
orderNo
|
}
|
totalMaxScore
|
}
|
}
|
}
|
`
|
|
/**
|
* 获取比赛报名详情(用于评分)
|
*/
|
export function getActivityPlayerDetail(id) {
|
if (USE_MOCK_DATA) {
|
return Promise.resolve(createMockResponse({
|
activityPlayerDetail: mockActivityPlayerDetail
|
}))
|
}
|
return graphqlRequest(GET_ACTIVITY_PLAYER_DETAIL, { id })
|
}
|
|
const SAVE_ACTIVITY_PLAYER_RATING = `
|
mutation SaveActivityPlayerRating($input: ActivityPlayerRatingInput!) {
|
saveActivityPlayerRating(input: $input)
|
}
|
`
|
|
/**
|
* 保存比赛报名评分
|
*/
|
export function saveActivityPlayerRating(input) {
|
if (USE_MOCK_DATA) {
|
console.log('模拟保存评分数据:', input)
|
return Promise.resolve(createMockResponse({
|
saveActivityPlayerRating: true
|
}))
|
}
|
return graphqlRequest(SAVE_ACTIVITY_PLAYER_RATING, { input })
|
}
|
|
const GET_JUDGE_RATINGS_FOR_PLAYER = `
|
query GetJudgeRatingsForPlayer($activityPlayerId: ID!) {
|
judgeRatingsForPlayer(activityPlayerId: $activityPlayerId) {
|
judgeId
|
judgeName
|
totalScore
|
status
|
isCurrentJudge
|
}
|
}
|
`
|
|
/**
|
* 获取指定选手的所有评委评分状态
|
*/
|
export function getJudgeRatingsForPlayer(activityPlayerId) {
|
if (USE_MOCK_DATA) {
|
return Promise.resolve(createMockResponse({
|
judgeRatingsForPlayer: mockJudgeRatings
|
}))
|
}
|
return graphqlRequest(GET_JUDGE_RATINGS_FOR_PLAYER, { activityPlayerId })
|
}
|
|
const GET_CURRENT_JUDGE_RATING = `
|
query GetCurrentJudgeRating($activityPlayerId: ID!) {
|
currentJudgeRating(activityPlayerId: $activityPlayerId) {
|
id
|
totalScore
|
status
|
remark
|
items {
|
ratingItemId
|
ratingItemName
|
score
|
weightedScore
|
}
|
}
|
}
|
`
|
|
/**
|
* 获取当前评委对指定选手的评分
|
*/
|
export function getCurrentJudgeRating(activityPlayerId) {
|
if (USE_MOCK_DATA) {
|
return Promise.resolve(createMockResponse({
|
currentJudgeRating: mockCurrentJudgeRating
|
}))
|
}
|
return graphqlRequest(GET_CURRENT_JUDGE_RATING, { activityPlayerId })
|
}
|
|
const GET_AVERAGE_SCORE_FOR_PLAYER = `
|
query GetAverageScoreForPlayer($activityPlayerId: ID!) {
|
averageScoreForPlayer(activityPlayerId: $activityPlayerId)
|
}
|
`
|
|
/**
|
* 获取指定选手的平均分
|
*/
|
export function getAverageScoreForPlayer(activityPlayerId) {
|
if (USE_MOCK_DATA) {
|
return Promise.resolve(createMockResponse({
|
averageScoreForPlayer: mockAverageScore
|
}))
|
}
|
return graphqlRequest(GET_AVERAGE_SCORE_FOR_PLAYER, { activityPlayerId })
|
}
|
|
const GET_CURRENT_JUDGE_INFO = `
|
query GetCurrentJudgeInfo {
|
currentJudgeInfo {
|
id
|
name
|
phone
|
description
|
}
|
}
|
`
|
|
/**
|
* 获取当前评委信息
|
*/
|
export function getCurrentJudgeInfo() {
|
if (USE_MOCK_DATA) {
|
return Promise.resolve(createMockResponse({
|
currentJudgeInfo: mockCurrentJudgeInfo
|
}))
|
}
|
return graphqlRequest(GET_CURRENT_JUDGE_INFO)
|
}
|