Skip to content

Commit

Permalink
Fix: 기타 API 추가 (#95)
Browse files Browse the repository at this point in the history
  • Loading branch information
klkim1913 authored Aug 10, 2023
1 parent d35b266 commit 85d1096
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 19 deletions.
12 changes: 9 additions & 3 deletions src/main/java/com/anywayclear/controller/DealController.java
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -25,7 +30,8 @@ public ResponseEntity<Void> createDeal(@Valid @RequestBody DealCreateRequest req
}

@GetMapping
public ResponseEntity<DealResponseList> getDealList(@RequestParam(name = "userId") String userId) {
return ResponseEntity.ok(dealService.getDealList(userId));
public ResponseEntity<MultiResponse<DealResponse, Deal>> getDealList(@AuthenticationPrincipal OAuth2User oAuth2User, Pageable pageable) {
String userId = (String) oAuth2User.getAttributes().get("userId");
return ResponseEntity.ok(dealService.getDealList(userId, pageable));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@ public ResponseEntity<ProduceResponse> getProduce(@Positive @PathVariable("id")

@GetMapping
public ResponseEntity<MultiResponse<ProduceResponse, Produce>> getProduceList(
@AuthenticationPrincipal OAuth2User oAuth2User,@RequestParam(required = false, defaultValue = "all") String filter,@RequestParam List<Integer> statusNoList,
@RequestParam(value = "userId",required = false) String sellerId, @RequestParam(required = false, defaultValue = "all") String filter, @RequestParam List<Integer> 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")
Expand Down
9 changes: 4 additions & 5 deletions src/main/java/com/anywayclear/repository/DealRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Deal, Long> {

List<Deal> findAllByConsumer(Member member);
Page<Deal> findAllByConsumer(Member member, Pageable pageable);

List<Deal> findAllBySeller(Member member);
Page<Deal> findAllBySeller(Member member, Pageable pageable);
}
21 changes: 14 additions & 7 deletions src/main/java/com/anywayclear/service/DealService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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<Deal> dealList;
@Transactional(readOnly = true)
public MultiResponse<DealResponse, Deal> getDealList(String userId, Pageable pageable) {
Member member = memberRepository.findByUserId(userId).orElseThrow(() -> new CustomException(INVALID_MEMBER));
Page<Deal> 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<DealResponse> dealResponseList = dealPage.map(DealResponse::toResponse).getContent();
return new MultiResponse<>(dealResponseList, dealPage);
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/anywayclear/service/ProduceService.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public MultiResponse<ProduceResponse, Produce> getProducePage(List<Integer> stat
Page<Produce> 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);
}
Expand Down

0 comments on commit 85d1096

Please sign in to comment.