Skip to content

Latest commit

 

History

History
64 lines (44 loc) · 2.48 KB

README.md

File metadata and controls

64 lines (44 loc) · 2.48 KB

jpa-order

Jpa를 이용하여 간단한 주문 시스템을 구현한다.

요구사항 1

상점 수는 하나만 있다고 가정한다.
상점에서 판매하고 있는 상품이 존재한다.
db 구조, api 명세는 자유이며 PR 요청시 설계의 이유가 있으면 더 좋다.
아래의 요구사항은 최소 요구사항이며 원한다면 기능을 추가해도 된다.

상품

  • 상품은 상품 번호, 상품명, 가격, 재고수를 가지고 있다.

사용자

  • 사용자는 이메일, 비밀번호를 가지고 있다.
  • 이 때 비밀번호는 해쉬 함수를 이용해서 데이터베이스에 저장해야 한다. 이 때 해쉬 함수는 SHA-256을 사용한다.
  • 사용자가 로그인을 하는 경우 토큰을 반환받고, 해당 토큰을 이용해서 상품 주문, 쿠폰 조회를 할 수 있다.
  • 토큰은 JWT를 사용하고 secret은 herb 이다.

쿠폰

  • 사용자의 쿠폰을 조회할 수 있다.
  • 쿠폰은 하나의 할인 정책, 하나의 할인 조건을 포함한다.
  • 할인 정책은 3가지 종류가 존재한다.
    • 고정 금액 할인 정책이 존재한다.
    • 비율 할인 정책이 존재한다.
    • 배달비 할인 정책이 존재한다.
  • 할인 조건은 1가지 종류가 존재한다.
    • 최소 주문 금액 조건

주문

  • 주문을 하는 경우 주문할 {상품 번호, 개수}의 배열 정보를 입력받는다.
  • 쿠폰은 하나만 적용할 수 있다. 원한다면 적용하지 않아도 된다.
  • 사용자는 주문 내역을 조회할 수 있다.
  • 동시에 주문되는 경우 재고에 대한 부분을 어떻게 해결할지 고려하고, 이에 대한 테스트를 작성한다.

요구사항 2

상품

  • 상품의 카테고리를 추가한다.
  • 카테고리별 조회 기능을 추가한다.

사용자

쿠폰

  • 쿠폰의 유효기간을 추가한다.
  • 유효기간이 지난 쿠폰을 사용하려는 경우 예외를 발생시킨다.

주문

  • 주문에 상태를 추가한다.
    • 주문 완료
    • 주문 취소
  • 주문 취소 기능을 추가한다.
    • 주문이 취소된다면, 주문시 사용한 사용자의 쿠폰이 다시 복구되어야 한다.