lrj
2 天以前 c61d4fe27c97d2ecc907756aa571a4ef14a7b9b6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// 媒体查询 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;
};