rebase and resubmit
Change-Id: I840888ad5aadceaacb5cd64c6472614cd82ffe17
diff --git a/src/main/java/entity/Appeal.java b/src/main/java/entity/Appeal.java
new file mode 100644
index 0000000..36816c4
--- /dev/null
+++ b/src/main/java/entity/Appeal.java
@@ -0,0 +1,35 @@
+package entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "Appeal")
+public class Appeal {
+ @Id
+ @Column(name = "appeal_id", length = 64, nullable = false)
+ public String appealid;
+
+ @Column(name = "user_id", length = 36, nullable = false)
+ public String appealuserid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_appeal_user"), insertable = false, updatable = false)
+ public User user;
+
+ @Lob
+ @Column(name = "content", nullable = false)
+ public String content;
+
+ @Column(name = "file_url", length = 255)
+ public String fileURL;
+
+ @Column(name = "status", nullable = false)
+ public int state; // 0: pending, 1: approved, 2: rejected
+}
diff --git a/src/main/java/entity/BegInfo.java b/src/main/java/entity/BegInfo.java
new file mode 100644
index 0000000..fe3174d
--- /dev/null
+++ b/src/main/java/entity/BegInfo.java
@@ -0,0 +1,31 @@
+package entity;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "BegSeed")
+public class BegInfo {
+ @Id
+ @Column(name = "beg_id", length = 64, nullable = false)
+ public String begid;
+
+ @Column(name = "beg_count", nullable = false)
+ public int begnumbers;
+
+ @Column(name = "reward_magic", nullable = false)
+ public int magic;
+
+ @Column(name = "deadline", nullable = false)
+ @Temporal(TemporalType.TIMESTAMP)
+ public Date endtime;
+
+ @Column(name = "has_match", nullable = false)
+ public boolean hasseed;
+}
diff --git a/src/main/java/entity/Notice.java b/src/main/java/entity/Notice.java
new file mode 100644
index 0000000..24ef954
--- /dev/null
+++ b/src/main/java/entity/Notice.java
@@ -0,0 +1,29 @@
+package entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "Announcement")
+public class Notice {
+ @Id
+ @Column(name = "announce_id", length = 64, nullable = false)
+ public String noticeid;
+
+ @Lob
+ @Column(name = "content", nullable = false)
+ public String noticecontent;
+
+ @Column(name = "is_public", nullable = false)
+ public boolean state;
+
+ @Column(name = "tag", length = 100)
+ public String posttag;
+
+ // 添加默认无参构造函数,JPA规范要求
+ public Notice() {
+ }
+}
diff --git a/src/main/java/entity/Post.java b/src/main/java/entity/Post.java
new file mode 100644
index 0000000..1593ca0
--- /dev/null
+++ b/src/main/java/entity/Post.java
@@ -0,0 +1,46 @@
+package entity;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.Lob;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "Post")
+public class Post {
+ @Id
+ @Column(name = "post_id", length = 64, nullable = false)
+ public String postid;
+
+ @Column(name = "title", length = 255, nullable = false)
+ public String posttitle;
+
+ @Lob
+ @Column(name = "content", nullable = false)
+ public String postcontent;
+
+ @Column(name = "author_id", length = 36, nullable = false)
+ public String postuserid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "author_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_post_user"), insertable = false, updatable = false)
+ public User author;
+
+ @Column(name = "created_at", nullable = false)
+ @Temporal(TemporalType.TIMESTAMP)
+ public Date posttime;
+
+ @Column(name = "reply_count", nullable = false)
+ public int replytime;
+
+ @Column(name = "view_count", nullable = false)
+ public int readtime;
+}
diff --git a/src/main/java/entity/PostReply.java b/src/main/java/entity/PostReply.java
new file mode 100644
index 0000000..2845f10
--- /dev/null
+++ b/src/main/java/entity/PostReply.java
@@ -0,0 +1,38 @@
+package entity;
+
+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/src/main/java/entity/Profile.java b/src/main/java/entity/Profile.java
new file mode 100644
index 0000000..2ff6979
--- /dev/null
+++ b/src/main/java/entity/Profile.java
@@ -0,0 +1,46 @@
+package entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+@Entity
+@Table(name = "UserMigration")
+public class Profile {//迁移信息
+ @Id
+ @Column(name = "migration_id", length = 64, nullable = false)
+ public String profileurl;
+
+ @Column(name = "user_id", length = 36, nullable = false)
+ public String userid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_um_user"), insertable = false, updatable = false)
+ public User user;
+
+ @Column(name = "approved", nullable = false)
+ public boolean exampass;
+
+ @Column(name = "pending_magic", nullable = false)
+ public String magictogive;
+
+ @Column(name = "pending_uploaded", nullable = false)
+ public String uploadtogive;
+
+ @Transient
+ public String downloadtogive;
+
+ @Column(name = "granted_magic", nullable = false)
+ public String magicgived;
+
+ @Column(name = "granted_uploaded", nullable = false)
+ public String uploadgived;
+
+ @Transient
+ public String downloadgived;
+}
diff --git a/src/main/java/entity/Seed.java b/src/main/java/entity/Seed.java
new file mode 100644
index 0000000..eabf49d
--- /dev/null
+++ b/src/main/java/entity/Seed.java
@@ -0,0 +1,53 @@
+package entity;
+
+import java.util.Date;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+
+@Entity
+@Table(name = "Seed")
+public class Seed {
+ @Id
+ @Column(name = "seed_id", length = 64, nullable = false)
+ public String seedid;
+
+ @Column(name = "owner_user_id", length = 36, nullable = false)
+ public String seeduserid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "owner_user_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_seed_user"), insertable = false, updatable = false)
+ public User user;
+
+ @Column(name = "fake_hits", nullable = false)
+ public int faketime;
+
+ @Column(name = "last_fake_check")
+ @Temporal(TemporalType.TIMESTAMP)
+ public Date lastfakecheck;
+
+ @Column(name = "external_url")
+ public String outurl;
+
+ @Column(name = "title", length = 255, nullable = false)
+ public String title;
+
+ @Column(name = "subtitle", length = 255)
+ public String subtitle;
+
+ @Column(name = "size", length = 50, nullable = false)
+ public String seedsize;
+
+ @Column(name = "tags")
+ public String seedtag;
+
+ @Column(name = "popularity", nullable = false)
+ public int downloadtimes;
+}
diff --git a/src/main/java/entity/SubmitSeed.java b/src/main/java/entity/SubmitSeed.java
new file mode 100644
index 0000000..2cec77d
--- /dev/null
+++ b/src/main/java/entity/SubmitSeed.java
@@ -0,0 +1,34 @@
+package entity;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "SubmitSeed")
+public class SubmitSeed {
+
+ @EmbeddedId
+ private SubmitSeedId id;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "beg_id", referencedColumnName = "beg_id", foreignKey = @ForeignKey(name = "fk_ss_beg"))
+ private BegInfo begInfo;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_ss_seed"))
+ private Seed seed;
+
+ @Column(name = "votes", nullable = false)
+ private int votes;
+
+ public SubmitSeed() {}
+
+ public SubmitSeedId getId() {
+ return id;
+ }
+
+ public void setId(SubmitSeedId id) {
+ this.id = id;
+ }
+
+ // getters and setters for begInfo, seed, and votes
+}
diff --git a/src/main/java/entity/SubmitSeedId.java b/src/main/java/entity/SubmitSeedId.java
new file mode 100644
index 0000000..f071ac3
--- /dev/null
+++ b/src/main/java/entity/SubmitSeedId.java
@@ -0,0 +1,47 @@
+package entity;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class SubmitSeedId implements Serializable {
+ private String begId;
+ private String seedId;
+
+ public SubmitSeedId() {}
+
+ public SubmitSeedId(String begId, String seedId) {
+ this.begId = begId;
+ this.seedId = seedId;
+ }
+
+ // 重写 equals 和 hashCode 方法
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ SubmitSeedId that = (SubmitSeedId) o;
+ return begId.equals(that.begId) && seedId.equals(that.seedId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(begId, seedId);
+ }
+
+ // getters and setters
+ public String getBegId() {
+ return begId;
+ }
+
+ public void setBegId(String begId) {
+ this.begId = begId;
+ }
+
+ public String getSeedId() {
+ return seedId;
+ }
+
+ public void setSeedId(String seedId) {
+ this.seedId = seedId;
+ }
+}
diff --git a/src/main/java/entity/TTorent.java b/src/main/java/entity/TTorent.java
new file mode 100644
index 0000000..167e853
--- /dev/null
+++ b/src/main/java/entity/TTorent.java
@@ -0,0 +1,5 @@
+package entity;
+
+public class TTorent{
+
+}
\ No newline at end of file
diff --git a/src/main/java/entity/TransRecord.java b/src/main/java/entity/TransRecord.java
new file mode 100644
index 0000000..cf7ac7f
--- /dev/null
+++ b/src/main/java/entity/TransRecord.java
@@ -0,0 +1,54 @@
+package entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "Transport")
+@IdClass(TransportId.class)
+public class TransRecord{
+ @Id
+ @Column(name = "task_id", length = 64, nullable = false)
+ public String taskid;
+
+ @Id
+ @Column(name = "uploader_id", length = 36, nullable = false)
+ public String uploaduserid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "uploader_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_tr_user_up"), insertable = false, updatable = false)
+ public User uploader;
+
+ @Id
+ @Column(name = "downloader_id", length = 36, nullable = false)
+ public String downloaduserid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "downloader_id", referencedColumnName = "user_id", foreignKey = @ForeignKey(name = "fk_tr_user_down"), insertable = false, updatable = false)
+ public User downloader;
+
+ @Column(name = "seed_id", length = 64, nullable = false)
+ public String seedid;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "seed_id", referencedColumnName = "seed_id", foreignKey = @ForeignKey(name = "fk_tr_seed"), insertable = false, updatable = false)
+ public Seed seed;
+
+ @Column(name = "uploaded", nullable = false)
+ public long upload;
+
+ @Column(name = "downloaded", nullable = false)
+ public long download;
+
+ @Column(name = "upload_peak", nullable = false)
+ public long maxupload;
+
+ @Column(name = "download_peak", nullable = false)
+ public long maxdownload;
+}
\ No newline at end of file
diff --git a/src/main/java/entity/TransportId.java b/src/main/java/entity/TransportId.java
new file mode 100644
index 0000000..f79962f
--- /dev/null
+++ b/src/main/java/entity/TransportId.java
@@ -0,0 +1,38 @@
+package entity;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class TransportId implements Serializable {
+ private String taskid;
+ private String uploaduserid;
+ private String downloaduserid;
+
+ public TransportId() {}
+
+ public TransportId(String taskid, String uploaduserid, String downloaduserid) {
+ this.taskid = taskid;
+ this.uploaduserid = uploaduserid;
+ this.downloaduserid = downloaduserid;
+ }
+
+ public String getTaskid() { return taskid; }
+ public void setTaskid(String taskid) { this.taskid = taskid; }
+ public String getUploaduserid() { return uploaduserid; }
+ public void setUploaduserid(String uploaduserid) { this.uploaduserid = uploaduserid; }
+ public String getDownloaduserid() { return downloaduserid; }
+ public void setDownloaduserid(String downloaduserid) { this.downloaduserid = downloaduserid; }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ TransportId that = (TransportId) o;
+ return Objects.equals(taskid, that.taskid) && Objects.equals(uploaduserid, that.uploaduserid) && Objects.equals(downloaduserid, that.downloaduserid);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(taskid, uploaduserid, downloaduserid);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/entity/User.java b/src/main/java/entity/User.java
new file mode 100644
index 0000000..603ec85
--- /dev/null
+++ b/src/main/java/entity/User.java
@@ -0,0 +1,57 @@
+package entity;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import com.querydsl.core.annotations.QueryEntity;
+
+@QueryEntity
+@Entity(name="User")
+@Table(name = "User")
+public class User {
+ @Id
+ @Column(name = "user_id", length = 36, nullable = false)
+ private String userid;
+
+ @Column(name = "email", nullable = false, length = 255, unique = true)
+ private String email;
+
+ @Column(name = "username", length = 100, nullable = false)
+ public String username;
+
+ @Column(name = "password", length = 255, nullable = false)
+ public String password;
+
+ @Column(name = "gender", nullable = false)
+ public String sex;
+
+ @Transient
+ public String age;
+
+ @Column(name = "school")
+ public String school;
+
+ @Column(name = "avatar_url")
+ public String pictureurl;
+
+ @Column(name = "bio")
+ public String profile;
+
+ @Column(name = "account_status", nullable = false)
+ public boolean accountstate;
+
+ @Column(name = "invite_left", nullable = false)
+ public int invitetimes;
+
+ @OneToOne(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional = false)
+ public UserPT userPT;
+
+ // Constructors, getters, setters
+ public User() {}
+}
diff --git a/src/main/java/entity/UserId.java b/src/main/java/entity/UserId.java
new file mode 100644
index 0000000..bc25675
--- /dev/null
+++ b/src/main/java/entity/UserId.java
@@ -0,0 +1,36 @@
+package entity;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class UserId implements Serializable {
+ private String userid;
+ private String email;
+
+ public UserId() {}
+
+ public UserId(String userid, String email) {
+ this.userid = userid;
+ this.email = email;
+ }
+
+ // getters and setters
+ public String getUserid() { return userid; }
+ public void setUserid(String userid) { this.userid = userid; }
+
+ public String getEmail() { return email; }
+ public void setEmail(String email) { this.email = email; }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UserId userId = (UserId) o;
+ return Objects.equals(userid, userId.userid) && Objects.equals(email, userId.email);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userid, email);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/entity/UserPT.java b/src/main/java/entity/UserPT.java
new file mode 100644
index 0000000..bc5d455
--- /dev/null
+++ b/src/main/java/entity/UserPT.java
@@ -0,0 +1,46 @@
+package entity;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.ForeignKey;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.MapsId;
+import javax.persistence.OneToOne;
+import javax.persistence.Table;
+
+import com.querydsl.core.annotations.QueryEntity;
+
+@QueryEntity
+@Entity(name="UserPT")
+@Table(name = "UserPT")
+public class UserPT {
+ @Id
+ @Column(name = "user_id", length = 36, nullable = false)
+ public String userid;
+
+ @OneToOne(optional = false, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+ @MapsId
+ @JoinColumn(name = "user_id", foreignKey = @ForeignKey(name = "fk_pt_user"))
+ public User user;
+
+ @Column(name = "magic", nullable = false)
+ public int magic;
+
+ @Column(name = "uploaded", nullable = false)
+ public long upload;
+
+ @Column(name = "downloaded", nullable = false)
+ public long download;
+
+ @Column(name = "ratio", nullable = false, precision = 5, scale = 2)
+ public double share;
+
+ @Column(name = "default_seed_path")
+ public String farmurl;
+
+ @Column(name = "vip_downloads", nullable = false)
+ public int viptime;
+}
diff --git a/src/main/java/entity/UserVotes.java b/src/main/java/entity/UserVotes.java
new file mode 100644
index 0000000..af28e3c
--- /dev/null
+++ b/src/main/java/entity/UserVotes.java
@@ -0,0 +1,44 @@
+package entity;
+
+import java.util.Date;
+import javax.persistence.*;
+
+@Entity
+@Table(name = "UserVotes")
+public class UserVotes {
+
+ @EmbeddedId
+ private UserVotesId id;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "user_id", referencedColumnName = "user_id",
+ foreignKey = @ForeignKey(name = "fk_user_votes_user"))
+ private User user;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "beg_id", referencedColumnName = "beg_id",
+ foreignKey = @ForeignKey(name = "fk_user_votes_beg"))
+ private BegInfo begInfo;
+
+ @ManyToOne(optional = false)
+ @JoinColumn(name = "seed_id", referencedColumnName = "seed_id",
+ foreignKey = @ForeignKey(name = "fk_user_votes_seed"))
+ private Seed seed;
+
+ @Column(name = "created_at", nullable = false)
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date createdAt;
+
+ public UserVotes() {}
+
+ // getter and setter for the composite key and other fields
+ public UserVotesId getId() {
+ return id;
+ }
+
+ public void setId(UserVotesId id) {
+ this.id = id;
+ }
+
+ // getters and setters for user, begInfo, seed, createdAt
+}
diff --git a/src/main/java/entity/UserVotesId.java b/src/main/java/entity/UserVotesId.java
new file mode 100644
index 0000000..4c0ce5f
--- /dev/null
+++ b/src/main/java/entity/UserVotesId.java
@@ -0,0 +1,57 @@
+package entity;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+public class UserVotesId implements Serializable {
+ private String userId;
+ private String begId;
+ private String seedId;
+
+ public UserVotesId() {}
+
+ public UserVotesId(String userId, String begId, String seedId) {
+ this.userId = userId;
+ this.begId = begId;
+ this.seedId = seedId;
+ }
+
+ // 重写 equals 和 hashCode 方法
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ UserVotesId that = (UserVotesId) o;
+ return userId.equals(that.userId) && begId.equals(that.begId) && seedId.equals(that.seedId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, begId, seedId);
+ }
+
+ // getters and setters
+ public String getUserId() {
+ return userId;
+ }
+
+ public void setUserId(String userId) {
+ this.userId = userId;
+ }
+
+ public String getBegId() {
+ return begId;
+ }
+
+ public void setBegId(String begId) {
+ this.begId = begId;
+ }
+
+ public String getSeedId() {
+ return seedId;
+ }
+
+ public void setSeedId(String seedId) {
+ this.seedId = seedId;
+ }
+}
diff --git a/src/main/java/entity/config.java b/src/main/java/entity/config.java
new file mode 100644
index 0000000..0cf39c1
--- /dev/null
+++ b/src/main/java/entity/config.java
@@ -0,0 +1,14 @@
+package entity;
+
+public class config {
+ public String TrackerURL;
+ public int FarmNumber;
+ public int FakeTime;
+ public int BegVote;
+ // 请根据实际环境修改为可达的地址
+ public String SqlURL = "192.168.5.9:3306";
+ public String Database = "pt_database";
+ public String TestDatabase = "pt_database_test";
+ public String SqlPassword = "123456";
+ public String SqlUsername = "root";
+}