添加搜索后端接口

Change-Id: Ie7d87009f4b71ebdf3fdb30f561d4cf85bc6f416
diff --git a/src/main/java/api/ApiController.java b/src/main/java/api/ApiController.java
index 326255d..c2562bc 100644
--- a/src/main/java/api/ApiController.java
+++ b/src/main/java/api/ApiController.java
@@ -27,6 +27,7 @@
 import entity.User;
 import entity.Post;
 import entity.PostReply;
+import entity.UserPT;
 
 import java.util.UUID;
 
@@ -548,7 +549,6 @@
             // 添加 replies 数组
             com.fasterxml.jackson.databind.node.ArrayNode repliesArray = mapper.createArrayNode();
             if (replies != null) {
-                System.out.println("Replies count: " + replies.length);
                 for (PostReply reply : replies) {
                     com.fasterxml.jackson.databind.node.ObjectNode replyJson = mapper.createObjectNode();
                     replyJson.put("replyid", reply.replyid);
@@ -602,7 +602,6 @@
         @RequestBody String requestBody
     ) {
         try {
-            System.out.println("Add reply request body: " + requestBody);
             // 解析 JSON 数据
             com.fasterxml.jackson.databind.JsonNode jsonNode = mapper.readTree(requestBody);
             com.fasterxml.jackson.databind.JsonNode postidNode = jsonNode.get("postid");
@@ -617,10 +616,6 @@
             String authorid = authoridNode.asText();
             String content = contentNode.asText();
 
-            System.out.println("Post ID: " + postid);
-            System.out.println("Author ID: " + authorid);
-            System.out.println("Content: " + content);
-
             // 参数验证
             if (postid == null || postid.trim().isEmpty() || 
                 authorid == null || authorid.trim().isEmpty() || 
@@ -629,7 +624,6 @@
             }
             
             int ret = db1.AddComment(postid, authorid, content);
-            System.out.println("Add comment result: " + ret);
             if (ret == 0) {
                 return new ResponseEntity<>(0, HttpStatus.OK); // 返回 0 表示成功
             } else {
@@ -649,20 +643,74 @@
         @RequestParam("tag") String tag,
         @RequestParam("keyword") String query
     ) {
-        return null;
-    //     try {
-    //         Seed[] seeds = db1.SearchSeeds(query);
-    //         if (seeds == null || seeds.length == 0) {
-    //             return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR); // 返回 404 表示未找到种子
-    //         }
-    //         String json = mapper.writeValueAsString(seeds);
-    //         return new ResponseEntity<>(json, headers, HttpStatus.OK);
-    //     } catch (JsonProcessingException e) {
-    //         e.printStackTrace();
-    //         return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
-    //     } catch (Exception e) {
-    //         e.printStackTrace();
-    //         return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
-    //     }
+        try {
+            Seed[] seeds = db1.SearchSeed(query);
+            if (seeds == null || seeds.length == 0) {
+                return new ResponseEntity<>("[]", errorHeaders, HttpStatus.NOT_FOUND); // 返回 404 表示未找到种子
+            }
+            
+            // 过滤掉与前端要求tag不同的种子
+            java.util.List<Seed> filteredSeeds = new java.util.ArrayList<>();
+            for (Seed seed : seeds) {
+                if (seed.seedtag != null && seed.seedtag.equals(tag)) {
+                    filteredSeeds.add(seed);
+                }
+            }
+            
+            // 如果过滤后没有匹配的种子,返回空数组
+            if (filteredSeeds.isEmpty()) {
+                return new ResponseEntity<>("[]", errorHeaders, HttpStatus.NOT_FOUND);
+            }
+            
+            Seed[] filteredSeedsArray = filteredSeeds.toArray(new Seed[0]);
+            String json = mapper.writeValueAsString(filteredSeedsArray);
+            return new ResponseEntity<>(json, headers, HttpStatus.OK);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+            return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    @Override
+    public ResponseEntity<String> searchPosts(
+        @RequestParam("keyword") String query
+    ) {
+        try {
+            Post[] posts = db1.SearchPost(query);
+            if (posts == null || posts.length == 0) {
+                return new ResponseEntity<>("[]", errorHeaders, HttpStatus.NOT_FOUND); // 返回 404 表示未找到帖子
+            }
+            String json = mapper.writeValueAsString(posts);
+            return new ResponseEntity<>(json, headers, HttpStatus.OK);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+            return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new ResponseEntity<>("[]", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
+        }
+    }
+
+    @Override
+    public ResponseEntity<String> getUserPT(
+        @RequestParam("userid") String userid
+    ) {
+        try {
+            UserPT userPT = db1.GetInformationPT(userid);
+            if (userPT == null) {
+                return new ResponseEntity<>("", errorHeaders, HttpStatus.NOT_FOUND); // 返回 404 表示未找到用户PT信息
+            }
+            String json = mapper.writeValueAsString(userPT);
+            return new ResponseEntity<>(json, headers, HttpStatus.OK);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+            return new ResponseEntity<>("", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return new ResponseEntity<>("", errorHeaders, HttpStatus.INTERNAL_SERVER_ERROR);
+        }
     }
 }
\ No newline at end of file