// 媒体查询 API
|
const GRAPHQL_ENDPOINT = 'http://localhost:8080/api/graphql';
|
|
const MEDIAS_BY_TARGET_QUERY = `
|
query MediasByTarget($targetType: Int!, $targetId: ID!) {
|
mediasByTarget(targetType: $targetType, targetId: $targetId) {
|
id
|
name
|
path
|
fileExt
|
mediaType
|
fullUrl
|
}
|
}
|
`;
|
|
const SAVE_MEDIA_MUTATION = `
|
mutation SaveMedia($input: MediaInput!) {
|
saveMedia(input: $input) {
|
id
|
name
|
path
|
fileExt
|
mediaType
|
fullUrl
|
targetType
|
targetId
|
}
|
}
|
`;
|
|
const DELETE_MEDIA_MUTATION = `
|
mutation DeleteMedia($id: ID!) {
|
deleteMedia(id: $id)
|
}
|
`;
|
|
export const getMediasByTarget = async (targetType, targetId) => {
|
const res = await fetch(GRAPHQL_ENDPOINT, {
|
method: 'POST',
|
headers: { 'Content-Type': 'application/json' },
|
body: JSON.stringify({
|
query: MEDIAS_BY_TARGET_QUERY,
|
variables: { targetType, targetId }
|
})
|
});
|
const result = await res.json();
|
if (result.errors) {
|
throw new Error(result.errors[0].message);
|
}
|
return result.data.mediasByTarget || [];
|
};
|
|
export const saveMedia = async (input) => {
|
const res = await fetch(GRAPHQL_ENDPOINT, {
|
method: 'POST',
|
headers: { 'Content-Type': 'application/json' },
|
body: JSON.stringify({
|
query: SAVE_MEDIA_MUTATION,
|
variables: { input }
|
})
|
});
|
const result = await res.json();
|
if (result.errors) {
|
throw new Error(result.errors[0].message);
|
}
|
return result.data.saveMedia;
|
};
|
|
export const deleteMedia = async (id) => {
|
console.log('=== deleteMedia API调用 ===');
|
console.log('要删除的媒体ID:', id);
|
console.log('GraphQL查询:', DELETE_MEDIA_MUTATION);
|
|
const res = await fetch(GRAPHQL_ENDPOINT, {
|
method: 'POST',
|
headers: { 'Content-Type': 'application/json' },
|
body: JSON.stringify({
|
query: DELETE_MEDIA_MUTATION,
|
variables: { id: id.toString() }
|
})
|
});
|
const result = await res.json();
|
console.log('GraphQL响应:', result);
|
console.log('deleteMedia结果:', result.data?.deleteMedia);
|
|
if (result.errors) {
|
console.error('GraphQL错误:', result.errors);
|
throw new Error(result.errors[0].message);
|
}
|
|
const deleteResult = result.data.deleteMedia;
|
console.log('返回的删除结果:', deleteResult, '类型:', typeof deleteResult);
|
return deleteResult;
|
};
|
|
// 上传文件到服务器
|
export const uploadFile = async (file) => {
|
const formData = new FormData();
|
formData.append('file', file);
|
|
const response = await fetch('http://localhost:8080/api/upload/image', {
|
method: 'POST',
|
body: formData
|
});
|
|
const result = await response.json();
|
if (!result.success) {
|
throw new Error(result.error || '上传失败');
|
}
|
|
return result;
|
};
|