1차 팀프로젝트 12회차

이동원·2024년 6월 27일

Review 생성하기

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/review")
public class ReviewController {
    private final MultiService multiService;

    public ResponseEntity<?> createReview(@RequestHeader("Authorization") String accessToken, @RequestBody ReviewRequestDTO reviewRequestDTO) {
        TokenRecord tokenRecord = this.multiService.checkToken(accessToken);
        if (tokenRecord.isOK()) {
            String username = tokenRecord.username();
            List<ReviewResponseDTO> reviewResponseDTOList = multiService.reviewCreate(username, reviewRequestDTO);
            return tokenRecord.getResponseEntity(reviewResponseDTOList);
        }
        return tokenRecord.getResponseEntity();
    }
    @Transactional
    public List<ReviewResponseDTO> reviewCreate(String username, ReviewRequestDTO reviewRequestDTO) {
        SiteUser siteUser = userService.get(username);
        Product product = productService.getProduct(reviewRequestDTO.getProductId());
        reviewService.create(siteUser, reviewRequestDTO, product);

        List<ReviewResponseDTO> reviewResponseDTOList = new ArrayList<>();

        List<Review> reviewList = this.reviewService.getList(product);// 상품 별로 리뷰 리스트 가져오는것
        for (Review review : reviewList) {
            reviewResponseDTOList.add(ReviewResponseDTO.builder()
                    .modifyDate(this.dateTimeTransfer(review.getModifyDate()))
                    .review(review)
                    .createDate(this.dateTimeTransfer(review.getCreateDate()))
                    .build());
        }
        return reviewResponseDTOList;
    }
 @Transactional
    public SiteUser get(String username) throws IllegalArgumentException {
        return this.userRepository.findById(username).orElse(null);
    }
 @Transactional
 public Product getProduct (Long productId) {
        return this.productRepository.findById(productId)
                .orElseThrow(() -> new IllegalArgumentException("not found product"));
    }

@Service
@RequiredArgsConstructor
public class ReviewService {

private final ReviewRepository reviewRepository;



    public Review create(SiteUser siteUser , ReviewRequestDTO reviewRequestDTO, Product product) {
         //매개변수 값만 넣으면 하나 저장됌
        return reviewRepository.save(Review.builder()
                .title(reviewRequestDTO.getTitle())
                .grade(reviewRequestDTO.getGrade())
                .content(reviewRequestDTO.getContent())
                .product(product)
                .siteUser(siteUser)
                .build());
        }
    

0개의 댓글