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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
const GRAPHQL_ENDPOINT = 'http://localhost:8080/api/graphql'
 
// GraphQL请求函数
async function graphqlRequest(query, variables = {}) {
  const response = await fetch(GRAPHQL_ENDPOINT, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      query,
      variables,
    }),
  })
 
  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`)
  }
 
  const result = await response.json()
  
  if (result.errors) {
    throw new Error(result.errors[0].message)
  }
 
  return result.data
}
 
// GraphQL 查询和变更
const GET_CAROUSELS = `
  query GetCarousels($page: Int!, $size: Int!, $title: String) {
    carousels(page: $page, size: $size, title: $title) {
      content {
        id
        title
        content
        sortOrder
        mediaCount
        createTime
        updateTime
      }
      totalElements
      page
      size
    }
  }
`
 
const GET_CAROUSEL = `
  query GetCarousel($id: ID!) {
    carousel(id: $id) {
      id
      title
      content
      sortOrder
      mediaCount
      createTime
      updateTime
    }
  }
`
 
const GET_CAROUSEL_PLAY_LIST = `
  query GetCarouselPlayList {
    carouselPlayList {
      id
      title
      content
      sortOrder
      mediaCount
      createTime
      updateTime
    }
  }
`
 
const SAVE_CAROUSEL = `
  mutation SaveCarousel($carousel: CarouselInput!) {
    saveCarousel(carousel: $carousel) {
      id
      title
      content
      sortOrder
      createTime
      updateTime
    }
  }
`
 
const DELETE_CAROUSEL = `
  mutation DeleteCarousel($id: ID!) {
    deleteCarousel(id: $id)
  }
`
 
const UPDATE_CAROUSEL_SORT_ORDERS = `
  mutation UpdateCarouselSortOrders($sortOrders: [CarouselSortOrderInput!]!) {
    updateCarouselSortOrders(sortOrders: $sortOrders)
  }
`
 
// API 函数
export const CarouselApi = {
  // 分页查询轮播图
  getCarousels: async (page = 0, size = 10, title) => {
    const data = await graphqlRequest(GET_CAROUSELS, { page, size, title })
    return data.carousels
  },
  
  // 根据ID查询轮播图
  getCarousel: async (id) => {
    const data = await graphqlRequest(GET_CAROUSEL, { id })
    return data.carousel
  },
  
  // 获取播放列表
  getPlayList: async () => {
    const data = await graphqlRequest(GET_CAROUSEL_PLAY_LIST)
    return data.carouselPlayList
  },
  
  // 保存轮播图
  saveCarousel: async (carousel) => {
    const data = await graphqlRequest(SAVE_CAROUSEL, { carousel })
    return data.saveCarousel
  },
  
  // 删除轮播图
  deleteCarousel: async (id) => {
    const data = await graphqlRequest(DELETE_CAROUSEL, { id })
    return data.deleteCarousel
  },
  
  // 批量更新排序
  updateSortOrders: async (sortOrders) => {
    const data = await graphqlRequest(UPDATE_CAROUSEL_SORT_ORDERS, { sortOrders })
    return data.updateCarouselSortOrders
  }
}
 
export default CarouselApi