Skip to content

Feature specification

hwihwi523 edited this page Aug 16, 2023 · 22 revisions

회원 관리

회원 도메인

회원은 다음과 같은 정보를 갖는다.

  • 이메일 (원시값 포장)

    • 이메일 표준 양식을 지킨다.
    • unique 값이어야 한다.
    • 255자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 비밀번호 (원시값 포장)

    • 6자 이상 30자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 이름 (원시값 포장)

    • 13자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 전화번호 (원시값 포장)

    • 전화번호 표준 양식을 따른다.
    • null이거나 공백이 아니어야 한다.
  • 마일리지 (원시값 포장)

    • 오버플로우를 고려해야 한다.
    • 0 이상의 정수만 저장할 수 있다.
    • null이 아니어야 한다.
  • 주소 (원시값 포장)

    • 100자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 역할

    • 판매자, 구매자 중 하나여야 한다. (디뽈트는 구매자)
  • 생성 시간

    • 수정되면 안 된다.
    • 연, 월, 일, 시, 분, 초를 기록한다.
  • 수정 시간

    • 멤버 정보가 수정될 때마다 갱신되어야 한다.
    • 연, 월, 일, 시, 분, 초를 기록한다.

회원 가입

  • 회원 정보를 입력하여 가입한다.
  • 회원의 기본 역할은 구매자다.
  • 생성 후 생성된 유저 정보에 접근할 수 있는 URL을 Location 헤더에 담는다.

로그인

  • 이메일과 비밀번호를 사용하여 로그인할 수 있다.
  • 이메일이 존재해야 한다.
  • 이메일과 비밀번호는 매칭되어야 한다.

술 관리

술 도메인

술은 다음과 같은 정보를 갖는다.

  • 타입

    • 소주, 증류주, 리큐르, 막걸리, 약주, 청주, 과실주, 기타주류 중 하나여야 한다.
  • 지역

    • 경기도, 강원도, 충청북도, 충청남도, 경상북도, 경상남도, 전라북도, 전라남도, 제주도 중 하나여야 한다.
  • 판매 상태

    • 판매중, 판매중지 중 하나여야 한다.
  • 이름

    • 30자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 가격

    • 오버플로우를 고려해야 한다.
    • 0 이상의 정수만 저장할 수 있다.
    • null이 아니어야 한다.
  • 브랜드

    • 20자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 이미지 경로

    • 255자 이하여야 한다.
    • null이거나 공백이 아니어야 한다.
  • 재고

    • 0 이상의 정수만 저장할 수 있다.
    • null이 아니어야 한다.
  • 도수 (ALC)

    • 0 이상의 실수만 저장할 수 있다.
    • null이 아니어야 한다.
  • 용량 (ML)

    • 1 이상의 정수만 저장할 수 있다.
    • null이 아니어야 한다.
  • 유통 기한

    • 생성 시간보다 이후여야 한다.
    • 연, 월, 일, 시, 분, 초를 기록한다.
  • 생성 시간

    • 수정되면 안 된다.
    • 연, 월, 일, 시, 분, 초를 기록한다.
  • 수정 시간

    • 술 정보가 수정될 때마다 갱신되어야 한다.
    • 연, 월, 일, 시, 분, 초를 기록한다.

술 등록

  • 술 정보를 입력하여 등록한다.
  • 생성 후 생성된 술에 접근할 수 있는 URL을 Location 헤더에 담는다.

술 조회

술 목록 조회

  • 기본값은 생성시간 내림차순으로 술을 조회한다.
  • 페이징을 지원해야 한다.
    • 페이지 기본값 : page = 0, size = 10
  • 판매 상태, 브랜드, 타입, 지역 조합으로 검색할 수 있다.
  • 제공되는 술의 정보는 id, 이미지, 이름, 가격, 재고다.

술 상세정보 조회

  • 술의 id를 기준으로 조회한다.
  • 술의 정보를 모두 보여준다.

술 정보 수정

  • 판매자만 삭제할 수 있다.
  • 변경하려는 정보 외에도 술의 정보를 모두 포함해야 한다.
  • 식별자는 바꿀 수 없다.

술 삭제

  • 판매자만 삭제할 수 있다.
  • 술의 id를 기준으로 삭제한다.
  • 판매 중지된 술만 삭제할 수 있다.

장바구니 관리

