post第三次上传

Change-Id: I8ee9f57af704012dc22a69771fae4053258bad01
diff --git a/src/main/java/com/pt5/pthouduan/controller/PostController.java b/src/main/java/com/pt5/pthouduan/controller/PostController.java
new file mode 100644
index 0000000..a3a9017
--- /dev/null
+++ b/src/main/java/com/pt5/pthouduan/controller/PostController.java
@@ -0,0 +1,149 @@
+package com.pt5.pthouduan.controller;
+
+import com.pt5.pthouduan.entity.Post;
+import com.pt5.pthouduan.service.PostService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * <p>
+ *  帖子控制器
+ * </p>
+ *
+ * 功能:创建帖子(支持上传图片、置顶、范围控制)、点赞、取消点赞、关键词搜索、删除、更新、置顶与取消置顶
+ *
+ * @author
+ * @since 2025-05-10
+ */
+@CrossOrigin(origins = "http://localhost:5173")
+@Controller
+@RequestMapping("/post")
+public class PostController {
+
+    @Autowired
+    private PostService postService;
+
+    // 创建帖子(支持图片上传)
+    @PostMapping("/create")
+    @ResponseBody
+    public boolean createPost(
+            @RequestParam("userid") Long userid,
+            @RequestParam("post_title") String post_title,
+            @RequestParam("post_content") String post_content,
+            @RequestParam(value = "tags", required = false) String tags,
+            @RequestParam(value = "rannge", required = false) String rannge,
+            @RequestParam(value = "is_pinned", required = false) Boolean is_pinned,
+            @RequestParam(value = "photo", required = false) MultipartFile photoFile
+    ) {
+        Post post = new Post();
+        post.setUserid(userid);
+        post.setPostTitle(post_title);
+        post.setPostContent(post_content);
+        post.setTags(tags);
+        post.setRannge(rannge);
+        post.setIsSticky(is_pinned != null && is_pinned);
+        post.setPostCreatedTime(LocalDateTime.now());
+        post.setUpdatedTime(LocalDateTime.now());
+        post.setLikes(0);
+
+
+        // 保存图片
+        if (photoFile != null && !photoFile.isEmpty()) {
+            String uploadDir = "D:/postuploads/";
+            File dir = new File(uploadDir);
+            if (!dir.exists()) dir.mkdirs();
+
+            String fileName = UUID.randomUUID() + "_" + photoFile.getOriginalFilename();
+            File dest = new File(uploadDir + fileName);
+            try {
+                photoFile.transferTo(dest);
+                post.setPhoto("/images/" + fileName);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return false;
+            }
+        }
+
+        return postService.createPost(post) != null;
+    }
+
+
+
+    // 删除帖子
+    @DeleteMapping("/delete/{postid}")
+    @ResponseBody
+    public boolean deletePost(@PathVariable Integer postid) {
+        return postService.deletePost(postid);
+    }
+
+    // 更新帖子(包括置顶、范围、照片等)
+    @PutMapping("/update")
+    @ResponseBody
+    public boolean updatePost(@RequestBody Post post) {
+        return postService.updatePost(post);
+    }
+
+    // 关键词搜索
+    @GetMapping("/search")
+    @ResponseBody
+    public List<Post> searchPosts(@RequestParam String keyword) {
+        return postService.searchPostsByKeyword(keyword);
+    }
+
+    // 点赞
+    @PutMapping("/like/{postid}")
+    @ResponseBody
+    public boolean likePost(@PathVariable Integer postid) {
+        return postService.incrementLikes(postid);
+    }
+
+    @GetMapping("/all")
+    @ResponseBody
+    public List<Post> getAllPostsSorted() {
+        return postService.getAllPostsSorted();
+    }
+
+
+    // 取消点赞
+    @PutMapping("/unlike/{postid}")
+    @ResponseBody
+    public boolean unlikePost(@PathVariable Integer postid) {
+        return postService.decrementLikes(postid);
+    }
+
+    // 置顶帖子
+    @PutMapping("/pin/{postid}")
+    @ResponseBody
+    public boolean pinPost(@PathVariable Integer postid) {
+        return postService.setPinnedStatus(postid, true);
+    }
+
+    // 取消置顶
+    @PutMapping("/unpin/{postid}")
+    @ResponseBody
+    public boolean unpinPost(@PathVariable Integer postid) {
+        return postService.setPinnedStatus(postid, false);
+    }
+
+    // 根据用户ID获取该用户所有帖子
+    @GetMapping("/findByUserid")
+    @ResponseBody
+    public List<Post> findByUserid(@RequestParam Long userid) {
+        return postService.findByUserid(userid);
+    }
+
+    // 根据是否置顶查找帖子
+    @GetMapping("/findPinned")
+    @ResponseBody
+    public List<Post> findPinnedPosts() {
+        return postService.findPinnedPosts();
+    }
+}