// 评委管理 API
|
|
import { API_CONFIG, graphqlRequest } from '../config/api.ts';
|
|
// GraphQL 查询语句
|
const GET_ALL_JUDGES_QUERY = `
|
query GetAllJudges {
|
judges {
|
id
|
name
|
description
|
title
|
company
|
phone
|
gender
|
specialties {
|
id
|
name
|
code
|
}
|
avatarUrl
|
}
|
}
|
`;
|
|
const GET_JUDGE_QUERY = `
|
query GetJudge($id: ID!) {
|
judge(id: $id) {
|
id
|
name
|
description
|
title
|
company
|
phone
|
gender
|
specialties {
|
id
|
name
|
code
|
}
|
avatarUrl
|
}
|
}
|
`;
|
|
const SAVE_JUDGE_MUTATION = `
|
mutation SaveJudge($input: JudgeInput!) {
|
saveJudge(input: $input) {
|
id
|
name
|
phone
|
gender
|
description
|
}
|
}
|
`;
|
|
const DELETE_JUDGE_MUTATION = `
|
mutation DeleteJudge($id: ID!) {
|
deleteJudge(id: $id)
|
}
|
`;
|
|
const GET_TAGS_QUERY = `
|
query GetTags {
|
tags {
|
id
|
name
|
code
|
category
|
}
|
}
|
`;
|
|
const GET_TAGS_BY_CATEGORY_QUERY = `
|
query GetTagsByCategory($category: String!) {
|
tagsByCategory(category: $category) {
|
id
|
name
|
code
|
}
|
}
|
`;
|
|
const SAVE_MEDIA_MUTATION = `
|
mutation SaveMedia($input: MediaInput!) {
|
saveMedia(input: $input) {
|
id
|
name
|
path
|
fullUrl
|
}
|
}
|
`;
|
|
// 使用统一的GraphQL请求函数
|
|
// API 函数
|
export const getAllJudges = async () => {
|
const result = await graphqlRequest(GET_ALL_JUDGES_QUERY);
|
return result.data.judges;
|
};
|
|
export const getJudge = async (id) => {
|
const result = await graphqlRequest(GET_JUDGE_QUERY, { id });
|
return result.data.judge;
|
};
|
|
// JudgeApi 对象
|
export const JudgeApi = {
|
// 获取所有评委
|
getJudges: async () => {
|
const result = await graphqlRequest(GET_ALL_JUDGES_QUERY);
|
return result.data.judges || [];
|
},
|
|
// 获取单个评委
|
getJudge: async (id) => {
|
const result = await graphqlRequest(GET_JUDGE_QUERY, { id });
|
return result.data.judge;
|
},
|
|
// 搜索评委
|
searchJudges: async (name) => {
|
const result = await graphqlRequest(`
|
query SearchJudges($name: String!) {
|
searchJudges(name: $name) { id name title company }
|
}
|
`, { name });
|
return result.data.searchJudges || [];
|
},
|
|
// 保存评委
|
saveJudge: async (input) => {
|
const result = await graphqlRequest(SAVE_JUDGE_MUTATION, { input });
|
return result.data.saveJudge;
|
},
|
|
// 删除评委
|
deleteJudge: async (id) => {
|
const result = await graphqlRequest(DELETE_JUDGE_MUTATION, { id });
|
return result.data.deleteJudge;
|
},
|
|
// 获取所有标签
|
getTags: async () => {
|
const result = await graphqlRequest(GET_TAGS_QUERY);
|
return result.data.tags || [];
|
},
|
|
// 根据类别获取标签
|
getTagsByCategory: async (category) => {
|
const result = await graphqlRequest(GET_TAGS_BY_CATEGORY_QUERY, { category });
|
return result.data.tagsByCategory || [];
|
},
|
|
// 保存媒体
|
saveMedia: async (input) => {
|
const result = await graphqlRequest(SAVE_MEDIA_MUTATION, { input });
|
return result.data.saveMedia;
|
}
|
};
|
|
// COS上传服务(暂时为空,可以后续实现)
|
export const CosUploadService = {
|
uploadFile: async (file) => {
|
// 这里可以实现COS上传逻辑
|
throw new Error('COS上传功能暂未实现');
|
}
|
};
|