장바구니 술 도메인

  • 멤버

    • 멤버 id 정보를 갖는다.
    • null이 아니어야 한다.
    • 술 정보를 갖는다.
    • null이 아니어야 한다.
  • 수량

    • 1 이상의 정수여야 한다.
    • null이 아니어야 한다.
  • 생성 시간

    • 수정되면 안 된다.
    • 연, 월, 일, 시, 분, 초를 기록한다.
  • 수정 시간

    • 장바구니 술 정보가 수정될 때마다 갱신되어야 한다.
    • 연, 월, 일, 시, 분, 초를 기록한다.

장바구니 도메인

  • 멤버

    • 멤버 id 정보를 갖는다.
    • null이 아니어야 한다.
  • 장바구니 술 리스트

    • 최대 길이는 100이다.
    • 장바구니 술의 멤버 id는 모두 같아야 한다.
    • 장바구니 술은 모두 id가 달라야 한다.

장바구니 술 등록

- 장바구니 술 id가 같은 술은 추가할 수 없다.
- 술의 품목이 100개일 때 술을 새로 추가할 수 없다.
- 한 종류의 술을 여러 병 추가할 수 있다.
- 판매중인 술만 등록할 수 있다.

장바구니 술 목록 조회

- 기본값은 생성 시간 내림차순으로 조회한다.
- 제공되는 장바구니 술의 정보는 id, 이름, 가격, 이미지, 재고다.

장바구니 술 수정

- 요청 회원 id 랑 장바구니 술 소유자의 회원 id 를 비교한다.
- 장바구니에 장바구니 술이 있는지 확인한다.
- 수량만 수정할 수 있다.

장바구니 술 삭제

- 요청 회원 id 랑 장바구니 술 소유자의 회원 id 를 비교한다.
- 장바구니에 장바구니 술이 있는지 확인한다.

주문서 관리

주문서 도메인

  • 멤버

  • 주문 상태

  • 주문 금액

  • 장바구니 술 리스트

주문서 생성

주문서 조회

주문서 수정

결제 관리

  1. 주문서를 받는다.

  2. PG에 결제 정보를 전달한다.

  3. PG로부터 결제 결과를 받는다.

    • 정상적으로 완료되었을 경우, 주문서에 기반한 주문을 생성한다.
    • 결제를 도중에 그만뒀을 경우, 주문서 상태를 결제 취소로 변경한다.
    • 결제에 실패했을 경우, 주문서 상태를 결제 실패로 변경한다.
  4. 마일리지 차감, 재고 감소

주문 관리

주문 도메인

  • 멤버

    • 멤버 id 정보를 갖는다.
    • null이 아니어야 한다.
  • 주문 상태

    • 주문 완료, 주문 취소 중 하나여야 한다.
  • 총 주문 금액

    • 오버플로우를 고려해야 한다.
    • 0 이상의 정수만 저장할 수 있다.
    • null이 아니어야 한다.
  • 총 품목 개수

    • 1 이상의 정수여야 한다.
    • null이 아니어야 한다.
  • 생성 시간

    • 수정되면 안 된다.
    • 연, 월, 일, 시, 분, 초를 기록한다.
  • 수정 시간

    • 주문 정보가 수정될 때마다 갱신되어야 한다.
    • 연, 월, 일, 시, 분, 초를 기록한다.

주문 생성

- 장바구니에 장바구니 술이 존재해야 한다.
- 장바구니의 모든 장바구니 술의 개수가 술의 재고보다 작거나 같아야 한다.
- (결제 ㅜㅜ) 총 주문 금액이 마일리지보다 작거나 같아야 한다.
- (결제 ㅜㅜ) 주문이 생성되면 마일리지를 총 주문 금액만큼 차감한다.

주문 조회

주문 목록 조회

- 기본값은 생성시간 내림차순으로 주문을 조회한다.
- 페이징을 지원해야 한다.
    - 페이지 기본값 : page = 0, size = 10
- 제공되는 주문의 정보는 id, 이미지, 이름, 총 주문 금액, 수량이다.

주문 상세정보 조회

- 주문 id를 기준으로 조회한다.
- 주문 정보를 모두 보여준다.

주문 수정

- 요청 회원 id 랑 주문자의 회원 id 를 비교한다.
- 주문 내역이 있는지 확인한다.
- 주문 상태만 수정할 수 있고, 주문 완료에서 주문 취소로만 변경할 수 있다.
- (결제 ㅜㅜ) 차감된 마일리지가 지급된다.

주문 삭제

- 요청 회원 id 랑 주문자의 회원 id 를 비교한다.
- 주문 내역이 있는지 확인한다.
- 주문 id를 기준으로 내역을 삭제한다.
Clone this wiki locally