Skip to content

Minjoo522/java-coupon

 
 

Repository files navigation

도메인 설명

쿠폰

  • 회원에게 발급하는 쿠폰의 이름, 할인 금액, 최소 주문 금액 등 쿠폰의 설정에 해당하는 내용을 관리한다. 다음과 같은 제약사항을 갖는다.
    • 이름
      • 이름은 반드시 존재해야 한다. ✅
      • 이름의 길이는 최대 30자 이하여야 한다. ✅
    • 할인 금액
      • 할인 금액 제약
        • 할인 금액은 1,000원 이상이어야 한다. ✅
        • 할인 금액은 10,000원 이하여야 한다. ✅
        • 할인 금액은 500원 단위로 설정할 수 있다. ✅
      • 할인율 제약
        • 할인율은 할인금액 / 최소 주문 금액 식을 사용하여 계산하며, 소수점은 버림 한다.
          • 예를 들어, 최소 주문 금액이 30,000원일 때 할인 금액이 1,000원이라면 쿠폰의 할인율은 3%(1000 / 30000 = 3.333...%)가 된다.
        • 할인율은 3% 이상이어야 한다. ✅
        • 할인율은 20% 이하여야 한다. ✅
    • 최소 주문 금액
      • 최소 주문 금액은 5,000원 이상이어야 한다. ✅
      • 최소 주문 금액은 100,000원 이하여야 한다. ✅
    • 카테고리
      • 서비스의 카테고리는 다음과 같이 네 종류가 있고, 이 중 하나의 카테고리만 선택할 수 있다. ✅
        • 패션
        • 가전
        • 가구
        • 식품
    • 발급 기간
      • 시작일은 종료일보다 이전이어야 한다. 시작일과 종료일이 같다면, 해당 일에만 발급할 수 있는 쿠폰이 된다. ✅
        • 시작일 00:00:00.000000 부터 발급할 수 있다.
        • 종료일 23:59:59.999999 까지 발급할 수 있다.

회원 쿠폰

  • 회원에게 발급된 쿠폰 한 장을 관리한다. 다음 정보를 포함한다.
    • 회원 쿠폰 PK
    • 쿠폰 PK
    • 회원 PK
    • 사용 여부
    • 발급 일시
    • 만료 일시
      • 회원에게 발급된 쿠폰은 발급일 포함 7일 동안 사용 가능하다. 만료 일의 23:59:59.999999 까지 사용할 수 있다.

🚀기능 요구 사항

  • 쿠폰 생성, 조회 기능 구현
    • 조회 기능은 부하 분산을 위해 reader DB의 데이터를 조회
  • 복제 지연으로 인한 이슈 확인
    • 쿠폰을 생성한 후 즉시 조회했을 때 복제 지연으로 인해 데이터 조회에 실패하는 이슈를 확인(테스트 코드)
  • 복제 지연으로 인한 이슈 해결
    • 쿠폰을 생성했을 때, 의도한 대로 쿠폰이 생성됐는지 검증하도록 수정(리뷰어가 이해할 수 있도록 설명)
  • 회원에게 쿠폰을 발급하는 기능 구현
    • 한 명의 회원은 동일한 쿠폰을 사용한 쿠폰을 포함하여 최대 5장까지 발급할 수 있다.
  • 회원의 쿠폰 목록 조회 기능 구현
    • 두 테이블을 조인할 수 없다.
    • 회원의 쿠폰 목록 조회 시 쿠폰, 회원에게 발급된 쿠폰의 정보를 모두 보여줄 수 있어야 한다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Shell 72.7%
  • Java 16.4%
  • Dockerfile 10.9%