diff --git a/src/main/java/rootbox/rootboxApp/api/user/presentation/UserApi.java b/src/main/java/rootbox/rootboxApp/api/user/presentation/UserApi.java index 991ec55..9e67d29 100644 --- a/src/main/java/rootbox/rootboxApp/api/user/presentation/UserApi.java +++ b/src/main/java/rootbox/rootboxApp/api/user/presentation/UserApi.java @@ -18,5 +18,5 @@ public class UserApi { @GetMapping(value = "/health") - public String health() {return "I'm healthy" ;} + public String health() {return "I'm healthy!!!" ;} } diff --git a/src/main/java/rootbox/rootboxApp/global/entity/ActivityCategory.java b/src/main/java/rootbox/rootboxApp/global/entity/ActivityCategory.java new file mode 100644 index 0000000..08b9b5e --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/ActivityCategory.java @@ -0,0 +1,23 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "activity_category") +public class ActivityCategory extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/ActivityPhoto.java b/src/main/java/rootbox/rootboxApp/global/entity/ActivityPhoto.java new file mode 100644 index 0000000..8ca90b6 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/ActivityPhoto.java @@ -0,0 +1,33 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "activity_photo") +public class ActivityPhoto extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String path; + + @ManyToOne(fetch = FetchType.LAZY) + private RouteActivity routeActivity; + + public void setRouteActivity(RouteActivity routeActivity) { + if(routeActivity != null) + this.routeActivity.getActivityPhotoList().remove(this); + this.routeActivity = routeActivity; + routeActivity.getActivityPhotoList().add(this); + } +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/Comment.java b/src/main/java/rootbox/rootboxApp/global/entity/Comment.java new file mode 100644 index 0000000..f1f81f0 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/Comment.java @@ -0,0 +1,35 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "comment") +public class Comment { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String content; + + @ManyToOne(fetch = FetchType.LAZY) + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + private Route route; + + public void setRoute(Route route) { + if (this.route != null) + this.route.getCommentList().remove(this); + this.route = route; + route.getCommentList().add(this); + } +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/CommentReport.java b/src/main/java/rootbox/rootboxApp/global/entity/CommentReport.java new file mode 100644 index 0000000..f4d7f32 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/CommentReport.java @@ -0,0 +1,26 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "comment_report") +public class CommentReport { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + private Route route; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/Inquery.java b/src/main/java/rootbox/rootboxApp/global/entity/Inquery.java new file mode 100644 index 0000000..0638f02 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/Inquery.java @@ -0,0 +1,42 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.enums.inquery.InqueryType; + +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "inquery") +public class Inquery { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String content; + + @Enumerated(EnumType.STRING) + private InqueryType type; + + @ManyToOne(fetch = FetchType.LAZY) + private User user; + + @OneToMany(mappedBy = "inquery") + private List inqueryPhotoList = new ArrayList<>(); + + public void setUser(User user) { + if(user != null) + this.user.getInqueryList().remove(this); + this.user = user; + user.getInqueryList().add(this); + } +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/InqueryPhoto.java b/src/main/java/rootbox/rootboxApp/global/entity/InqueryPhoto.java new file mode 100644 index 0000000..11f05c5 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/InqueryPhoto.java @@ -0,0 +1,32 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "inquery_photo") +public class InqueryPhoto { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String path; + + @ManyToOne(fetch = FetchType.LAZY) + private Inquery inquery; + + public void setInquery(Inquery inquery) { + if (this.inquery != null) + this.inquery.getInqueryPhotoList().remove(this); + this.inquery = inquery; + inquery.getInqueryPhotoList().add(this); + } +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/PointHistory.java b/src/main/java/rootbox/rootboxApp/global/entity/PointHistory.java new file mode 100644 index 0000000..139279c --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/PointHistory.java @@ -0,0 +1,30 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "point_history") +public class PointHistory { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Integer plusYn; + + private String description; + + @ManyToOne(fetch = FetchType.LAZY) + private Route route; + + @ManyToOne(fetch = FetchType.LAZY) + private User user; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/ReportReason.java b/src/main/java/rootbox/rootboxApp/global/entity/ReportReason.java new file mode 100644 index 0000000..72cc797 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/ReportReason.java @@ -0,0 +1,23 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "report_reason") +public class ReportReason extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String reason; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/Route.java b/src/main/java/rootbox/rootboxApp/global/entity/Route.java new file mode 100644 index 0000000..36c496e --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/Route.java @@ -0,0 +1,65 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; +import rootbox.rootboxApp.global.entity.enums.route.WhoWith; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "route") +public class Route extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private LocalDateTime stdDate; + + private LocalDateTime endDate; + + private Integer publicYn = 1; + + private String title; + + @Enumerated(EnumType.STRING) + private WhoWith whoWith; + + private Integer numberOfPeople; + + // 0 = 당일, 1 = 1박 2일 ... + private Integer numberOfDays; + + private String transfer; + + @OneToMany(mappedBy = "route") + private List userRouteStyleList = new ArrayList<>(); + + @OneToMany(mappedBy = "route") + private List userRouteActivityList = new ArrayList<>(); + + @OneToMany(mappedBy = "route") + private List commentList = new ArrayList<>(); + + @ManyToOne(fetch = FetchType.LAZY) + private User user; + + public void setUser(User user) { + if (this.user != null) { + this.user.getRouteList().remove(this); + } + this.user = user; + user.getRouteList().add(this); + } + +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/RouteActivity.java b/src/main/java/rootbox/rootboxApp/global/entity/RouteActivity.java new file mode 100644 index 0000000..8c84a65 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/RouteActivity.java @@ -0,0 +1,52 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "route_activity") +public class RouteActivity extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long sortNo; + + private String title; + + private String category; + + private LocalDateTime stdDate; + + private LocalDateTime endDate; + + private Float latitude; + + private Float longitude; + + @ManyToOne(fetch = FetchType.LAZY) + private Route route; + + @OneToMany(mappedBy = "routeActivity") + private List activityPhotoList = new ArrayList<>(); + + public void setRoute(Route route) { + if(this.route != null) + this.route.getUserRouteActivityList().remove(this); + this.route = route; + route.getUserRouteActivityList().add(this); + } +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/RouteReport.java b/src/main/java/rootbox/rootboxApp/global/entity/RouteReport.java new file mode 100644 index 0000000..4fa7e7e --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/RouteReport.java @@ -0,0 +1,29 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "route_report") +public class RouteReport extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String reason; + + @ManyToOne(fetch = FetchType.LAZY) + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + private Route route; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/RouteStyle.java b/src/main/java/rootbox/rootboxApp/global/entity/RouteStyle.java new file mode 100644 index 0000000..f330983 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/RouteStyle.java @@ -0,0 +1,23 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "route_style") +public class RouteStyle extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/RouteTransfer.java b/src/main/java/rootbox/rootboxApp/global/entity/RouteTransfer.java new file mode 100644 index 0000000..79fbdf2 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/RouteTransfer.java @@ -0,0 +1,23 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "route_transfer") +public class RouteTransfer extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/User.java b/src/main/java/rootbox/rootboxApp/global/entity/User.java new file mode 100644 index 0000000..06a6af1 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/User.java @@ -0,0 +1,60 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; +import rootbox.rootboxApp.global.entity.enums.user.SocialType; +import rootbox.rootboxApp.global.entity.enums.user.UserRole; +import rootbox.rootboxApp.global.entity.enums.user.UserSexType; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "user") +public class User extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String nickname; + + private LocalDate birthday; + + @Enumerated(EnumType.STRING) + private UserSexType sex; + + private String socialLoginUid; + + @Enumerated(EnumType.STRING) + private SocialType socialLoginType; + + @Enumerated(EnumType.STRING) + private UserRole userRole; + + private String introduction; + + private LocalDate deleteDate; + + private String ProfileImageUrl; + + private Integer marketingYn = 0; + + private Integer travelPhotoWn = 0; + + @OneToMany(mappedBy = "user") + private List routeList = new ArrayList<>(); + + @OneToMany(mappedBy = "user") + private List inqueryList = new ArrayList<>(); +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/UserPoint.java b/src/main/java/rootbox/rootboxApp/global/entity/UserPoint.java new file mode 100644 index 0000000..b1f61d3 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/UserPoint.java @@ -0,0 +1,25 @@ +package rootbox.rootboxApp.global.entity; + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "user_point") +public class UserPoint { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Integer point; + + @OneToOne + private User user; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/UserRouteStyle.java b/src/main/java/rootbox/rootboxApp/global/entity/UserRouteStyle.java new file mode 100644 index 0000000..9315988 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/UserRouteStyle.java @@ -0,0 +1,36 @@ +package rootbox.rootboxApp.global.entity; + + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import rootbox.rootboxApp.global.entity.common.BaseEntity; + +@Entity +@Getter +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Table(name = "user_route_style") +public class UserRouteStyle extends BaseEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + private User user; + + @ManyToOne(fetch = FetchType.LAZY) + private Route route; + + public void setRoute(Route route) { + if (this.route != null) { + this.route.getUserRouteStyleList().remove(this); + } + this.route = route; + route.getUserRouteStyleList().add(this); + } +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/common/BaseEntity.java b/src/main/java/rootbox/rootboxApp/global/entity/common/BaseEntity.java new file mode 100644 index 0000000..135dff0 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/common/BaseEntity.java @@ -0,0 +1,26 @@ +package rootbox.rootboxApp.global.entity.common; + +import jakarta.persistence.Column; +import jakarta.persistence.EntityListeners; +import jakarta.persistence.MappedSuperclass; +import lombok.Getter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@EntityListeners(AuditingEntityListener.class) +@MappedSuperclass +@Getter +public abstract class BaseEntity { + + @Column(name = "deleteYn") + private Integer deleteYn = 0; + + @Column(nullable = false, updatable = false, name = "reg_date") + @CreatedDate + private LocalDateTime regDate; + + @Column(nullable = false,name = "mod_date") + private LocalDateTime modDate; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/enums/inquery/InqueryType.java b/src/main/java/rootbox/rootboxApp/global/entity/enums/inquery/InqueryType.java new file mode 100644 index 0000000..fbde325 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/enums/inquery/InqueryType.java @@ -0,0 +1,5 @@ +package rootbox.rootboxApp.global.entity.enums.inquery; + +public enum InqueryType { + 오류, 회원정보, 기타; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/enums/route/WhoWith.java b/src/main/java/rootbox/rootboxApp/global/entity/enums/route/WhoWith.java new file mode 100644 index 0000000..9646400 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/enums/route/WhoWith.java @@ -0,0 +1,6 @@ +package rootbox.rootboxApp.global.entity.enums.route; + +public enum WhoWith { + + 혼자, 친구와, 연인과, 배우자와, 아이와, 부모님과, 누군가와; +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/enums/user/SocialType.java b/src/main/java/rootbox/rootboxApp/global/entity/enums/user/SocialType.java new file mode 100644 index 0000000..61cb610 --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/enums/user/SocialType.java @@ -0,0 +1,6 @@ +package rootbox.rootboxApp.global.entity.enums.user; + +public enum SocialType { + + KAKAO,APPLE +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/enums/user/UserRole.java b/src/main/java/rootbox/rootboxApp/global/entity/enums/user/UserRole.java new file mode 100644 index 0000000..a9c1eba --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/enums/user/UserRole.java @@ -0,0 +1,6 @@ +package rootbox.rootboxApp.global.entity.enums.user; + +public enum UserRole { + + USER, ADMIN +} diff --git a/src/main/java/rootbox/rootboxApp/global/entity/enums/user/UserSexType.java b/src/main/java/rootbox/rootboxApp/global/entity/enums/user/UserSexType.java new file mode 100644 index 0000000..2efb31f --- /dev/null +++ b/src/main/java/rootbox/rootboxApp/global/entity/enums/user/UserSexType.java @@ -0,0 +1,6 @@ +package rootbox.rootboxApp.global.entity.enums.user; + +public enum UserSexType { + + MALE,FEMALE,SECRET +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3f306ad..903bd18 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -38,10 +38,9 @@ spring: on-profile: "dev" jackson: time-zone: Asia/Seoul - datasource: username: ${aws.db.username} password: ${aws.db.password} - url: jdbc:mysql://${aws.db.url}/${aws.db.name}?autoReconnect=true&setTimezone=Asia/Seoul + url: jdbc:mysql://${aws.db.url} driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 10 @@ -104,8 +103,8 @@ spring: on-profile: "local" datasource: username: root - password: 1234 - url: jdbc:mysql://localhost:3306/rootbox + password: 12345678 + url: jdbc:mysql://routebox-dev-db.cb2ag0e4u15c.ap-northeast-2.rds.amazonaws.com:3306/routebox driver-class-name: com.mysql.cj.jdbc.Driver hikari: maximum-pool-size: 10