From 08033c2d0e5523b875530a089604b5e2d78944d2 Mon Sep 17 00:00:00 2001 From: Hanbee Lee Date: Mon, 29 Jan 2024 15:50:41 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=8C=9D=EC=BD=98=20=EC=B6=94=EC=B2=9C?= =?UTF-8?q?=EC=9E=91=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Popcorn/controller/PopcornController.java | 13 ++++-- .../dto/response/PopcornDetailResponse.java | 41 +++++++++++++++++++ .../service/GetPopcornDetailUseCase.java | 18 ++++++++ .../adaptor/RecommendedPopcornAdaptor.java | 10 +++-- 4 files changed, 74 insertions(+), 8 deletions(-) create mode 100644 Api/src/main/java/com/example/api/Popcorn/dto/response/PopcornDetailResponse.java create mode 100644 Api/src/main/java/com/example/api/Popcorn/service/GetPopcornDetailUseCase.java diff --git a/Api/src/main/java/com/example/api/Popcorn/controller/PopcornController.java b/Api/src/main/java/com/example/api/Popcorn/controller/PopcornController.java index b6a9a03..6061593 100644 --- a/Api/src/main/java/com/example/api/Popcorn/controller/PopcornController.java +++ b/Api/src/main/java/com/example/api/Popcorn/controller/PopcornController.java @@ -1,12 +1,10 @@ package com.example.api.Popcorn.controller; import com.example.api.Popcorn.dto.request.PostPopcornReviewRequest; +import com.example.api.Popcorn.dto.response.PopcornDetailResponse; import com.example.api.Popcorn.dto.response.PopcornResponse; import com.example.api.Popcorn.dto.response.PopcornReviewResponse; -import com.example.api.Popcorn.service.GetPopcornReviewUseCase; -import com.example.api.Popcorn.service.GetPopcornUseCase; -import com.example.api.Popcorn.service.GetTopRatedPopcornKeyword; -import com.example.api.Popcorn.service.PostPopcornReviewUseCase; +import com.example.api.Popcorn.service.*; import com.example.api.screening.dto.request.PostReviewRequest; import com.example.domains.popcorn.entity.Popcorn; import com.example.domains.popcorn.entity.dto.PopcornKeywordResponseDto; @@ -30,12 +28,19 @@ public class PopcornController { private final GetPopcornReviewUseCase getPopcornReviewUseCase; private final GetTopRatedPopcornKeyword getTopRatedPopcornKeyword; + private final GetPopcornDetailUseCase getPopcornDetailUseCase; @Operation(summary = "지난주 투표수 가장 높았던 3개 반환. 이번 주 상영작임", description = "이번 주 상영작 3개 가져오기") @GetMapping public List getPopcorn() { return getPopcornUseCase.execute(); } + @Operation(summary = "이번 주 팝콘작 상세보기", description = "popcornId로 요청하기") + @GetMapping("/{popcornId}") + public PopcornDetailResponse getPopcornDetail(@PathVariable("popcornId") Long popcornId) { + return getPopcornDetailUseCase.execute(popcornId); + } + @Operation(summary = "지난 10분 간 만들어진 것들 중에서, 투표수 가장 높았던 3개 반환. 이번 주 상영작임", description = "이번 주 상영작 3개 가져오기") @GetMapping("/test") public List getPopcornTest() { diff --git a/Api/src/main/java/com/example/api/Popcorn/dto/response/PopcornDetailResponse.java b/Api/src/main/java/com/example/api/Popcorn/dto/response/PopcornDetailResponse.java new file mode 100644 index 0000000..4b9d530 --- /dev/null +++ b/Api/src/main/java/com/example/api/Popcorn/dto/response/PopcornDetailResponse.java @@ -0,0 +1,41 @@ +package com.example.api.Popcorn.dto.response; + +import com.example.domains.popcorn.entity.Popcorn; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Builder; +import lombok.Getter; + +@Getter +public class PopcornDetailResponse { + @Schema(defaultValue = "1", description = "합콘아이디") + private long popcornId; + @Schema(defaultValue = "괴물", description = "영화제목") + private String movieTitle; + + @Schema(defaultValue = "고레에다 히로카즈", description = "영화김독") + private String directorName; + @Schema(defaultValue = "gfhffgvgvghdfhdchj.jpg", description = "영화포스터 이미지") + private String imageUrl; + + @Schema(defaultValue = "agsdfgsdgfsdfgdf", description = "영화 상세 보기") + private String detail; + + @Builder + public PopcornDetailResponse (Long popcornId,String movieTitle,String directorName,String imageUrl,String detail){ + this.popcornId = popcornId; + this.movieTitle=movieTitle; + this.directorName=directorName; + this.imageUrl = imageUrl; + this.detail=detail; + } + public static PopcornDetailResponse from(Popcorn popcorn){ + return PopcornDetailResponse.builder() + .popcornId(popcorn.getId()) + .movieTitle(popcorn.getMovieTitle()) + .directorName(popcorn.getDirectorName()) + .imageUrl(popcorn.getImageUrl()) + .detail(popcorn.getMovieDetail()) + .build(); + + } +} diff --git a/Api/src/main/java/com/example/api/Popcorn/service/GetPopcornDetailUseCase.java b/Api/src/main/java/com/example/api/Popcorn/service/GetPopcornDetailUseCase.java new file mode 100644 index 0000000..88b3867 --- /dev/null +++ b/Api/src/main/java/com/example/api/Popcorn/service/GetPopcornDetailUseCase.java @@ -0,0 +1,18 @@ +package com.example.api.Popcorn.service; + +import com.example.adaptor.UseCase; +import com.example.api.Popcorn.dto.response.PopcornDetailResponse; +import com.example.api.Popcorn.dto.response.PopcornResponse; +import com.example.domains.popcorn.adaptor.PopcornAdaptor; +import com.example.domains.popcorn.entity.Popcorn; +import lombok.RequiredArgsConstructor; + +@UseCase +@RequiredArgsConstructor +public class GetPopcornDetailUseCase { + private final PopcornAdaptor popcornAdaptor; + public PopcornDetailResponse execute(Long id) { + Popcorn popcorn = popcornAdaptor.findById(id); + return PopcornDetailResponse.from(popcorn); + } +} diff --git a/Domain/src/main/java/com/example/domains/recommendedPopcorn/adaptor/RecommendedPopcornAdaptor.java b/Domain/src/main/java/com/example/domains/recommendedPopcorn/adaptor/RecommendedPopcornAdaptor.java index c1b123a..1db80df 100644 --- a/Domain/src/main/java/com/example/domains/recommendedPopcorn/adaptor/RecommendedPopcornAdaptor.java +++ b/Domain/src/main/java/com/example/domains/recommendedPopcorn/adaptor/RecommendedPopcornAdaptor.java @@ -64,10 +64,12 @@ public void incrementVoteCount(Long recommendedPopcorn) { public List findByThreeIds() { List result = new ArrayList<>(); - if(recommendedPopcornRepository.findAll().size()<=3) { + List thisWeekList = findAllThisWeek(); + + if(thisWeekList.size()<=3) { return recommendedPopcornRepository.findAll(); } - Set numberArray = generate(); + Set numberArray = generate(thisWeekList); for (Long number : numberArray) { Optional foundItem = recommendedPopcornRepository.findById(number); @@ -76,11 +78,11 @@ public List findByThreeIds() { } return result; } - public Set generate() { + public Set generate(List thisWeekList) { Set arr = new HashSet<>(); Random random = new Random(); while (arr.size()!=3) { - Long randomIndex = random.nextLong(1,recommendedPopcornRepository.findAll().size()+1); + Long randomIndex = random.nextLong(thisWeekList.get(0).getId(),recommendedPopcornRepository.findAll().size()+1); arr.add(randomIndex); } return arr;