下载数

Change-Id: Id3c07b7d57de7f92e2f550306cf339a0c892fc6d
diff --git a/src/views/torrent/TorrentDetailView.vue b/src/views/torrent/TorrentDetailView.vue
index 28af1f6..8b1c8fd 100644
--- a/src/views/torrent/TorrentDetailView.vue
+++ b/src/views/torrent/TorrentDetailView.vue
@@ -95,17 +95,17 @@
               </div>
               
               <div class="torrent-stats">
-                <div class="stat-item seeders">
+                <!-- <div class="stat-item seeders">
                   <span class="stat-number">{{ peerStats.seeders }}</span>
                   <span class="stat-label">做种</span>
-                </div>
-                <div class="stat-item leechers">
+                </div> -->
+                <!-- <div class="stat-item leechers">
                   <span class="stat-number">{{ peerStats.leechers }}</span>
                   <span class="stat-label">下载</span>
-                </div>
+                </div> -->
                 <div class="stat-item downloads">
-                  <span class="stat-number">{{ torrentInfo.finishes }}</span>
-                  <span class="stat-label">完成</span>
+                  <span class="stat-number">{{ peerStats.downloads }}</span>
+                  <span class="stat-label">总下载</span>
                 </div>
               </div>
               
@@ -344,7 +344,8 @@
     const torrentFiles = ref([])
     const peerStats = ref({
       seeders: 0,
-      leechers: 0
+      leechers: 0,
+      downloads: 0
     })
     
     const seedersList = ref([])
@@ -399,6 +400,9 @@
           // 获取用户活动数据(如果有相关API)
           await fetchPeerStats(infoHash)
           
+          // 获取下载数
+          await fetchDownloadCount(infoHash)
+          
           // 获取评论(如果有相关API)
           await fetchComments(infoHash)
         } else {
@@ -464,6 +468,18 @@
       }
     }
     
+    const fetchDownloadCount = async (infoHash) => {
+      try {
+        const response = await axios.get(`/api/torrent/${infoHash}/downloads`)
+        if (response.status === 200) {
+          peerStats.value.downloads = response.data
+        }
+      } catch (error) {
+        console.error('获取下载数失败:', error)
+        peerStats.value.downloads = 0
+      }
+    }
+    
     const fetchComments = async (infoHash) => {
       try {
         // 这里应该调用获取评论的API
@@ -533,6 +549,15 @@
           }
         )
         
+        // 检查响应类型是否为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) {
@@ -556,7 +581,41 @@
         ElMessage.success('种子文件下载完成')
       } catch (error) {
         console.error('下载失败:', error)
-        ElMessage.error(error.response?.data?.message || '下载失败,请稍后重试')
+        // 根据错误类型显示不同的错误信息
+        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)
       } finally {
         downloading.value = false
       }