From f59370e27c3f572d743b2c23dabd963b26b359ac Mon Sep 17 00:00:00 2001 From: eeeeeaaan Date: Sat, 5 Jul 2025 09:42:10 +0900 Subject: [PATCH 1/7] =?UTF-8?q?[FEAT]=20=EC=9D=B4=EC=9A=A9=EB=8C=80?= =?UTF-8?q?=EC=83=81=20=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OptionServiceController.java | 4 +++ .../controller/TargetAudienceController.java | 31 ++++++++++++++++++ .../converter/OptionServiceConverter.java | 10 ++++++ .../converter/TargetAudienceConverter.java | 32 +++++++++++++++++++ .../guesthouse/dto/OptionResponseDTO.java | 30 +++++++++++++++++ .../guesthouse/entity/OptionServices.java | 4 +++ .../repository/TargetAudienceRepository.java | 3 ++ .../service/OptionQueryService.java | 5 +++ .../service/TargetQeuryService.java | 28 ++++++++++++++++ 9 files changed, 147 insertions(+) create mode 100644 src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java create mode 100644 src/main/java/com/sumte/guesthouse/controller/TargetAudienceController.java create mode 100644 src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java create mode 100644 src/main/java/com/sumte/guesthouse/converter/TargetAudienceConverter.java create mode 100644 src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java create mode 100644 src/main/java/com/sumte/guesthouse/service/OptionQueryService.java create mode 100644 src/main/java/com/sumte/guesthouse/service/TargetQeuryService.java diff --git a/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java b/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java new file mode 100644 index 0000000..d7f1ceb --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java @@ -0,0 +1,4 @@ +package com.sumte.guesthouse.controller; + +public class OptionServiceController { +} diff --git a/src/main/java/com/sumte/guesthouse/controller/TargetAudienceController.java b/src/main/java/com/sumte/guesthouse/controller/TargetAudienceController.java new file mode 100644 index 0000000..1e2a0bf --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/controller/TargetAudienceController.java @@ -0,0 +1,31 @@ +package com.sumte.guesthouse.controller; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.sumte.apiPayload.ApiResponse; +import com.sumte.guesthouse.dto.OptionResponseDTO; +import com.sumte.guesthouse.service.TargetQeuryService; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; + +@RestController +@Tag(name = "이용대상 조회 api", description = "게스트하우스의 이용대상을 조회하는 api 입니다.") +@RequiredArgsConstructor +@RequestMapping("/target") +public class TargetAudienceController { + + private final TargetQeuryService targetQeuryService; + + @GetMapping + @Operation(summary = "이용대상 조회", description = "필터링 시 게스트 하우스의 이용대상 목록을 전체 조회합니다") + public ApiResponse getTargetAudience() { + OptionResponseDTO.TargetList targetAudienceList = targetQeuryService.getAllTargetAudience(); + + return ApiResponse.success(targetAudienceList); + + } +} diff --git a/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java b/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java new file mode 100644 index 0000000..c38ecb4 --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java @@ -0,0 +1,10 @@ +package com.sumte.guesthouse.converter; + +import org.springframework.stereotype.Component; + +import lombok.RequiredArgsConstructor; + +@Component +@RequiredArgsConstructor +public class OptionServiceConverter { +} diff --git a/src/main/java/com/sumte/guesthouse/converter/TargetAudienceConverter.java b/src/main/java/com/sumte/guesthouse/converter/TargetAudienceConverter.java new file mode 100644 index 0000000..f342ee9 --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/converter/TargetAudienceConverter.java @@ -0,0 +1,32 @@ +package com.sumte.guesthouse.converter; + +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Component; + +import com.sumte.guesthouse.dto.OptionResponseDTO; +import com.sumte.guesthouse.entity.TargetAudience; + +import lombok.RequiredArgsConstructor; + +@Component +@RequiredArgsConstructor +public class TargetAudienceConverter { + public static OptionResponseDTO.Target toTarget(TargetAudience targetAudience) { + return OptionResponseDTO.Target.builder() + .name(targetAudience.getName()) + .build(); + } + + public static OptionResponseDTO.TargetList toTargetList(List targetAudiences) { + + List optionList = targetAudiences.stream() + .map(TargetAudienceConverter::toTarget).collect(Collectors.toList()); + + return OptionResponseDTO.TargetList.builder() + .targets(optionList) + .build(); + + } +} diff --git a/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java b/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java new file mode 100644 index 0000000..2dd8a47 --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java @@ -0,0 +1,30 @@ +package com.sumte.guesthouse.dto; + +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +public class OptionResponseDTO { + + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class Target { + String name; + } + + // 페이징 처리 안한 이유는 어차피 targetAudience 나 OptionService같은 경우엔 + // 굳이 필요 없을 것 같기 때문입니다. 전체 조회 api 이기도 하구요 + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class TargetList { + List targets; + } + +} diff --git a/src/main/java/com/sumte/guesthouse/entity/OptionServices.java b/src/main/java/com/sumte/guesthouse/entity/OptionServices.java index 541deea..0d2a642 100644 --- a/src/main/java/com/sumte/guesthouse/entity/OptionServices.java +++ b/src/main/java/com/sumte/guesthouse/entity/OptionServices.java @@ -4,12 +4,16 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @Entity @Getter @NoArgsConstructor +@Builder +@AllArgsConstructor public class OptionServices { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/com/sumte/guesthouse/repository/TargetAudienceRepository.java b/src/main/java/com/sumte/guesthouse/repository/TargetAudienceRepository.java index 7760ebb..5ed8821 100644 --- a/src/main/java/com/sumte/guesthouse/repository/TargetAudienceRepository.java +++ b/src/main/java/com/sumte/guesthouse/repository/TargetAudienceRepository.java @@ -1,5 +1,6 @@ package com.sumte.guesthouse.repository; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; @@ -8,4 +9,6 @@ public interface TargetAudienceRepository extends JpaRepository { Optional findByName(String name); + + List findAll(); } diff --git a/src/main/java/com/sumte/guesthouse/service/OptionQueryService.java b/src/main/java/com/sumte/guesthouse/service/OptionQueryService.java new file mode 100644 index 0000000..034bc11 --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/service/OptionQueryService.java @@ -0,0 +1,5 @@ +package com.sumte.guesthouse.service; + +public class OptionQueryService { + +} diff --git a/src/main/java/com/sumte/guesthouse/service/TargetQeuryService.java b/src/main/java/com/sumte/guesthouse/service/TargetQeuryService.java new file mode 100644 index 0000000..da8eaca --- /dev/null +++ b/src/main/java/com/sumte/guesthouse/service/TargetQeuryService.java @@ -0,0 +1,28 @@ +package com.sumte.guesthouse.service; + +import java.util.List; + +import org.springframework.stereotype.Service; + +import com.sumte.guesthouse.converter.TargetAudienceConverter; +import com.sumte.guesthouse.dto.OptionResponseDTO; +import com.sumte.guesthouse.entity.TargetAudience; +import com.sumte.guesthouse.repository.TargetAudienceRepository; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class TargetQeuryService { + + private final TargetAudienceRepository targetAudienceRepository; + private final TargetAudienceConverter targetAudienceConverter; + + public OptionResponseDTO.TargetList getAllTargetAudience() { + List targetAudienceList = targetAudienceRepository.findAll(); + + OptionResponseDTO.TargetList targetList = targetAudienceConverter.toTargetList(targetAudienceList); + + return targetList; + } +} From cd7b184b185877f8ed8c30c6ef230d6c920c9dd9 Mon Sep 17 00:00:00 2001 From: eeeeeaaan Date: Sat, 5 Jul 2025 09:57:55 +0900 Subject: [PATCH 2/7] =?UTF-8?q?[FEAT]=20=EB=B6=80=EA=B0=80=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EC=A0=84=EC=B2=B4=20=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OptionServiceController.java | 27 +++++++++++++++++++ .../converter/OptionServiceConverter.java | 22 +++++++++++++++ .../guesthouse/dto/OptionResponseDTO.java | 18 +++++++++++++ .../repository/OptionServicesRepository.java | 3 +++ .../service/OptionQueryService.java | 24 +++++++++++++++++ 5 files changed, 94 insertions(+) diff --git a/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java b/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java index d7f1ceb..6be9b27 100644 --- a/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java +++ b/src/main/java/com/sumte/guesthouse/controller/OptionServiceController.java @@ -1,4 +1,31 @@ package com.sumte.guesthouse.controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.sumte.apiPayload.ApiResponse; +import com.sumte.guesthouse.dto.OptionResponseDTO; +import com.sumte.guesthouse.service.OptionQueryService; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; + +@RestController +@Tag(name = "부가서비스 조회 api", description = "부가서비스 리스트를 조회하는 api 입니다.") +@RequiredArgsConstructor +@RequestMapping("/option") public class OptionServiceController { + + private final OptionQueryService optionQueryService; + + @GetMapping + @Operation(summary = "부가서비스 목록 조회", description = "부가서비스 목록을 전체 조회합니다") + public ApiResponse getOptionServices() { + OptionResponseDTO.OptionList optionServiceList = optionQueryService.getAllOptionServices(); + + return ApiResponse.success(optionServiceList); + + } } diff --git a/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java b/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java index c38ecb4..d78f465 100644 --- a/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java +++ b/src/main/java/com/sumte/guesthouse/converter/OptionServiceConverter.java @@ -1,10 +1,32 @@ package com.sumte.guesthouse.converter; +import java.util.List; +import java.util.stream.Collectors; + import org.springframework.stereotype.Component; +import com.sumte.guesthouse.dto.OptionResponseDTO; +import com.sumte.guesthouse.entity.OptionServices; + import lombok.RequiredArgsConstructor; @Component @RequiredArgsConstructor public class OptionServiceConverter { + public static OptionResponseDTO.Option toOption(OptionServices optionServices) { + return OptionResponseDTO.Option.builder() + .name(optionServices.getName()) + .build(); + } + + public static OptionResponseDTO.OptionList toOptionList(List optionServices) { + + List optionList = optionServices.stream() + .map(OptionServiceConverter::toOption).collect(Collectors.toList()); + + return OptionResponseDTO.OptionList.builder() + .options(optionList) + .build(); + + } } diff --git a/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java b/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java index 2dd8a47..f64b137 100644 --- a/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java +++ b/src/main/java/com/sumte/guesthouse/dto/OptionResponseDTO.java @@ -27,4 +27,22 @@ public static class TargetList { List targets; } + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class Option { + String name; + } + + // 페이징 처리 안한 이유는 어차피 targetAudience 나 OptionService같은 경우엔 + // 굳이 필요 없을 것 같기 때문입니다. 전체 조회 api 이기도 하구요 + @Builder + @Getter + @NoArgsConstructor + @AllArgsConstructor + public static class OptionList { + List