api.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. import axios from 'axios'
  2. import { useUserStore } from '@/stores/user'
  3. const api = axios.create({
  4. baseURL: import.meta.env.VITE_API_URL,
  5. headers: {
  6. 'Content-Type': 'application/json'
  7. }
  8. })
  9. // 请求拦截器
  10. api.interceptors.request.use(
  11. (config) => {
  12. const userStore = useUserStore()
  13. if (userStore.token) {
  14. config.headers.Authorization = `Bearer ${userStore.token}`
  15. }
  16. return config
  17. },
  18. (error) => {
  19. return Promise.reject(error)
  20. }
  21. )
  22. // 响应拦截器
  23. api.interceptors.response.use(
  24. (response) => response,
  25. (error) => {
  26. if (error.response?.status === 401) {
  27. const userStore = useUserStore()
  28. userStore.logout()
  29. }
  30. console.log('errorxxx', error.response?.data || error)
  31. return Promise.reject(error.response?.data || error)
  32. }
  33. )
  34. export const login = async (name, password) => {
  35. const response = await api.post('/users/login', {
  36. name,
  37. password
  38. })
  39. return response.data
  40. }
  41. export const profile = async () => {
  42. const response = await api.get('/users/profile')
  43. return response.data
  44. }
  45. export const resetPasswordApi = async (password) => {
  46. const response = await api.post('/users/reset-password', {
  47. password
  48. })
  49. return response.data
  50. }
  51. export const listUsersApi = async (page, size) => {
  52. const response = await api.get('/users', {
  53. params: {
  54. page,
  55. size
  56. }
  57. })
  58. return response.data
  59. }
  60. export const allUsersApi = async () => {
  61. const response = await api.get('/users/all')
  62. return response.data
  63. }
  64. export const createUserApi = async (userData) => {
  65. const response = await api.post('/users/create', userData)
  66. return response.data
  67. }
  68. export const updateUserApi = async (userData) => {
  69. const response = await api.post('/users/update', userData)
  70. return response.data
  71. }
  72. // Records API
  73. export const listRecords = async (page, size, url, description) => {
  74. const response = await api.get('/records', {
  75. params: {
  76. page,
  77. size,
  78. url,
  79. description
  80. }
  81. })
  82. return response.data
  83. }
  84. export const getRecordById = async (id) => {
  85. const response = await api.get(`/records/${id}`)
  86. return response.data
  87. }
  88. export const createRecord = async (recordData) => {
  89. const response = await api.post('/records', recordData)
  90. return response.data
  91. }
  92. export const updateRecord = async (recordData) => {
  93. const response = await api.post('/records/update', recordData)
  94. return response.data
  95. }
  96. export const deleteRecord = async (id) => {
  97. const response = await api.get(`/records/delete/${id}`)
  98. return response.data
  99. }
  100. // 文件上传API
  101. export const uploadFile = async (file) => {
  102. const formData = new FormData()
  103. formData.append('file', file)
  104. const response = await api.post('/files/upload', formData, {
  105. headers: {
  106. 'Content-Type': 'multipart/form-data'
  107. }
  108. })
  109. return response.data
  110. }
  111. // 文件下载API
  112. export const downloadFile = async (key) => {
  113. const response = await api.post(
  114. '/files/download',
  115. { key },
  116. {
  117. responseType: 'blob'
  118. }
  119. )
  120. return response.data
  121. }
  122. // Fish API
  123. export const listFish = async (page, size, id, name, phone, result, ownerName, createdAt, loginTime) => {
  124. const response = await api.get('/fish', {
  125. params: {
  126. id,
  127. page,
  128. size,
  129. name,
  130. phone,
  131. result,
  132. ownerName,
  133. createdAt,
  134. loginTime
  135. }
  136. })
  137. return response.data
  138. }
  139. export const getFishById = async (id) => {
  140. const response = await api.get(`/fish/${id}`)
  141. return response.data
  142. }
  143. export const createFish = async (fishData) => {
  144. const response = await api.post('/fish/create', fishData)
  145. return response.data
  146. }
  147. export const updateFish = async (fishData) => {
  148. const response = await api.post('/fish/update', fishData)
  149. return response.data
  150. }
  151. export const deleteFish = async (id) => {
  152. const response = await api.post('/fish/delete', { id })
  153. return response.data
  154. }
  155. export const batchDeleteFish = async (ids) => {
  156. const response = await api.post('/fish/batch-delete', { ids })
  157. return response.data
  158. }
  159. export const getFishStatistics = async (ownerId) => {
  160. const response = await api.get('/fish/statistics', {
  161. params: { ownerId }
  162. })
  163. return response.data
  164. }
  165. export const getFishByOwner = async (ownerId) => {
  166. const response = await api.get('/fish/by-owner', {
  167. params: { ownerId }
  168. })
  169. return response.data
  170. }
  171. export const getFishByResult = async (result) => {
  172. const response = await api.get('/fish/by-result', {
  173. params: { result }
  174. })
  175. return response.data
  176. }
  177. // FishFriends API
  178. export const listFishFriends = async (page, size, id, fishId, tgName, tgUsername, tgRemarkName, tgPhone, remark, createdAt) => {
  179. const response = await api.get('/fish-friends', {
  180. params: {
  181. page,
  182. size,
  183. id,
  184. fishId,
  185. tgName,
  186. tgUsername,
  187. tgRemarkName,
  188. tgPhone,
  189. remark,
  190. createdAt
  191. }
  192. })
  193. return response.data
  194. }
  195. export const getFishFriendsById = async (id) => {
  196. const response = await api.get(`/fish-friends/${id}`)
  197. return response.data
  198. }
  199. export const updateFishFriends = async (fishFriendsData) => {
  200. const response = await api.post('/fish-friends/update', fishFriendsData)
  201. return response.data
  202. }
  203. export const deleteFishFriends = async (id) => {
  204. const response = await api.post('/fish-friends/delete', { id })
  205. return response.data
  206. }
  207. export const getFishFriendsByFishId = async (fishId) => {
  208. const response = await api.get('/fish-friends/by-fish-id', {
  209. params: { fishId }
  210. })
  211. return response.data
  212. }
  213. export const getFishFriendsByTgUsername = async (tgUsername) => {
  214. const response = await api.get('/fish-friends/by-tg-username', {
  215. params: { tgUsername }
  216. })
  217. return response.data
  218. }
  219. export const exportFishFriends = async (fishId) => {
  220. const response = await api.get('/fish-friends/export', {
  221. params: { fishId },
  222. responseType: 'blob'
  223. })
  224. return response.data
  225. }