diff --git a/src/main/java/database/DataManagerInterface.java b/src/main/java/database/DataManagerInterface.java
index f8d0940..d284288 100644
--- a/src/main/java/database/DataManagerInterface.java
+++ b/src/main/java/database/DataManagerInterface.java
@@ -1,12 +1,12 @@
 package database;
 
+import object.BegInfo;
+import object.Notice;
+import object.Post;
+import object.Profile;
 import object.Seed;
 import object.User;
 import object.UserPT;
-import object.Notice;
-import object.BegInfo;
-import object.Post;
-import object.Profile;
 public interface DataManagerInterface{
 //DB1
 
@@ -39,10 +39,10 @@
 // ----------------------------------------------------------------------------------------------------
 
 //DB2
-    public boolean AddBegSeed(BegInfo info);//添加一个新的求种信息，返回状态：0 success，1 重复，2其他原因
-    public boolean UpdateBegSeed(BegInfo info);//更新一个求种信息，返回状态：0 success，1 重复，2其他原因
-    public boolean DeleteBegSeed(String begid);//删除一个求种信息，返回状态：0 success，1 重复，2其他原因
-    public boolean VoteSeed(String begid,String userid,boolean vote);//投票，返回状态：0 success，1 重复，2其他原因,vote=true表示赞成，vote=false表示反对
+    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 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/API\346\226\207\346\241\243.md" "b/\345\274\200\345\217\221\346\226\207\346\241\243/API\346\226\207\346\241\243.md"
index f46d856..16c7315 100644
--- "a/\345\274\200\345\217\221\346\226\207\346\241\243/API\346\226\207\346\241\243.md"
+++ "b/\345\274\200\345\217\221\346\226\207\346\241\243/API\346\226\207\346\241\243.md"
@@ -175,7 +175,6 @@
   * 做种数（小于等于环境变量：预期做种数）
   * 奖励魔力值数量：
   * 是否继续缓存：0表示继续缓存，1表示不在缓存中
-
 * Transport：种子传输信息表
   * 传输任务ID：唯一标识每次传输任务，每次增量的时候通过选择ID然后增加对应字段值，主键
   * 上传用户ID：字符串，主键，同时应该是User表的外键（User表中有这里才能插入，User表删除了，这里必须要删除）
@@ -185,7 +184,6 @@
   * 用户下载量：整数
   * 用户上传峰值：整数
   * 用户下载峰值：整数
-
 * BegSeed：求种任务列表
   * 求种帖子ID：唯一标识
   * 求种人数：有多少个人页点了“求种”，整数
@@ -195,7 +193,7 @@
 * SubmitSeed：提交悬赏任务
   * 求种ID：唯一标识需要是BegSeed的外键
   * 种子ID：唯一标识：需要是Seed的外键
-  * 投票：大于环境变量设置票数则在BegSeed中更新为合适
+  * 投票：大于环境变量设置票数则在BegSeed中更新为合适，int值，悬赏周期结束后，选取投票数最高的成为悬赏结果
 * 帖子表
   * 帖子ID：唯一标识
   * 标题，
@@ -210,7 +208,6 @@
   * 回复内容，
   * 回复用户，
   * 回复时间
-
 * 公告表
   * 公告ID
   * 公告内容，
@@ -228,6 +225,14 @@
   * 已发放魔力值
   * 待发放上传量
   * 已发放上传量
+* 申诉表
+  * 申诉id
+  * 申诉人
+  * 申诉内容
+  * 申诉文件URL、
+  * 审核状态（int)
+
+* TTorent表
 
 ```sql
 -- 用户表
@@ -401,5 +406,22 @@
   CONSTRAINT `fk_um_user` FOREIGN KEY (`user_id`) REFERENCES `User`(`user_id`) ON DELETE CASCADE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
+-- 申诉表
+CREATE TABLE `Appeal` (
+  `appeal_id` VARCHAR(64) NOT NULL COMMENT '申诉ID',
+  `user_id`   VARCHAR(36) NOT NULL COMMENT '申诉人（User.user_id）',
+  `content`   TEXT         NOT NULL COMMENT '申诉内容',
+  `file_url`  VARCHAR(255) DEFAULT NULL COMMENT '申诉文件URL',
+  `status`    INT          NOT NULL DEFAULT 0 COMMENT '审核状态',
+  PRIMARY KEY (`appeal_id`),
+  CONSTRAINT `fk_appeal_user`
+    FOREIGN KEY (`user_id`)
+    REFERENCES `User`(`user_id`)
+    ON DELETE CASCADE
+) ENGINE=InnoDB
+  DEFAULT CHARSET=utf8mb4
+  COMMENT='申诉表，记录用户的申诉信息';
+
+
 ```
 
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
