diff --git a/src/main/java/com/pt/Item/ResourceInfo.java b/src/main/java/com/pt/Item/ResourceInfo.java
new file mode 100644
index 0000000..96e5989
--- /dev/null
+++ b/src/main/java/com/pt/Item/ResourceInfo.java
@@ -0,0 +1,96 @@
+package com.pt.Item;
+
+import java.time.LocalDateTime;
+
+public class ResourceInfo {
+
+    private int resourceId;
+
+    private String name;
+    private double size;
+
+    private LocalDateTime publishTime;
+    private String author;
+
+    private String description;
+
+    private int seedCount;
+    private int downloadCount;
+
+    public ResourceInfo() {
+    }
+
+    public ResourceInfo(int resourceId, String name, double size, LocalDateTime publishTime, String author) {
+        this.resourceId = resourceId;
+        this.name = name;
+        this.size = size;
+        this.publishTime = publishTime;
+        this.author = author;
+    }
+
+    public int getResourceId() {
+        return resourceId;
+    }
+    public void setResourceId(int resourceId) {
+        this.resourceId = resourceId;
+    }
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public double getSize() {
+        return size;
+    }
+    public void setSize(double size) {
+        this.size = size;
+    }
+    public LocalDateTime getPublishTime() {
+        return publishTime;
+    }
+    public void setPublishTime(LocalDateTime publishTime) {
+        this.publishTime = publishTime;
+    }
+    public String getAuthor() {
+        return author;
+    }
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+    public String getDescription() {
+        return description;
+    }
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    public int getSeedCount() {
+        return seedCount;
+    }
+    public void setSeedCount(int seedCount) {
+        this.seedCount = seedCount;
+    }
+    public int getDownloadCount() {
+        return downloadCount;
+    }
+    public void setDownloadCount(int downloadCount) {
+        this.downloadCount = downloadCount;
+    }
+
+    /*
+        * 重写toString方法，将资源信息以JSON字符串形式返回
+     */
+    @Override
+    public String toString() {
+        return "{" +
+                "\"resourceId\":" + resourceId +
+                ", \"name\":\"" + name + "\"" +
+                ", \"size\":" + size +
+                ", \"publishTime\":\"" + publishTime + "\"" +
+                ", \"author\":\"" + author + "\"" +
+                ", \"description\":\"" + description + "\"" +
+                ", \"seedCount\":" + seedCount +
+                ", \"downloadCount\":" + downloadCount +
+                '}';
+    }
+}
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服务器
          */
 
 
diff --git a/src/main/java/com/pt/entity/Download.java b/src/main/java/com/pt/entity/Download.java
index 38b955a..1ae9354 100644
--- a/src/main/java/com/pt/entity/Download.java
+++ b/src/main/java/com/pt/entity/Download.java
@@ -14,14 +14,14 @@
     @GeneratedValue(strategy = GenerationType.IDENTITY)
     private int downloadId;
 
-    private String resourceId;
+    private int resourceId;
     private String downloader;
     private LocalDateTime downloadTime;
 
     public Download() {
     }
 
-    public Download(int downloadId, String resourceId, String downloader, LocalDateTime downloadTime) {
+    public Download(int downloadId, int resourceId, String downloader, LocalDateTime downloadTime) {
         this.downloadId = downloadId;
         this.resourceId = resourceId;
         this.downloader = downloader;
@@ -34,10 +34,10 @@
     public void setDownloadId(int downloadId) {
         this.downloadId = downloadId;
     }
-    public String getResourceId() {
+    public int getResourceId() {
         return resourceId;
     }
-    public void setResourceId(String resourceId) {
+    public void setResourceId(int resourceId) {
         this.resourceId = resourceId;
     }
     public String getDownloader() {
diff --git a/src/main/java/com/pt/repository/DownloadRepository.java b/src/main/java/com/pt/repository/DownloadRepository.java
index 741f142..360a1c0 100644
--- a/src/main/java/com/pt/repository/DownloadRepository.java
+++ b/src/main/java/com/pt/repository/DownloadRepository.java
@@ -12,7 +12,7 @@
      * @param resourceId the ID of the resource
      * @return a list of downloads associated with the specified resource
      */
-    List<Download> findByResourceId(String resourceId);
+    List<Download> findByResourceId(int resourceId);
 
     /**
      * Finds downloads by the downloader's username.
diff --git a/src/main/java/com/pt/service/DownloadService.java b/src/main/java/com/pt/service/DownloadService.java
index 284be5a..c02aea1 100644
--- a/src/main/java/com/pt/service/DownloadService.java
+++ b/src/main/java/com/pt/service/DownloadService.java
@@ -1,9 +1,12 @@
 package com.pt.service;
 
+import com.pt.entity.Download;
 import com.pt.repository.DownloadRepository;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class DownloadService {
 
@@ -14,6 +17,9 @@
         this.downloadRepository = downloadRepository;
     }
 
+    public List<Download> searchByResourceId(int resourceId) {
+        return downloadRepository.findByResourceId(resourceId);
+    }
     /*
         TODO: 添加下载需要的服务;
      */
