diff --git a/src/main/java/database/DataManagerInterface.java b/src/main/java/database/DataManagerInterface.java
index b02f4a6..0c4dc7d 100644
--- a/src/main/java/database/DataManagerInterface.java
+++ b/src/main/java/database/DataManagerInterface.java
@@ -1,13 +1,17 @@
 package database;
 
 import entity.BegInfo;
+import entity.BegSeedDetail;
 import entity.Notice;
 import entity.Post;
 import entity.Profile;
 import entity.Seed;
 import entity.User;
 import entity.UserPT;
+import entity.UserStar;
 import entity.PostReply;
+import entity.SeedWithVotes;
+import java.io.File;
 public interface DataManagerInterface{
 //DB1
 
@@ -38,7 +42,9 @@
 
     public boolean AddCollect(String userid,String seedid);//添加一个收藏，返回状态：0 success，1 不存在,2其他原因
     public boolean DeleteCollect(String userid,String seedid);//删除一个收藏，返回状态：0 success，1 不存在,2其他原因
-    
+    public UserStar[] GetUserStarList(String userid);//获取用户的收藏列表
+
+    public int CheckAdmin(String userid);//检查用户是否为管理员，返回状态：0 success，1 不存在,2其他原因
 
 
 // ----------------------------------------------------------------------------------------------------
@@ -50,6 +56,11 @@
     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失败，并发放对应奖励
+    public BegSeedDetail[] GetBegList();//获取所有求种信息（包含BegSeed表内容和BegInfo的Info字段）
+    public BegInfo GetBegDetail(String begid);//获取一个求种信息的详细信息
+    public BegSeedDetail GetBegSeedDetail(String begid);//获取一个求种信息的详细信息（包含BegSeed表数据和BegInfo表的Info字段）
+    public SeedWithVotes[] GetBegSeedListWithVotes(String begid);//获取一个求种信息下的种子列表（包含投票信息）
+    public int SubmitBegSeed(String begid, String seedid, String userid);//提交一个种子到求种信息中，返回状态：0 success，1 重复，2其他原因
 
     public Post[] SearchPost(String userQ);//传入搜索的关键词或句子，返回搜索到的帖子信息（按照公共字符数量排序）
     public Post[] GetPostList();//获取用户的帖子列表
@@ -72,5 +83,7 @@
     public Profile GetTransmitProfile(String profileid);//获取迁移信息
     public boolean ExamTransmitProfile(String profileid,boolean result);//审核迁移信息,0成功，1失败
     public Profile[] GetTransmitProfileList();//获取所有迁移信息
-
+    public int InviteNewUser(String inviterid, String invitedemail);//邀请新用户，返回状态：0 success，1 重复，2其他原因
+    public int UploadMigration(String userid, File file);
+    public int createBagSeed(BegInfo begInfo, String userid, String info);
 }   
\ No newline at end of file
