blob: 4511b8a65369851cfb41f3fb9576ae2939010b43 [file] [log] [blame]
import { request } from '@umijs/max';
// 获取分类
export async function getCategories() {
return request('/api/tag/all_cat');
}
// 获取种子列表
export async function getTorrentList(params: {
category?: string;
sortField: string;
sortDirection: string;
pageNum: number;
pageSize: number;
}) {
return request('/api/torrent/torrentList', {
method: 'POST',
data: params,
});
}
export async function getMyTorrentList() {
return request('/api/torrent/myList', {
method: 'POST',
});
}
export async function getTorrentInfo(params: {
id: string | number;
}) {
return request(`/api/torrent/info/${params.id}`, {
method: 'POST',
});
}
export async function downloadTorrent(params: {
id: string | number;
passkey?: string;
}) {
return request('/api/torrent/download', {
method: 'GET',
params: {
id: params.id,
},
responseType: 'blob',
});
}
export async function addComment(params: {
torrentId: number;
pid?: number;
comment: string;
}) {
return request('/api/torrent/addComment', {
method: 'POST',
data: params,
});
}
export async function getComments(params: {
torrentId: number;
pageNum?: number;
pageSize?: number;
}) {
return request('/api/torrent/comments', {
method: 'GET',
params,
});
}
export interface TorrentAddParam {
name: string;
title: string;
subheading: string;
cover?: string;
description: string;
category: number;
status?: number;
anonymous?: number;
remark?: string;
}
// 审核种子参数
export interface TorrentAuditParam {
id: number;
status: number;
remark?: string;
}
// 种子实体
export interface TorrentEntity {
id?: number;
infoHash?: Uint8Array;
name?: string;
filename?: string;
title?: string;
subheading?: string;
cover?: string;
description?: string;
category?: number;
status?: number;
fileStatus?: number;
reviewer?: number;
createTime?: string;
updateTime?: string;
owner?: number;
size?: number;
type?: number;
fileCount?: number;
comments?: number;
views?: number;
hits?: number;
visible?: number;
anonymous?: number;
leechers?: number;
seeders?: number;
completions?: number;
remark?: string;
}
// 添加种子
export async function addTorrent(param: TorrentAddParam) {
return request('/api/torrent/add', {
method: 'POST',
data: param,
});
}
// 审核种子
export async function auditTorrent(param: TorrentAuditParam) {
return request('/api/torrent/audit', {
method: 'POST',
data: param,
});
}
// 点赞
export async function favoriteTorrent(id: number) {
return request('/api/torrent/favorite', {
method: 'POST',
params: { id },
});
}
// 上传种子.torrent
export async function uploadTorrentFile(file: File, id: number) {
const formData = new FormData();
formData.append('file', file);
formData.append('id', id.toString());
return request('/api/torrent/upload', {
method: 'POST',
data: formData,
});
}
// 更新种子
export async function updateTorrent(entity: TorrentEntity) {
return request('/api/torrent/update', {
method: 'POST',
data: entity,
});
}
// 删除种子
export async function deleteTorrent(ids: number[]) {
return request('/api/torrent/delete', {
method: 'POST',
data: ids,
});
}
// 获取服务器Tracker
export async function getTracker() {
return request('/api/torrent/tracker', {
method: 'POST',
});
}
export interface TorrentSearchRequest {
infoHash?: string;
category?: number;
status?: number;
fileStatus?: number;
owner?: number;
type?: number;
nameKeyword?: string;
titleKeyword?: string;
descriptionKeyword?: string;
minSize?: number;
maxSize?: number;
createTimeStart?: string; // ISO string
createTimeEnd?: string; // ISO string
sortField?: string;
sortDirection?: string;
pageNum?: number;
pageSize?: number;
}
export interface UserEntity {
user_id: number;
user_name: string;
nick_name: string;
user_type: string;
email: string;
phonenumber: string;
gender: string;
avatar: string;
password: string;
status: number;
login_ip: string;
login_date: string;
create_by: string;
create_time: string;
update_by: string;
update_time: string;
remark: string;
full_name: string;
state: number;
added: string;
last_login: string;
last_access: string;
last_home: string;
last_offer: string;
forum_access: string;
last_staffmsg: string;
last_pm: string;
last_comment: string;
last_post: string;
last_active: string;
privacy: number;
reg_ip: string;
level: number;
seedtime: number;
leechtime: number;
real_uploaded: number;
real_downloaded: number;
modcomment: string;
warning_by: number;
warning_times: number;
warning: boolean;
warning_until: string;
download: number;
upload: number;
invited_by: number;
bonus: number;
exp: number;
check_code: string;
reg_type: number;
}
export interface TorrentSearchResult {
torrent: TorrentEntity;
ownerInfo: UserEntity;
}
export interface TorrentSearchResponse {
records: TorrentSearchResult[];
total: number;
size: number;
current: number;
pages: number;
}
export async function searchTorrents(params: TorrentSearchRequest) {
return request<TorrentSearchResponse>('/api/torrent/search', {
method: 'POST',
data: params,
});
}
export async function generatePassKey() {
return request('/api/torrent/generatePassKey', {
method: 'GET',
});
}
// 用户注册
export async function registerUser(userName: string, password: string, passKey: string) {
return request('/api/api/register', {
method: 'POST',
data: {
userName,
password,
passKey,
},
});
}