diff --git a/src/main/java/gdsc/sc/bsafe/domain/AIRecord.java b/src/main/java/gdsc/sc/bsafe/domain/AIRecord.java new file mode 100644 index 0000000..3ecb6a2 --- /dev/null +++ b/src/main/java/gdsc/sc/bsafe/domain/AIRecord.java @@ -0,0 +1,26 @@ +package gdsc.sc.bsafe.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@DiscriminatorValue("AI") +public class AIRecord extends Record { + + @Column(nullable = false) + private Integer grade; + + @Builder + public AIRecord(User user, String image, String title, String detail, Integer grade){ + super(user, image, title, detail); + this.grade = grade; + } + +} diff --git a/src/main/java/gdsc/sc/bsafe/domain/BasicRecord.java b/src/main/java/gdsc/sc/bsafe/domain/BasicRecord.java new file mode 100644 index 0000000..ecef1fe --- /dev/null +++ b/src/main/java/gdsc/sc/bsafe/domain/BasicRecord.java @@ -0,0 +1,21 @@ +package gdsc.sc.bsafe.domain; + +import jakarta.persistence.DiscriminatorValue; +import jakarta.persistence.Entity; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@DiscriminatorValue("BASIC") +public class BasicRecord extends Record { + + @Builder + public BasicRecord(User user, String image, String title, String detail){ + super(user, image, title, detail); + } + +} diff --git a/src/main/java/gdsc/sc/bsafe/domain/Record.java b/src/main/java/gdsc/sc/bsafe/domain/Record.java new file mode 100644 index 0000000..2137b72 --- /dev/null +++ b/src/main/java/gdsc/sc/bsafe/domain/Record.java @@ -0,0 +1,46 @@ +package gdsc.sc.bsafe.domain; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@DiscriminatorColumn +@Table(name = "record") +public class Record { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "record_id") + private Long recordId; + + @ManyToOne + @JoinColumn(name = "user_id", nullable = false) + private User user; + + @Column(nullable = false) + private String image; + + @Column(nullable = false) + private String title; + + @Column(nullable = false) + private String detail; + + /* + ENUM 타입으로 변경하기 + private String category; + */ + + public Record(User user, String image, String title, String detail){ + this.user = user; + this.image = image; + this.title = title; + this.detail = detail; + } + + +} diff --git a/src/main/java/gdsc/sc/bsafe/domain/User.java b/src/main/java/gdsc/sc/bsafe/domain/User.java index f3d769d..db9b64a 100644 --- a/src/main/java/gdsc/sc/bsafe/domain/User.java +++ b/src/main/java/gdsc/sc/bsafe/domain/User.java @@ -2,12 +2,16 @@ import gdsc.sc.bsafe.domain.common.BaseTimeEntity; import gdsc.sc.bsafe.domain.enums.Authority; +import gdsc.sc.bsafe.domain.mapping.HelpRecord; import gdsc.sc.bsafe.global.auth.Password; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.ArrayList; +import java.util.List; + import static gdsc.sc.bsafe.domain.enums.Authority.ROLE_USER; @Entity @@ -30,12 +34,18 @@ public class User extends BaseTimeEntity { @Column(nullable = false, unique = true) private String email; + @Column(nullable = false, unique = true) + private String tel; + @Column(nullable = false) private String name; @Enumerated(EnumType.STRING) private Authority authority = ROLE_USER; + @OneToMany(mappedBy = "helper") + private List helpedRecords = new ArrayList<>(); + public User(String id, Password password, String email, String name) { this.id = id; this.password = password; diff --git a/src/main/java/gdsc/sc/bsafe/domain/enums/RequestStatus.java b/src/main/java/gdsc/sc/bsafe/domain/enums/RequestStatus.java new file mode 100644 index 0000000..37dd31e --- /dev/null +++ b/src/main/java/gdsc/sc/bsafe/domain/enums/RequestStatus.java @@ -0,0 +1,10 @@ +package gdsc.sc.bsafe.domain.enums; + +public enum RequestStatus { + REQUESTED("요청"), + PROCEEDING("진행"), + COMPLETED("완료"); + + private String description; + RequestStatus(String description){this.description=description;} +} diff --git a/src/main/java/gdsc/sc/bsafe/domain/mapping/HelpRecord.java b/src/main/java/gdsc/sc/bsafe/domain/mapping/HelpRecord.java new file mode 100644 index 0000000..6ced0d1 --- /dev/null +++ b/src/main/java/gdsc/sc/bsafe/domain/mapping/HelpRecord.java @@ -0,0 +1,47 @@ +package gdsc.sc.bsafe.domain.mapping; + +import gdsc.sc.bsafe.domain.Record; +import gdsc.sc.bsafe.domain.User; +import gdsc.sc.bsafe.domain.common.BaseTimeEntity; +import gdsc.sc.bsafe.domain.enums.RequestStatus; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.Date; + +@Entity +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Table(name = "help_record") +public class HelpRecord extends BaseTimeEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "report_id") + private Long reportId; + + @ManyToOne + @JoinColumn(name = "record_id", nullable = false) + private Record record; + + @ManyToOne + @JoinColumn(name = "helper_id", nullable = false) + private User helper; + + @Column(nullable = false) + private RequestStatus status; + + @Column(nullable = false) + private Date date; + + @Column(nullable = false) + private String placeId; + + @Column(nullable = false) + private String district; + + @Column(nullable = false) + private String address; + +}