[배민문방구] 별점 달려면 상품을 사야지? ReviewView

code_sign·2021년 2월 28일
1
post-thumbnail
post-custom-banner

머리속으로 그려보기☀️

리뷰는 상품을 사야만 쓸 수 있어서 이번 코드는 내 머리속으로 구현을 해 보았다!

일단,
별점이 있고, 제목이 있고, 내용이 있다.
아이디를 받고 create_at이 있는것 같다.

상품을 구매하고 별점을 쓰게 하려면, 일단 다음의 순서가 필요할 것 같다.

  1. 상품을 구매한다.
  2. 구매확정을 한다.
  3. 구매확정이 된 주문에 한해서 리뷰를 쓰게 한다.
    (revieworder를 이어주는 matching_review테이블을 만들어서 동시에 create해준다.)
  4. 이미 matching_review에 연결된 review가 있다면 리뷰를 못쓰게 한다.

이것을 바탕으로 POST를 중심으로 코드를 짜보도록 한다.

실제 코드 짜기🚀

GET은 그냥 뿌려!

request.user를 통해 user_id값을 받고 그것을 list comprehension을 통해 Json으로 보내준다.

자... 천천히 해보자 POST

일단 matching_review테이블에 product_idorder_id를 가지고 있는 데이터가 있는지 확인한 후 없다면 review를 쓰게 한다.

잠깐, Transaction?! 왜????

두가지 상황을 막기 위해서다.

  1. review에 글을 썼는데, matching_review에 안쓰였다면, review를 또 쓸 수 있게 한다.
  2. review를 안썬느데 matching_review에 데이터가 있다면 review를 쓰지도 못한다.

그레서 두 테이블에 모두 데이터가 정상적으로 등록이 될때만 데이터가 등록되도록 설정을 한다.

get_order_list?

리뷰를 보여주는 목록은 상품 디테일 페이지에서도 보여줄 수 있지만,
My Page에서도 연결시켜 줄 수 있기에 코드의 재사용을 줄이려 함수로 선언하고 사용했다.

profile
방탈출 좋아하는 코딩덕후
post-custom-banner

7개의 댓글

comment-user-thumbnail
2021년 2월 28일

오호 transaction 어떻게 사용했는지 궁금했는데 잘 배우고 갑니다~ 홧팅~

1개의 답글
comment-user-thumbnail
2021년 3월 1일

저도 transaction 잘 보고 갑니다 ~
외쳐~ 갓.성.준~

1개의 답글
comment-user-thumbnail
2021년 3월 1일

교수님 진도가 조금 빠르지만 얼른 따라잡을께요!!!!!!!!!!!!!

1개의 답글