初步实现资源与下载的框架,后续在TODO处完善即可。

Change-Id: Ib12b43a9f873f7b2ab65f3790c0e1015f18407ce
diff --git a/src/main/java/com/pt/controller/ResourceController.java b/src/main/java/com/pt/controller/ResourceController.java
index 5ed01f8..caf2050 100644
--- a/src/main/java/com/pt/controller/ResourceController.java
+++ b/src/main/java/com/pt/controller/ResourceController.java
@@ -1,8 +1,10 @@
 package com.pt.controller;
 
+import com.pt.Item.ResourceInfo;
 import com.pt.constant.Constants;
 import com.pt.entity.Resource;
 import com.pt.entity.User;
+import com.pt.service.DownloadService;
 import com.pt.service.ResourceService;
 import com.pt.service.UserService;
 import com.pt.utils.JWTUtils;
@@ -10,6 +12,7 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -22,6 +25,7 @@
     @Autowired
     private ResourceService resourceService;
     private UserService userService;
+    private DownloadService downloadService;
 
     @GetMapping("/list/all")
     public ResponseEntity<?> getAllResources(@RequestHeader("token") String token,
@@ -37,7 +41,27 @@
         if (resources.isEmpty()) {
             return ResponseEntity.noContent().build();
         }
-        return ResponseEntity.ok(resources);
+
+        List<ResourceInfo> resourceInfos = new ArrayList<>();
+        for (Resource resource : resources) {
+            ResourceInfo resourceInfo = new ResourceInfo();
+            resourceInfo.setResourceId(resource.getResourceId());
+            resourceInfo.setName(resource.getName());
+            resourceInfo.setSize(resource.getSize());
+            resourceInfo.setDescription(resource.getDescription());
+            resourceInfo.setAuthor(resource.getAuthor());
+            resourceInfo.setPublishTime(resource.getPublishTime());
+
+            int downloadCount = downloadService.searchByResourceId(resource.getResourceId()).size();
+            int seedCount = 0; // TODO: 需要根据tracker信息计算该资源的种子树
+            resourceInfo.setDownloadCount(downloadCount);
+            resourceInfo.setSeedCount(seedCount);
+            resourceInfos.add(resourceInfo);
+        }
+
+        ans.put("message", "Resources retrieved successfully");
+        ans.put("resources", resourceInfos);
+        return ResponseEntity.ok(ans);
     }
 
     @GetMapping("/list/user")
@@ -76,12 +100,14 @@
             return ResponseEntity.status(403).body(ans);
         }
 
-        resourceService.publishResource(name, description, username, size);
-
         /*
             * TODO: 在这里实现资源发布的逻辑
+            *  需要将资源同步到Tracker服务器
+            *  种子文件需要保存
          */
 
+        resourceService.publishResource(name, description, username, size);
+
         ans.put("result", "Resource published successfully");
         return ResponseEntity.ok(ans);
     }
@@ -117,6 +143,7 @@
 
         /*
             * TODO: 在这里实现下载资源的方法
+            *       从本地的种子文件目录获取种子文件
          */
 
         // Here you would typically return the file or a download link
@@ -154,7 +181,8 @@
         }
 
         /*
-            TODO: 在这里实现删除资源的方法
+            * TODO: 在这里实现删除资源的方法
+            *  需要同步到Tracker服务器
          */