V-RIS 개발일지 (13) 음식점 별 리뷰 생성

KHJ·2022년 6월 6일
0

V-RIS 개발일지

목록 보기
13/15

원하는 음식점을 클릭하면 음식점의 상세 정보와 함께 리뷰 버튼이 보이도록 구현할 계획이다.


이 버튼을 누르면, 선택한 음식점에 대한 리뷰를 생성, 조회, 삭제할 수 있다.


리뷰 생성

우선 리뷰를 생성하기 위해서는 request 값으로 어떤 유저가 생성했는지, 어떤 음식점에 대한 리뷰인지, 리뷰 내용이 무엇인지에 대한 내용이 필요하다.


따라서 RequestBody 값으로 Review.java를 넣었다.

Review.java

@Data
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity(name="review")
public class Review {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer reviewIdx;
    private Integer userIdx;
    private Integer resIdx;
    private Integer reviewCategory;
}

ReviewJpaController.java

@PostMapping("/review")
    public String createReview(@Valid @RequestBody Review review){

        Review tmpReview=reviewRepository.findReviewByResIdxAndUserIdx(review.getResIdx(), review.getUserIdx());

        if(tmpReview==null){
            reviewRepository.save(review);
            return "리뷰가 저장되었습니다.";
        }
        else{
            return "이미 작성한 리뷰가 존재합니다.";

        }
    }

리뷰를 생성할 때 RequestBody 값의 예시는 다음과 같이 json 형식으로 넣어주면 된다.
{
     "userIdx" : 1,
     "resIdx" : 100,
     "reviewCategory" : 8
}



ReviewRepository.java

// resIdx, userIdx로 리뷰 찾기(return Review)
    @Query(value="select rev from review rev where rev.resIdx= :resIdx and rev.userIdx= :userIdx")
    Review findReviewByResIdxAndUserIdx(Integer resIdx, Integer userIdx);



구현방법

먼저 RequestBody로 들어온 값을 이용하여 음식점의 리뷰를 반환하는 메서드를 ReviewRepository에 생성했다.

이 결과값을 tmpReview에 저장했을 때, tmpReview가 null이라면 요청한 사용자가 이 음식점에 대한 리뷰를 작성한 적이 없다는 뜻이므로 Repository에 기본으로 생성되어있는 save를 이용하여 리뷰를 저장해주고 리뷰가 저장되었다는 문자열을 반환해줬다.

만약 null이 아니라면, 이전에 생성한 리뷰가 존재한다는 뜻이므로 저장하지 않고 이미 작성한 리뷰가 존재한다는 문자열을 반환했다.


실행결과

이전에 생성한 리뷰가 없는 경우

이전에 생성한 리뷰가 존재하는 경우

0개의 댓글