From 85d10964c1a1b44709f449336e5c0bdb55fe3c79 Mon Sep 17 00:00:00 2001 From: klkim1913 <49425719+klkim1913@users.noreply.github.com> Date: Thu, 10 Aug 2023 18:00:16 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20=EA=B8=B0=ED=83=80=20API=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(#95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DealController.java | 12 ++++++++--- .../controller/ProduceController.java | 5 ++--- .../repository/DealRepository.java | 9 ++++---- .../com/anywayclear/service/DealService.java | 21 ++++++++++++------- .../anywayclear/service/ProduceService.java | 2 +- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/anywayclear/controller/DealController.java b/src/main/java/com/anywayclear/controller/DealController.java index dc4dfa9..f1b23a9 100644 --- a/src/main/java/com/anywayclear/controller/DealController.java +++ b/src/main/java/com/anywayclear/controller/DealController.java @@ -1,9 +1,14 @@ package com.anywayclear.controller; import com.anywayclear.dto.request.DealCreateRequest; -import com.anywayclear.dto.response.DealResponseList; +import com.anywayclear.dto.response.DealResponse; +import com.anywayclear.dto.response.MultiResponse; +import com.anywayclear.entity.Deal; import com.anywayclear.service.DealService; +import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.oauth2.core.user.OAuth2User; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -25,7 +30,8 @@ public ResponseEntity createDeal(@Valid @RequestBody DealCreateRequest req } @GetMapping - public ResponseEntity getDealList(@RequestParam(name = "userId") String userId) { - return ResponseEntity.ok(dealService.getDealList(userId)); + public ResponseEntity> getDealList(@AuthenticationPrincipal OAuth2User oAuth2User, Pageable pageable) { + String userId = (String) oAuth2User.getAttributes().get("userId"); + return ResponseEntity.ok(dealService.getDealList(userId, pageable)); } } diff --git a/src/main/java/com/anywayclear/controller/ProduceController.java b/src/main/java/com/anywayclear/controller/ProduceController.java index 1d5677f..71a6a16 100644 --- a/src/main/java/com/anywayclear/controller/ProduceController.java +++ b/src/main/java/com/anywayclear/controller/ProduceController.java @@ -48,10 +48,9 @@ public ResponseEntity getProduce(@Positive @PathVariable("id") @GetMapping public ResponseEntity> getProduceList( - @AuthenticationPrincipal OAuth2User oAuth2User,@RequestParam(required = false, defaultValue = "all") String filter,@RequestParam List statusNoList, + @RequestParam(value = "userId",required = false) String sellerId, @RequestParam(required = false, defaultValue = "all") String filter, @RequestParam List statusNoList, Pageable pageable, @RequestParam(required = false, defaultValue = "") String name) { - String sellerId = (String) oAuth2User.getAttributes().get("userId"); - return ResponseEntity.ok(produceService.getProducePage(statusNoList, pageable, name,sellerId,filter)); + return ResponseEntity.ok(produceService.getProducePage(statusNoList, pageable, name, sellerId, filter)); } @GetMapping("/{id}/auctions") diff --git a/src/main/java/com/anywayclear/repository/DealRepository.java b/src/main/java/com/anywayclear/repository/DealRepository.java index 4672b50..47b1961 100644 --- a/src/main/java/com/anywayclear/repository/DealRepository.java +++ b/src/main/java/com/anywayclear/repository/DealRepository.java @@ -2,14 +2,13 @@ import com.anywayclear.entity.Deal; import com.anywayclear.entity.Member; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; -import java.util.List; -import java.util.Optional; - public interface DealRepository extends JpaRepository { - List findAllByConsumer(Member member); + Page findAllByConsumer(Member member, Pageable pageable); - List findAllBySeller(Member member); + Page findAllBySeller(Member member, Pageable pageable); } diff --git a/src/main/java/com/anywayclear/service/DealService.java b/src/main/java/com/anywayclear/service/DealService.java index 5930710..4d94304 100644 --- a/src/main/java/com/anywayclear/service/DealService.java +++ b/src/main/java/com/anywayclear/service/DealService.java @@ -2,17 +2,21 @@ import com.anywayclear.dto.request.DealCreateRequest; import com.anywayclear.dto.response.DealResponse; -import com.anywayclear.dto.response.DealResponseList; +import com.anywayclear.dto.response.MultiResponse; import com.anywayclear.entity.Deal; import com.anywayclear.entity.Member; import com.anywayclear.exception.CustomException; import com.anywayclear.repository.DealRepository; import com.anywayclear.repository.MemberRepository; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import static com.anywayclear.exception.ExceptionCode.INVALID_DEAL; +import static com.anywayclear.exception.ExceptionCode.INVALID_MEMBER; @Service public class DealService { @@ -27,19 +31,22 @@ public DealService(DealRepository dealRepository, MemberRepository memberReposit public Long createDeal(DealCreateRequest request) { return dealRepository.save(Deal.toEntity(request)).getId(); } + public DealResponse getDeal(Long id) { Deal deal = dealRepository.findById(id).orElseThrow(() -> new CustomException(INVALID_DEAL)); return DealResponse.toResponse(deal); } - public DealResponseList getDealList(String userId) { - Member member = memberRepository.findByUserId(userId).orElseThrow(() -> new RuntimeException("해당 userId의 유저가 없습니다.")); - List dealList; + @Transactional(readOnly = true) + public MultiResponse getDealList(String userId, Pageable pageable) { + Member member = memberRepository.findByUserId(userId).orElseThrow(() -> new CustomException(INVALID_MEMBER)); + Page dealPage; if (member.getRole().equals("ROLE_SELLER")) { // 판매자 일 경우 - dealList = dealRepository.findAllBySeller(member); + dealPage = dealRepository.findAllBySeller(member, pageable); } else { // 소비자 일 경우 - dealList = dealRepository.findAllByConsumer(member); + dealPage = dealRepository.findAllByConsumer(member, pageable); } - return new DealResponseList(dealList); + List dealResponseList = dealPage.map(DealResponse::toResponse).getContent(); + return new MultiResponse<>(dealResponseList, dealPage); } } diff --git a/src/main/java/com/anywayclear/service/ProduceService.java b/src/main/java/com/anywayclear/service/ProduceService.java index 97abc11..65c9744 100644 --- a/src/main/java/com/anywayclear/service/ProduceService.java +++ b/src/main/java/com/anywayclear/service/ProduceService.java @@ -53,7 +53,7 @@ public MultiResponse getProducePage(List stat Page producePage; if (filter.equals("all")) { producePage = produceRepository.findAllByStatusInAndNameContaining(statusNoList, pageable, name); - } else { + } else { Member seller = memberRepository.findByUserId(sellerId).orElseThrow(() -> new CustomException(INVALID_MEMBER)); producePage = produceRepository.findAllBySellerAndStatusInAndNameContaining(seller, pageable, statusNoList, name); }