初步实现资源与下载的框架,后续在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服务器
*/