diff --git a/src/services/bt/index.tsx b/src/services/bt/index.tsx
new file mode 100644
index 0000000..4a97406
--- /dev/null
+++ b/src/services/bt/index.tsx
@@ -0,0 +1,174 @@
+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 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,
+        requestType: 'form',
+        responseType: 'blob',
+    });
+}
+
+// 更新种子
+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',
+    });
+}
\ No newline at end of file
