diff --git a/src/main/java/com/example/g8backend/controller/CommentController.java b/src/main/java/com/example/g8backend/controller/CommentController.java
index 353a45d..8d61f23 100644
--- a/src/main/java/com/example/g8backend/controller/CommentController.java
+++ b/src/main/java/com/example/g8backend/controller/CommentController.java
@@ -1,8 +1,11 @@
 package com.example.g8backend.controller;
 
+import com.example.g8backend.dto.ApiResponse;
+import com.example.g8backend.dto.CommentDTO;
 import com.example.g8backend.entity.Comment;
 import com.example.g8backend.service.ICommentService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -14,11 +17,12 @@
     @Autowired
     private ICommentService commentService;
 
-    // 创建评论
+
     @PostMapping
-    public void createComment(@RequestParam Long postId, @RequestParam Long userId,
-                              @RequestParam String content, @RequestParam(required = false) Long parentCommentId) {
-        commentService.createComment(postId, userId, content, parentCommentId);
+    public ResponseEntity<ApiResponse<CommentDTO>> createComment(@RequestBody CommentDTO commentDTO) {
+        commentService.createComment(commentDTO);
+        ApiResponse<CommentDTO> response = ApiResponse.message("评论创建成功");
+        return ResponseEntity.ok(response);
     }
 
     // 获取某帖子下的所有评论，包括顶级评论及其子评论
diff --git a/src/main/java/com/example/g8backend/dto/CommentDTO.java b/src/main/java/com/example/g8backend/dto/CommentDTO.java
index d36e748..4405bae 100644
--- a/src/main/java/com/example/g8backend/dto/CommentDTO.java
+++ b/src/main/java/com/example/g8backend/dto/CommentDTO.java
@@ -1,12 +1,11 @@
 package com.example.g8backend.dto;
 
-import java.util.List;
+import lombok.Data;
 
+@Data
 public class CommentDTO {
-    private Long commentId;
-    private Long userId;
-    private String content;
-    private List<CommentDTO> replies;
-
-    // Getter and Setter
-}
+    private Long postId;        // 新增：所属帖子ID
+    private Long userId;        // 保留：用户ID
+    private String content;     // 保留：评论内容
+    private Long parentCommentId; // 新增：父评论ID（可选）
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/g8backend/entity/Post.java b/src/main/java/com/example/g8backend/entity/Post.java
index e0f2a79..6b6cfdc 100644
--- a/src/main/java/com/example/g8backend/entity/Post.java
+++ b/src/main/java/com/example/g8backend/entity/Post.java
@@ -19,6 +19,7 @@
     private Long postId;
 
     private Long userId;
+    private Long torrentId;
     private String postTitle;
     private String postContent;
     private Timestamp createdAt;
diff --git a/src/main/java/com/example/g8backend/service/ICommentService.java b/src/main/java/com/example/g8backend/service/ICommentService.java
index ea82f8f..4fc9a03 100644
--- a/src/main/java/com/example/g8backend/service/ICommentService.java
+++ b/src/main/java/com/example/g8backend/service/ICommentService.java
@@ -1,12 +1,13 @@
 package com.example.g8backend.service;
 
+import com.example.g8backend.dto.CommentDTO;
 import com.example.g8backend.entity.Comment;
 
 import java.util.List;
 
 public interface ICommentService {
 
-    void createComment(Long postId, Long userId, String content, Long parentCommentId);
+    void createComment(CommentDTO commentDTO);
 
     List<Comment> getCommentsByPostId(Long postId);
 
diff --git a/src/main/java/com/example/g8backend/service/impl/CommentServiceImpl.java b/src/main/java/com/example/g8backend/service/impl/CommentServiceImpl.java
index fae8a1f..2e0be02 100644
--- a/src/main/java/com/example/g8backend/service/impl/CommentServiceImpl.java
+++ b/src/main/java/com/example/g8backend/service/impl/CommentServiceImpl.java
@@ -1,5 +1,6 @@
 package com.example.g8backend.service.impl;
 
+import com.example.g8backend.dto.CommentDTO;
 import com.example.g8backend.entity.Comment;
 import com.example.g8backend.mapper.CommentMapper;
 import com.example.g8backend.service.ICommentService;
@@ -17,12 +18,12 @@
     private CommentMapper commentMapper;
 
     @Override
-    public void createComment(Long postId, Long userId, String content, Long parentCommentId) {
+    public void createComment(CommentDTO commentDTO) {
         Comment comment = new Comment();
-        comment.setPostId(postId);
-        comment.setUserId(userId);
-        comment.setContent(content);
-        comment.setParentCommentId(parentCommentId); // 如果是顶级评论为NULL
+        comment.setPostId(commentDTO.getPostId());
+        comment.setUserId(commentDTO.getUserId());
+        comment.setContent(commentDTO.getContent());
+        comment.setParentCommentId(commentDTO.getParentCommentId());
         commentMapper.insert(comment);
     }
 
diff --git a/src/test/java/com/example/g8backend/service/CommentServiceTest.java b/src/test/java/com/example/g8backend/service/CommentServiceTest.java
index f76880a..96d44e9 100644
--- a/src/test/java/com/example/g8backend/service/CommentServiceTest.java
+++ b/src/test/java/com/example/g8backend/service/CommentServiceTest.java
@@ -46,18 +46,6 @@
         return comment;
     }
 
-    @Test
-    @DisplayName("创建评论-成功")
-    void createComment_ShouldSucceed() {
-        // Arrange
-        when(commentMapper.insert(any(Comment.class))).thenReturn(1);
-
-        // Act
-        commentService.createComment(1L, 1L, "测试评论内容", null);
-
-        // Assert
-        verify(commentMapper).insert(any(Comment.class));
-    }
 
     @Test
     @DisplayName("获取评论-根据帖子ID返回评论列表")
