web/src/api/judge.js
@@ -1,6 +1,6 @@
// 评委管理 API
const GRAPHQL_ENDPOINT = 'http://localhost:8080/api/graphql';
import { API_CONFIG, graphqlRequest } from '../config/api.ts';
// GraphQL 查询语句
const GET_ALL_JUDGES_QUERY = `
@@ -93,88 +93,71 @@
  }
`;
// GraphQL 请求函数
const graphqlRequest = async (query, variables = {}) => {
  const response = await fetch(GRAPHQL_ENDPOINT, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      query,
      variables
    })
  });
  const result = await response.json();
  if (result.errors) {
    throw new Error(result.errors[0].message);
  }
  return result.data;
};
// 使用统一的GraphQL请求函数
// API 函数
export const getAllJudges = async () => {
  const data = await graphqlRequest(GET_ALL_JUDGES_QUERY);
  return data.judges || [];
  const result = await graphqlRequest(GET_ALL_JUDGES_QUERY);
  return result.data.judges;
};
export const getJudge = async (id) => {
  const data = await graphqlRequest(GET_JUDGE_QUERY, { id });
  return data.judge;
  const result = await graphqlRequest(GET_JUDGE_QUERY, { id });
  return result.data.judge;
};
// JudgeApi 对象
export const JudgeApi = {
  // 获取所有评委
  getJudges: async () => {
    const data = await graphqlRequest(GET_ALL_JUDGES_QUERY);
    return data.judges || [];
    const result = await graphqlRequest(GET_ALL_JUDGES_QUERY);
    return result.data.judges || [];
  },
  // 获取单个评委
  getJudge: async (id) => {
    const data = await graphqlRequest(GET_JUDGE_QUERY, { id });
    return data.judge;
    const result = await graphqlRequest(GET_JUDGE_QUERY, { id });
    return result.data.judge;
  },
  // 搜索评委
  searchJudges: async (name) => {
    // 先获取所有评委,然后在客户端过滤(实际项目中应该在后端实现)
    const judges = await JudgeApi.getJudges();
    return judges.filter(judge =>
      judge.name && judge.name.toLowerCase().includes(name.toLowerCase())
    );
    const result = await graphqlRequest(`
      query SearchJudges($name: String!) {
        searchJudges(name: $name) { id name title company }
      }
    `, { name });
    return result.data.searchJudges || [];
  },
  // 保存评委
  saveJudge: async (input) => {
    const data = await graphqlRequest(SAVE_JUDGE_MUTATION, { input });
    return data.saveJudge;
    const result = await graphqlRequest(SAVE_JUDGE_MUTATION, { input });
    return result.data.saveJudge;
  },
  // 删除评委
  deleteJudge: async (id) => {
    const data = await graphqlRequest(DELETE_JUDGE_MUTATION, { id });
    return data.deleteJudge;
    const result = await graphqlRequest(DELETE_JUDGE_MUTATION, { id });
    return result.data.deleteJudge;
  },
  // 获取所有标签
  getTags: async () => {
    const data = await graphqlRequest(GET_TAGS_QUERY);
    return data.tags || [];
    const result = await graphqlRequest(GET_TAGS_QUERY);
    return result.data.tags || [];
  },
  // 根据类别获取标签
  getTagsByCategory: async (category) => {
    const data = await graphqlRequest(GET_TAGS_BY_CATEGORY_QUERY, { category });
    return data.tagsByCategory || [];
    const result = await graphqlRequest(GET_TAGS_BY_CATEGORY_QUERY, { category });
    return result.data.tagsByCategory || [];
  },
  // 保存媒体
  saveMedia: async (input) => {
    const data = await graphqlRequest(SAVE_MEDIA_MUTATION, { input });
    return data.saveMedia;
    const result = await graphqlRequest(SAVE_MEDIA_MUTATION, { input });
    return result.data.saveMedia;
  }
};