import {
|
mockActivityPlayerDetail,
|
mockRatingScheme,
|
mockCurrentJudgeInfo,
|
mockJudgeRatings,
|
mockCurrentJudgeRating,
|
mockAverageScore,
|
createMockResponse
|
} from './mockData.js'
|
|
import { API_CONFIG, graphqlRequest } from '@/config/api'
|
|
// 模拟数据开关 - 设置为true时使用模拟数据
|
const USE_MOCK_DATA = false
|
|
// 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 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 = `
|
query GetActivityPlayerDetail($id: ID!) {
|
activityPlayerDetail(id: $id) {
|
id
|
playerInfo {
|
id
|
name
|
phone
|
description
|
avatarUrl
|
}
|
regionInfo {
|
id
|
name
|
fullPath
|
}
|
activityName
|
projectName
|
description
|
feedback
|
state
|
submissionFiles {
|
id
|
name
|
url
|
thumbUrl
|
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)
|
}
|
|
// 审核相关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 })
|
}
|