From 8dbcbfd3906e2693da5c8c4340780fc8e2098ea8 Mon Sep 17 00:00:00 2001 From: ziiyouth Date: Sat, 13 Jan 2024 13:35:21 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20#58=202030=20=EC=83=81=ED=92=88=20API?= =?UTF-8?q?=20response=EC=97=90=20=ED=86=A0=EB=84=88=EB=A8=BC=ED=8A=B8=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20=EC=8B=9C=EA=B0=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/gift/controller/GiftController.java | 10 ++-------- .../org/sopt/sweet/domain/gift/entity/Gift.java | 3 --- .../domain/product/controller/ProductApi.java | 7 ++++++- .../product/controller/ProductController.java | 7 ++++--- .../dto/response/HotProductsResponseDto.java | 6 +++++- .../domain/product/service/ProductService.java | 14 ++++++++++++-- 6 files changed, 29 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java index 21aa8c9..740914b 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java +++ b/src/main/java/org/sopt/sweet/domain/gift/controller/GiftController.java @@ -6,7 +6,6 @@ import org.sopt.sweet.domain.gift.dto.request.TournamentScoreRequestDto; import org.sopt.sweet.domain.gift.dto.response.*; import org.sopt.sweet.domain.gift.service.GiftService; -import org.sopt.sweet.domain.room.entity.Room; import org.sopt.sweet.global.common.SuccessResponse; import org.sopt.sweet.global.config.auth.UserId; import org.springframework.http.ResponseEntity; @@ -35,14 +34,14 @@ public ResponseEntity> getMyGift(@UserId Long userId, @Reques return SuccessResponse.ok(myGiftsResponseDto); } - @DeleteMapping ("/my/{giftId}") + @DeleteMapping("/my/{giftId}") public ResponseEntity> deleteMyGift(@UserId Long userId, @PathVariable Long giftId) { giftService.deleteMyGift(userId, giftId); return SuccessResponse.ok(null); } @GetMapping("/tonermant/{roomId}") - public ResponseEntity> getTournamentGiftList(@UserId Long userId,@PathVariable Long roomId) { + public ResponseEntity> getTournamentGiftList(@UserId Long userId, @PathVariable Long roomId) { List tournamentGiftList = giftService.getTournamentGiftList(roomId); return SuccessResponse.ok(tournamentGiftList); } @@ -78,9 +77,4 @@ public ResponseEntity> getFriendGift(@UserId Long userId, @Pa } - - - - - } diff --git a/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java b/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java index 33943cb..325f631 100644 --- a/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java +++ b/src/main/java/org/sopt/sweet/domain/gift/entity/Gift.java @@ -54,7 +54,4 @@ public void setScore(int score) { this.score = score; } - - - } diff --git a/src/main/java/org/sopt/sweet/domain/product/controller/ProductApi.java b/src/main/java/org/sopt/sweet/domain/product/controller/ProductApi.java index 216bd1c..b4e1587 100644 --- a/src/main/java/org/sopt/sweet/domain/product/controller/ProductApi.java +++ b/src/main/java/org/sopt/sweet/domain/product/controller/ProductApi.java @@ -32,6 +32,11 @@ ResponseEntity> getHotGift( description = "authorization token에서 얻은 userId, 임의입력하면 대체됩니다.", required = true, example = "12345" - ) @UserId Long userId + ) @UserId Long userId, + @Parameter( + description = "선물방 id", + required = true, + example = "1" + ) @PathVariable Long roomId ); } diff --git a/src/main/java/org/sopt/sweet/domain/product/controller/ProductController.java b/src/main/java/org/sopt/sweet/domain/product/controller/ProductController.java index 2536b80..c38bc17 100644 --- a/src/main/java/org/sopt/sweet/domain/product/controller/ProductController.java +++ b/src/main/java/org/sopt/sweet/domain/product/controller/ProductController.java @@ -7,6 +7,7 @@ import org.sopt.sweet.global.config.auth.UserId; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,9 +18,9 @@ public class ProductController implements ProductApi { private final ProductService productService; - @GetMapping("/hot") - public ResponseEntity> getHotGift(@UserId Long userId) { - final HotProductsResponseDto hotProductsResponseDto = productService.getHotGift(userId); + @GetMapping("/hot/{roomId}") + public ResponseEntity> getHotGift(@UserId Long userId, @PathVariable Long roomId) { + final HotProductsResponseDto hotProductsResponseDto = productService.getHotGift(userId, roomId); return SuccessResponse.ok(hotProductsResponseDto); } } diff --git a/src/main/java/org/sopt/sweet/domain/product/dto/response/HotProductsResponseDto.java b/src/main/java/org/sopt/sweet/domain/product/dto/response/HotProductsResponseDto.java index ddb14c4..a5dd596 100644 --- a/src/main/java/org/sopt/sweet/domain/product/dto/response/HotProductsResponseDto.java +++ b/src/main/java/org/sopt/sweet/domain/product/dto/response/HotProductsResponseDto.java @@ -2,14 +2,18 @@ import lombok.Builder; +import java.time.LocalDateTime; import java.util.List; @Builder public record HotProductsResponseDto( + LocalDateTime tournamentStartDate, List hotProductDtoList ) { - public static HotProductsResponseDto of(List hotProductDtoList){ + public static HotProductsResponseDto of(LocalDateTime tournamentStartDate, + List hotProductDtoList){ return HotProductsResponseDto.builder() + .tournamentStartDate(tournamentStartDate) .hotProductDtoList(hotProductDtoList) .build(); } diff --git a/src/main/java/org/sopt/sweet/domain/product/service/ProductService.java b/src/main/java/org/sopt/sweet/domain/product/service/ProductService.java index e45b7ae..492c380 100644 --- a/src/main/java/org/sopt/sweet/domain/product/service/ProductService.java +++ b/src/main/java/org/sopt/sweet/domain/product/service/ProductService.java @@ -8,7 +8,9 @@ import org.sopt.sweet.domain.product.dto.response.HotProductsResponseDto; import org.sopt.sweet.domain.product.entity.Product; import org.sopt.sweet.domain.product.repository.ProductRepository; +import org.sopt.sweet.domain.room.entity.Room; import org.sopt.sweet.domain.room.repository.RoomMemberRepository; +import org.sopt.sweet.domain.room.repository.RoomRepository; import org.sopt.sweet.global.error.exception.EntityNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,6 +19,7 @@ import java.util.stream.Collectors; import static org.sopt.sweet.global.error.ErrorCode.MEMBER_NOT_FOUND; +import static org.sopt.sweet.global.error.ErrorCode.ROOM_NOT_FOUND; @RequiredArgsConstructor @Service @@ -25,12 +28,14 @@ public class ProductService { private final MemberRepository memberRepository; private final ProductRepository productRepository; + private final RoomRepository roomRepository; - public HotProductsResponseDto getHotGift(Long memberId){ + public HotProductsResponseDto getHotGift(Long memberId, Long roomId){ Member member = findMemberByIdOrThrow(memberId); + Room room = findRoomByIdOrThrow(roomId); List allProducts = productRepository.findAll(); List hotProductDtoList = mapToHotProductDtoList(allProducts); - return HotProductsResponseDto.of(hotProductDtoList); + return HotProductsResponseDto.of(room.getTournamentStartDate(), hotProductDtoList); } private Member findMemberByIdOrThrow(Long memberId) { @@ -38,6 +43,11 @@ private Member findMemberByIdOrThrow(Long memberId) { .orElseThrow(() -> new EntityNotFoundException(MEMBER_NOT_FOUND)); } + private Room findRoomByIdOrThrow(Long roomId) { + return roomRepository.findById(roomId) + .orElseThrow(() -> new EntityNotFoundException(ROOM_NOT_FOUND)); + } + private List mapToHotProductDtoList(List products) { return products.stream() .map(product -> HotProductDto.of(