TR1LL1ON / TR1LL1ON_BE

🌟 숙박 예약 서비스 [트릴리언] 🌟
https://www.tr1ll1on.site/
1 stars 3 forks source link

Feat: 체크아웃 이후 리뷰작성 활성화 기능 개발 #106

Closed yurim0628 closed 11 months ago

yurim0628 commented 11 months ago

1. ReviewStatus 상태 코드 추가

public enum ReviewStatus {
     NOT_WRITABLE, WRITABLE, WRITTEN, DELETED
}
  1. ReviewStatus 열거형은 다음과 같이 네 가지 상태를 표현할 수 있다.
    • NOT_WRITABLE: 체크아웃 전이라 리뷰 작성이 불가능한 상태를 나타낸다.
    • WRITABLE: 체크아웃 이후라 리뷰 작성이 가능한 상태를 나타낸다.
    • WRITTEN: 리뷰가 작성된 상태를 나타낸다. 수정이 가능한 상태이다.
    • DELETED: 리뷰가 삭제된 상태를 나타낸다. 더이상 재작성은 불가능한 상태이다.
  2. 주문 상세 조회에서는 이러한 리뷰 상태를 이용하여 각 주문 상품의 리뷰 작성 여부를 확인할 수 있다.

2. 주문 내역 생성 시 reviewStatus 값을 NOT_WRITABLE로 설정

orderHistory.getOrderItemList().add(
    OrderItem.builder()
        .orders(orderHistory)
        .personNumber(oir.getPersonNumber())
        .price(price)
        .startDate(oir.getCheckIn())
        .endDate(oir.getCheckOut())
        .product(getProduct(oir.getProductId()))
        .reviewStatus(ReviewStatus.NOT_WRITABLE)
        .build()
);

3. 이후 주문 상품 정보 상세 조회 시 현재 날짜가 체크아웃 날짜 이후이며, 리뷰 작성 상태가 NOT_WRITABLE 일 때 리뷰 작성 가능 상태인 WRITABLE로 변경

LocalDate currentDate = LocalDate.now();

ReviewStatus reviewStatus = (currentDate.isAfter(orderItem.getEndDate())
                     && orderItem.getReviewStatus() == ReviewStatus.NOT_WRITABLE)
            ? ReviewStatus.WRITABLE
            : orderItem.getReviewStatus();

4. reviewStatus 값이 WRITABLE 일 때만 리뷰 작성이 가능하도록 활성화

{
    "orderId": 15,
    "orderItemList": [
        {
            "orderItemId": 21,
            "checkIn": "2023-12-26",
            "checkOut": "2023-12-28",
            "personNumber": 2,
            "price": 100000,
            "orderItemDetail": {
                "accommodationName": "세심천온천호텔",
                "accommodationAddress": "충청남도 예산군 삽교읍 수암산로 210",
                "productImage": "http://tong.visitkorea.or.kr/cms/resource/61/3039161_image2_1.JPG",
                "productName": "일반실(한실)"
            },
            "reviewStatus": "WRITABLE"
        }
    ]
}