前端

Change-Id: If55994fd11ad8d1f70a52e9c3bd53eded5f37544
diff --git a/src/views/torrent/TorrentsView.vue b/src/views/torrent/TorrentsView.vue
index 20d5dd0..34af25d 100644
--- a/src/views/torrent/TorrentsView.vue
+++ b/src/views/torrent/TorrentsView.vue
@@ -1,6 +1,6 @@
 <template>
-  <Navbar />
   <div class="torrents-page">
+    <Navbar />
     <div class="page-header">
       <h1>种子资源</h1>
       <div class="header-actions">
@@ -106,23 +106,23 @@
           </template>
         </el-table-column>
         
-        <!-- <el-table-column label="做种" width="80" align="center">
+        <el-table-column label="做种" width="80" align="center">
           <template #default="{ row }">
             <span class="seeders">{{ row.seeders || 0 }}</span>
           </template>
-        </el-table-column> -->
+        </el-table-column>
         
         <el-table-column label="下载" width="80" align="center">
           <template #default="{ row }">
-            <span class="downloads">{{ row.downloadCount || 0 }}</span>
+            <span class="leechers">{{ row.leechers || 0 }}</span>
           </template>
         </el-table-column>
         
-        <!-- <el-table-column label="完成" width="80" align="center">
+        <el-table-column label="完成" width="80" align="center">
           <template #default="{ row }">
             <span>{{ row.downloads || 0 }}</span>
           </template>
-        </el-table-column> -->
+        </el-table-column>
         
         <el-table-column label="操作" width="120" align="center">
           <template #default="{ row }">
@@ -168,7 +168,6 @@
 } from '@element-plus/icons-vue'
 import { searchTorrents, getCategories } from '@/api/torrent'
 import Navbar from '@/components/Navbar.vue'
-import axios from 'axios'
 
 export default {
   name: 'TorrentsView',
@@ -208,30 +207,20 @@
       fetchTorrents()
     })
     
-    const fetchDownloadCount = async (torrent) => {
-      try {
-        const response = await axios.get(`/api/torrent/${torrent.infoHash}/downloads`)
-        if (response.status === 200) {
-          torrent.downloadCount = response.data
-        }
-      } catch (error) {
-        console.error('获取下载数失败:', error)
-        torrent.downloadCount = 0
-      }
-    }
-    
     const fetchTorrents = async () => {
       loading.value = true
       try {
         if (selectedCategory.value) {
+          // 使用 GET 请求
           const response = await fetch(`/api/torrent/search?category=${selectedCategory.value}`)
-          .then(res => res.json())
+        .then(res => res.json())
 
           torrents.value = response.torrents || []
           totalCount.value = response.totalElements || 0
           totalPages.value = response.totalPages || 1
 
         } else {
+          // 使用 POST 请求(搜索)
           const searchParams = {
             keyword: searchQuery.value || '',
             page: currentPage.value - 1,
@@ -245,11 +234,6 @@
           totalPages.value = response.totalPages || 1
         }
 
-        // 为每个种子获取下载数
-        for (const torrent of torrents.value) {
-          await fetchDownloadCount(torrent)
-        }
-
       } catch (error) {
         console.error('获取种子列表失败:', error)
         ElMessage.error('获取种子列表失败')
@@ -303,87 +287,9 @@
       router.push(`/torrent/${row.infoHash}`)
     }
     
-    const handleDownload = async (row) => {
-      try {
-        const response = await axios.get(
-          `/api/torrent/download/${row.infoHash}`,
-          { 
-            responseType: 'blob',
-            // 如果需要传递passkey,可以在这里添加params
-            params: {
-              // passkey: userStore.passkey // 如果你有用户store存储passkey
-            }
-          }
-        )
-        
-        // 检查响应类型是否为JSON(表示发生了错误)
-        const contentType = response.headers['content-type'];
-        if (contentType && contentType.includes('application/json')) {
-          // 将blob转换为json以读取错误信息
-          const errorText = await response.data.text();
-          const errorData = JSON.parse(errorText);
-          throw new Error(errorData.message || '下载失败');
-        }
-
-        // 从响应头中获取文件名,如果没有则使用默认格式
-        let fileName = response.headers?.['content-disposition']?.split('filename=')[1]
-        if (!fileName) {
-          // 使用默认的文件名格式
-          fileName = `${row.title}.torrent`
-        } else {
-          // 解码文件名
-          fileName = decodeURIComponent(fileName)
-        }
-        
-        // 创建下载链接
-        const url = window.URL.createObjectURL(new Blob([response.data], { type: 'application/x-bittorrent' }))
-        const link = document.createElement('a')
-        link.href = url
-        link.download = fileName
-        document.body.appendChild(link)
-        link.click()
-        document.body.removeChild(link)
-        window.URL.revokeObjectURL(url)
-        
-        ElMessage.success('种子文件下载完成')
-      } catch (error) {
-        console.error('下载失败:', error)
-        // 根据错误类型显示不同的错误信息
-        let errorMessage = '下载失败,请稍后重试';
-        
-        if (error.response) {
-          const status = error.response.status;
-          const data = error.response.data;
-          
-          switch(status) {
-            case 401:
-              errorMessage = '认证失败,请检查登录状态或passkey是否正确';
-              break;
-            case 403:
-              if (data.message?.includes('share ratio')) {
-                errorMessage = '分享率不足,无法下载';
-              } else if (data.message?.includes('torrent:download_review')) {
-                errorMessage = '该种子正在审核中,您没有权限下载';
-              } else {
-                errorMessage = '您没有权限下载此种子';
-              }
-              break;
-            case 404:
-              if (data.message?.includes('torrent not registered')) {
-                errorMessage = '该种子未在服务器注册';
-              } else if (data.message?.includes('file are missing')) {
-                errorMessage = '种子文件丢失,请联系管理员';
-              } else {
-                errorMessage = '种子不存在';
-              }
-              break;
-            default:
-              errorMessage = data.message || '下载失败,请稍后重试';
-          }
-        }
-        
-        ElMessage.error(errorMessage)
-      }
+    const handleDownload = (row) => {
+      ElMessage.success(`开始下载: ${row.title || row.name}`)
+      // 这里实现下载逻辑
     }
     
     const handleSizeChange = (size) => {