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 }) }