From 0347c4561dd322143f7bd83af39e1df36d3a6c1e Mon Sep 17 00:00:00 2001 From: Dayeon-Hong Date: Mon, 4 Mar 2024 17:48:57 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix=20:=20Schedule=20API=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20UPDATE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DB 수정 / API 수정 --- backend/build.gradle | 11 +++++++---- .../backend/domain/country/entity/Country.java | 9 +++++++++ .../domain/schedule/dto/ScheduleDetailDTO.java | 3 +++ .../schedule/dto/ScheduleListResponseDTO.java | 6 ++++++ .../domain/schedule/mapper/ScheduleMapper.java | 14 ++++++++++++-- .../scheduleDetail/entity/ScheduleDetail.java | 4 ++++ .../scheduleDetail/entity/ScheduleType.java | 16 ++++++++++++++++ 7 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleType.java diff --git a/backend/build.gradle b/backend/build.gradle index b3c3b8d2..275b540a 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -30,17 +30,20 @@ dependencies { annotationProcessor 'org.projectlombok:lombok' runtimeOnly 'com.mysql:mysql-connector-j' - // jwt + // JWT implementation 'io.jsonwebtoken:jjwt-api:0.11.5' implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' + // AWS + implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.4.2' + + // Open API + implementation "com.amadeus:amadeus-java:8.0.0" + testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' - //AWS - implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.4.2' - } tasks.named('test') { diff --git a/backend/src/main/java/com/isp/backend/domain/country/entity/Country.java b/backend/src/main/java/com/isp/backend/domain/country/entity/Country.java index 9ba23583..54dff725 100644 --- a/backend/src/main/java/com/isp/backend/domain/country/entity/Country.java +++ b/backend/src/main/java/com/isp/backend/domain/country/entity/Country.java @@ -28,6 +28,15 @@ public class Country { @Column(name = "imageUrl") private String imageUrl; + @Column(name = "airport_code") + private String airportCode; + + @Column(name = "latitude") // 위도 + private double latitude ; + + @Column(name = "longitude") // 경도 + private double longitude ; + @OneToMany (mappedBy = "country") private List schedules; diff --git a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java index 4555949f..fc6f9841 100644 --- a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java +++ b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java @@ -1,6 +1,7 @@ package com.isp.backend.domain.schedule.dto; +import com.isp.backend.domain.scheduleDetail.entity.ScheduleType; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -16,6 +17,8 @@ public class ScheduleDetailDTO { private String place; // 장소 + private ScheduleType type; // 일정 유형 + private double budget; // 예산 private double latitude; // 위도 diff --git a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java index 8ab3d548..3f970127 100644 --- a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java +++ b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java @@ -21,4 +21,10 @@ public class ScheduleListResponseDTO { private String imageUrl ; + private String country; + + private double latitude ; + + private double longitude ; + } diff --git a/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java b/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java index 544ef15d..1df27c18 100644 --- a/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java +++ b/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java @@ -8,6 +8,7 @@ import com.isp.backend.domain.schedule.dto.ScheduleListResponseDTO; import com.isp.backend.domain.schedule.dto.ScheduleSaveRequestDTO; import com.isp.backend.domain.schedule.entity.Schedule; +import com.isp.backend.domain.scheduleDetail.entity.ScheduleType; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -49,7 +50,7 @@ public Schedule toSchedulesEntity(ScheduleSaveRequestDTO scheduleSaveRequestDTO, // 일정 세부 DTO를 엔티티로 변환 private ScheduleDetail toScheduleDetailEntity(ScheduleDetailDTO scheduleDetailDTO, DailyScheduleDTO dailyScheduleDTO, Schedule schedule, int num) { - return ScheduleDetail.builder() + ScheduleDetail scheduleDetail = ScheduleDetail.builder() .todo(scheduleDetailDTO.getTodo()) .place(scheduleDetailDTO.getPlace()) .budget(scheduleDetailDTO.getBudget()) @@ -59,6 +60,11 @@ private ScheduleDetail toScheduleDetailEntity(ScheduleDetailDTO scheduleDetailDT .num(num) // 일정 순서 저장 .schedule(schedule) .build(); + + // ScheduleDetailDTO에서 직접 ScheduleType을 가져와서 설정 + scheduleDetail.setScheduleType(scheduleDetailDTO.getType()); + + return scheduleDetail; } @@ -70,7 +76,10 @@ public ScheduleListResponseDTO toScheduleListResponseDTO(Schedule schedule) { schedule.getStartDate(), schedule.getEndDate(), schedule.getTotalPrice(), - schedule.getCountry().getImageUrl() + schedule.getCountry().getImageUrl(), + schedule.getCountry().getCity(), + schedule.getCountry().getLatitude(), + schedule.getCountry().getLongitude() ); } @@ -107,6 +116,7 @@ private ScheduleDetailDTO toScheduleDetailDTO(ScheduleDetail scheduleDetail) { return new ScheduleDetailDTO( scheduleDetail.getTodo(), scheduleDetail.getPlace(), + scheduleDetail.getScheduleType(), scheduleDetail.getBudget(), scheduleDetail.getLatitude(), scheduleDetail.getLongitude() diff --git a/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleDetail.java b/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleDetail.java index 08266c3c..5674db3f 100644 --- a/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleDetail.java +++ b/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleDetail.java @@ -33,6 +33,10 @@ public class ScheduleDetail { @Column(name = "budget") // 예산 private double budget ; + @Column(name = "schedule_type", nullable = true) // 일정 유형 + @Enumerated(EnumType.STRING) + private ScheduleType scheduleType ; + @Column(name = "latitude") // 위도 private double latitude ; diff --git a/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleType.java b/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleType.java new file mode 100644 index 00000000..f363c005 --- /dev/null +++ b/backend/src/main/java/com/isp/backend/domain/scheduleDetail/entity/ScheduleType.java @@ -0,0 +1,16 @@ +package com.isp.backend.domain.scheduleDetail.entity; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum ScheduleType { + + AIRPLANE, // 비행기 + + HOTEL, // 호텧 + + PLACE, // 관광지 장소 + +}; \ No newline at end of file From 0d7306241267af260e5d11ada891ced1f9686bbc Mon Sep 17 00:00:00 2001 From: Dayeon-Hong Date: Mon, 4 Mar 2024 17:48:57 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix=20:=20Schedule=20API=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20UPDATE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DB 수정 / API 수정 --- backend/build.gradle | 19 +++++++++++-------- .../schedule/dto/ScheduleDetailDTO.java | 3 +++ .../schedule/dto/ScheduleListResponseDTO.java | 6 ++++++ .../schedule/mapper/ScheduleMapper.java | 15 ++++++++++++--- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/backend/build.gradle b/backend/build.gradle index badb0f19..5afb4769 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -30,16 +30,19 @@ dependencies { annotationProcessor 'org.projectlombok:lombok' runtimeOnly 'com.mysql:mysql-connector-j' - // jwt - implementation 'io.jsonwebtoken:jjwt-api:0.11.5' - implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' - implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' + // JWT + implementation 'io.jsonwebtoken:jjwt-api:0.11.5' + implementation 'io.jsonwebtoken:jjwt-impl:0.11.5' + implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5' - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.springframework.security:spring-security-test' + // AWS + implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.4.2' - //AWS - implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.4.2' + // Open API + implementation "com.amadeus:amadeus-java:8.0.0" + + testImplementation 'org.springframework.boot:spring-boot-starter-test' + testImplementation 'org.springframework.security:spring-security-test' } diff --git a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java index 4555949f..fc6f9841 100644 --- a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java +++ b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleDetailDTO.java @@ -1,6 +1,7 @@ package com.isp.backend.domain.schedule.dto; +import com.isp.backend.domain.scheduleDetail.entity.ScheduleType; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; @@ -16,6 +17,8 @@ public class ScheduleDetailDTO { private String place; // 장소 + private ScheduleType type; // 일정 유형 + private double budget; // 예산 private double latitude; // 위도 diff --git a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java index 1c038bdc..5cb0f513 100644 --- a/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java +++ b/backend/src/main/java/com/isp/backend/domain/schedule/dto/ScheduleListResponseDTO.java @@ -21,4 +21,10 @@ public class ScheduleListResponseDTO { private String imageUrl; + private String country; + + private double latitude ; + + private double longitude ; + } diff --git a/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java b/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java index a2cc1eac..b60c645b 100644 --- a/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java +++ b/backend/src/main/java/com/isp/backend/domain/schedule/mapper/ScheduleMapper.java @@ -7,7 +7,7 @@ import com.isp.backend.domain.schedule.dto.ScheduleListResponseDTO; import com.isp.backend.domain.schedule.dto.ScheduleSaveRequestDTO; import com.isp.backend.domain.schedule.entity.Schedule; -import com.isp.backend.domain.scheduleDetail.entity.ScheduleDetail; +import com.isp.backend.domain.scheduleDetail.entity.ScheduleType; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @@ -51,7 +51,7 @@ public Schedule toSchedulesEntity(ScheduleSaveRequestDTO scheduleSaveRequestDTO, // 일정 세부 DTO를 엔티티로 변환 private ScheduleDetail toScheduleDetailEntity(ScheduleDetailDTO scheduleDetailDTO, DailyScheduleDTO dailyScheduleDTO, Schedule schedule, int num) { - return ScheduleDetail.builder() + ScheduleDetail scheduleDetail = ScheduleDetail.builder() .todo(scheduleDetailDTO.getTodo()) .place(scheduleDetailDTO.getPlace()) .budget(scheduleDetailDTO.getBudget()) @@ -61,6 +61,11 @@ private ScheduleDetail toScheduleDetailEntity(ScheduleDetailDTO scheduleDetailDT .num(num) // 일정 순서 저장 .schedule(schedule) .build(); + + // ScheduleDetailDTO에서 직접 ScheduleType을 가져와서 설정 + scheduleDetail.setScheduleType(scheduleDetailDTO.getType()); + + return scheduleDetail; } @@ -74,7 +79,10 @@ public ScheduleListResponseDTO toScheduleListResponseDTO(Schedule schedule) { schedule.getStartDate(), schedule.getEndDate(), schedule.getTotalPrice(), - schedule.getCountry().getImageUrl() + schedule.getCountry().getImageUrl(), + schedule.getCountry().getCity(), + schedule.getCountry().getLatitude(), + schedule.getCountry().getLongitude() ); } @@ -113,6 +121,7 @@ private ScheduleDetailDTO toScheduleDetailDTO(ScheduleDetail scheduleDetail) { return new ScheduleDetailDTO( scheduleDetail.getTodo(), scheduleDetail.getPlace(), + scheduleDetail.getScheduleType(), scheduleDetail.getBudget(), scheduleDetail.getLatitude(), scheduleDetail.getLongitude()