post_report

Change-Id: I191da6e9ea7371e66dadead873abd057f5d08c74
diff --git a/src/main/java/com/example/g8backend/controller/PostController.java b/src/main/java/com/example/g8backend/controller/PostController.java
index e5e4eab..1e0adf4 100644
--- a/src/main/java/com/example/g8backend/controller/PostController.java
+++ b/src/main/java/com/example/g8backend/controller/PostController.java
@@ -16,9 +16,12 @@
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import com.example.g8backend.entity.Report;
+import com.example.g8backend.service.IReportService;
 
 import java.util.List;
 
+
 @RestController
 @RequestMapping("/post")
 @Validated
@@ -29,6 +32,8 @@
 
     @Autowired
     private PostViewMapper postViewMapper;
+    @Autowired
+    private IReportService reportService;
 
     @PostMapping("")
     public ResponseEntity<ApiResponse<Void>> createPost(@RequestBody PostCreateDTO postCreateDTO) {
@@ -191,4 +196,41 @@
         Long count = postRatingService.getRatingUserCount(postId);
         return ResponseEntity.ok(ApiResponse.success(count));
     }
+    @PostMapping("/{postId}/report")
+    public ResponseEntity<ApiResponse<String>> reportPost(
+            @PathVariable Long postId,
+            @RequestParam String reason) {
+        long userId = (long) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+        try {
+            reportService.submitReport(userId, postId, reason);
+            return ResponseEntity.ok(ApiResponse.message("举报已提交"));
+        } catch (IllegalArgumentException e) {
+            return ResponseEntity.badRequest().body(ApiResponse.error(400, e.getMessage()));
+        }
+    }
+
+
+    @GetMapping("/reports")
+    public ResponseEntity<ApiResponse<List<Report>>> getReports(
+            @RequestParam(required = false) String status) {
+        List<Report> reports = reportService.getReports(status);
+        return ResponseEntity.ok(ApiResponse.success(reports));
+    }
+
+    @PutMapping("/report/{reportId}")
+    public ResponseEntity<ApiResponse<String>> resolveReport(
+            @PathVariable Long reportId,
+            @RequestParam Long adminId,     // 实际部署时可从 token 解析或改为登录信息中获取
+            @RequestParam String status,
+            @RequestParam(required = false) String notes) {
+        try {
+            reportService.resolveReport(reportId, adminId, status, notes);
+            return ResponseEntity.ok(ApiResponse.message("举报处理完成"));
+        } catch (IllegalArgumentException e) {
+            return ResponseEntity.badRequest().body(ApiResponse.error(400, e.getMessage()));
+        }
+    }
+
+
+
 }