Merge "添加更新用户流量的方法,并定时跟新到所有用户"

Change-Id: I558ee7de6767ed1b78685883310a268ea51b198a
diff --git a/src/main/java/com/pt/controller/TrackerController.java b/src/main/java/com/pt/controller/TrackerController.java
index edae09f..56c0867 100644
--- a/src/main/java/com/pt/controller/TrackerController.java
+++ b/src/main/java/com/pt/controller/TrackerController.java
@@ -7,22 +7,34 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.io.IOException;
+import java.util.HashMap;
 import java.util.Map;
 
 @RestController
-@CrossOrigin(origins = "*")
 @RequestMapping("/api/tracker")
+@CrossOrigin(origins = "*")
 public class TrackerController {
 
     @Autowired
     private TrackerService trackerService;
 
-    @GetMapping("/announce")
-    public void announce(HttpServletRequest request, HttpServletResponse response) throws IOException {
+    // tracker相应bt客户端的announce请求
+    @PostMapping("/announce")
+    public void announceByPost(
+            @RequestParam("info_hash") String infoHash,
+            @RequestParam("peer_id") String peerId,
+            @RequestParam("port") int port,
+            HttpServletRequest request,
+            HttpServletResponse response
+    ) throws IOException {
         try {
             String ip = request.getRemoteAddr();
-            Map<String, String[]> params = request.getParameterMap();
 
+            // 将参数封装为 Map 传给服务层(也可以直接传对象)
+            Map<String, String[]> params = new HashMap<>();
+            params.put("info_hash", new String[]{infoHash});
+            params.put("peer_id", new String[]{peerId});
+            params.put("port", new String[]{String.valueOf(port)});
             byte[] bencodedResponse = trackerService.handleAnnounce(params, ip);
 
             response.setContentType("application/x-bittorrent");