diff --git a/src/main/java/database/DataManagerInterface.java b/src/main/java/database/DataManagerInterface.java
index fdaec8c..d284288 100644
--- a/src/main/java/database/DataManagerInterface.java
+++ b/src/main/java/database/DataManagerInterface.java
@@ -42,7 +42,7 @@
     public int AddBegSeed(BegInfo info);//添加一个新的求种信息，返回状态：0 success，1 重复，2其他原因
     public int UpdateBegSeed(BegInfo info);//更新一个求种信息，返回状态：0 success，1 重复，2其他原因
     public int DeleteBegSeed(String begid);//删除一个求种信息，返回状态：0 success，1 重复，2其他原因
-    public int VoteSeed(String begid,String userid,boolean vote);//投票，返回状态：0 success，1 重复，2其他原因,vote=true表示赞成，vote=false表示反对
+    public int VoteSeed(String begId, String seedId, String userId);//求种结果投票，返回状态：0 success，1 重复，2其他原因
     public int SubmitSeed(String begid,Seed seed);//提交种子，返回状态：0 success，1 重复，2其他原因
     public void SettleBeg();//结算所有求种信息，求种信息中需要增加Beg截止日期，默认14天，期间投票>的则Beg成功，否则Beg失败，并发放对应奖励
 
@@ -50,7 +50,7 @@
     public int UpdatePost(Post post);//更新一个帖子，返回状态：0 success，1 不存在,2其他原因
     public int DeletePost(String postid);//删除一个帖子，返回状态：0 success，1 不存在,2其他原因
 
-    public int AddComment(String postid,String comment);//添加一个评论，返回状态：0 success，1 不存在，2其他原因
+    public int AddComment(String postid, String userid, String comment);//添加一个评论，返回状态：0 success，1 不存在，2其他原因
     public int DeleteComment(String postid,String commentid);//删除一个评论，返回状态：0 success，1 不存在,2其他原因
 
     
diff --git a/src/main/java/object/PostReply.java b/src/main/java/object/PostReply.java
new file mode 100644
index 0000000..bc95625
--- /dev/null
+++ b/src/main/java/object/PostReply.java
@@ -0,0 +1,38 @@
+package object;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PostReply")
+public class PostReply {
+    @Id
+    @Column(name = "reply_id", length = 64, nullable = false)
+    public String replyid;
+
+    @Column(name = "post_id", length = 64, nullable = false)
+    public String postid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "post_id", referencedColumnName = "post_id", 
+                foreignKey = @ForeignKey(name = "fk_pr_post"), 
+                insertable = false, updatable = false)
+    public Post post;
+
+    @Column(name = "author_id", length = 36, nullable = false)
+    public String authorid;
+
+    @ManyToOne(optional = false)
+    @JoinColumn(name = "author_id", referencedColumnName = "user_id", 
+                foreignKey = @ForeignKey(name = "fk_pr_user"), 
+                insertable = false, updatable = false)
+    public User author;
+
+    @Lob
+    @Column(name = "content", nullable = false)
+    public String content;
+
+    @Column(name = "created_at", nullable = false)
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date createdAt;
+}
\ No newline at end of file
diff --git "a/\345\274\200\345\217\221\346\226\207\346\241\243/create.sql" "b/\345\274\200\345\217\221\346\226\207\346\241\243/create.sql"
index b5daae4..74b40c5 100644
--- "a/\345\274\200\345\217\221\346\226\207\346\241\243/create.sql"
+++ "b/\345\274\200\345\217\221\346\226\207\346\241\243/create.sql"
@@ -169,3 +169,14 @@
   CONSTRAINT `fk_um_user` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
+-- 悬赏任务用户投票表
+CREATE TABLE `UserVotes` (
+  `user_id` VARCHAR(36) NOT NULL,
+  `beg_id` VARCHAR(64) NOT NULL,
+  `seed_id` VARCHAR(64) NOT NULL,
+  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  PRIMARY KEY (`user_id`, `beg_id`, `seed_id`),
+  FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE CASCADE,
+  FOREIGN KEY (`beg_id`) REFERENCES `BegSeed`(`beg_id`) ON DELETE CASCADE,
+  FOREIGN KEY (`seed_id`) REFERENCES `Seed`(`seed_id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
\ No newline at end of file
