| // src/api/personal.js | |
| import { api } from './auth'; | |
| /** | |
| * 获取用户信息 | |
| * @returns {Promise<Object>} 用户信息对象 | |
| */ | |
| export const getUserInfo = async () => { | |
| try { | |
| const response = await api.get('/user/userInfo'); | |
| if (response.data.code === 200) { | |
| const userData = response.data.data; | |
| return { | |
| username: userData.username, | |
| level: userData.level, | |
| registTime: formatDate(userData.registTime), | |
| magicPoints: userData.magicPoints, | |
| upload: userData.upload, | |
| download: userData.download, | |
| shareRate: userData.shareRate.toFixed(2) | |
| }; | |
| } | |
| throw new Error(response.data.message || '获取用户信息失败'); | |
| } catch (error) { | |
| console.error('获取用户信息失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const formatFileSize = (bytes) => { | |
| if (bytes < 1024) { | |
| return bytes + ' B'; | |
| } | |
| const kb = bytes / 1024; | |
| if (kb < 1024) { | |
| return kb.toFixed(2) + ' KB'; | |
| } | |
| const mb = kb / 1024; | |
| if (mb < 1024) { | |
| return mb.toFixed(2) + ' MB'; | |
| } | |
| const gb = mb / 1024; | |
| return gb.toFixed(2) + ' GB'; | |
| }; | |
| export const getDownloadQuota = async () => { | |
| try { | |
| const response = await api.get('/user/allowDownload'); | |
| if (response.data.code === 200) { | |
| const data = response.data.data; | |
| return { | |
| total: data.total, // 已经是字节 | |
| used: data.used, | |
| remaining: data.remaining | |
| }; | |
| } | |
| throw new Error(response.data.message || '获取下载额度失败'); | |
| } catch (error) { | |
| console.error('获取下载额度失败:', error); | |
| throw error; | |
| } | |
| }; | |
| // 修正后的时间格式化(正确处理时区) | |
| const formatDate = (dateString) => { | |
| const date = new Date(dateString); | |
| const year = date.getFullYear(); | |
| const month = String(date.getMonth() + 1).padStart(2, '0'); | |
| const day = String(date.getDate()).padStart(2, '0'); | |
| return `${year}-${month}-${day}`; | |
| }; | |
| export const getDownloadProgress = async () => { | |
| try { | |
| const response = await api.get('/torrent/getProgress'); | |
| if (response.data.code === 200) { | |
| return response.data.data.progresses; | |
| } | |
| throw new Error(response.data.message || '获取下载进度失败'); | |
| } catch (error) { | |
| console.error('获取下载进度失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const getUserTorrents = async (page = 1, size = 5) => { | |
| try { | |
| const response = await api.get('/torrent/get/torrentMyself', { | |
| params: { page, size } | |
| }); | |
| if (response.data.code === 200) { | |
| const records = response.data.data.records.map(item => ({ | |
| ...item.torrent, | |
| downloadCount: item.downloadCount, | |
| formattedSize: item.formattedSize | |
| })); | |
| return { | |
| records: records, | |
| total: response.data.data.total | |
| }; | |
| } | |
| throw new Error(response.data.message || '获取上传记录失败'); | |
| } catch (error) { | |
| console.error('获取上传记录失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const deleteTorrent = async (id) => { | |
| try { | |
| const response = await api.delete(`/torrent/deleteTorrent/${id}`); | |
| if (response.data.code === 200) { | |
| return response.data; | |
| } | |
| throw new Error(response.data.message || '删除种子失败'); | |
| } catch (error) { | |
| console.error('删除种子失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const generateInviteCode = async () => { | |
| try { | |
| const response = await api.post('/invitecode/generate'); | |
| if (response.data.code === 200) { | |
| return response.data.data.inviteCode; | |
| } | |
| throw new Error(response.data.message || '生成邀请码失败'); | |
| } catch (error) { | |
| console.error('生成邀请码失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const getUserInviteCodes = async () => { | |
| try { | |
| const response = await api.get('/invitecode/userInviteCode'); | |
| if (response.data.code === 200) { | |
| return response.data.data.inviteCode; | |
| } | |
| throw new Error(response.data.message || '获取邀请码列表失败'); | |
| } catch (error) { | |
| console.error('获取邀请码列表失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const exchangeUpload = async (magicPoints) => { | |
| try { | |
| const response = await api.post('/user/exchangeUpload', { | |
| magicPoint: magicPoints | |
| }); | |
| if (response.data.code === 200) { | |
| return response.data; | |
| } | |
| throw new Error(response.data.message || '兑换上传量失败'); | |
| } catch (error) { | |
| console.error('兑换上传量失败:', error); | |
| throw error; | |
| } | |
| }; | |
| export const updatePassword = async (oldPassword, newPassword) => { | |
| try { | |
| const response = await api.put('/user/password', { | |
| oldPassword, | |
| newPassword | |
| }); | |
| if (response.data.code === 200) { | |
| return response.data; | |
| } | |
| throw new Error(response.data.message || '修改密码失败'); | |
| } catch (error) { | |
| console.error('修改密码失败:', error); | |
| throw error; | |
| } | |
| }; |