-
Notifications
You must be signed in to change notification settings - Fork 4
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 를 비교한다.
- 장바구니에 장바구니 술이 있는지 확인한다.
-
멤버
-
주문 상태
-
주문 금액
-
장바구니 술 리스트
-
주문서를 받는다.
-
PG에 결제 정보를 전달한다.
-
PG로부터 결제 결과를 받는다.
- 정상적으로 완료되었을 경우, 주문서에 기반한 주문을 생성한다.
- 결제를 도중에 그만뒀을 경우, 주문서 상태를 결제 취소로 변경한다.
- 결제에 실패했을 경우, 주문서 상태를 결제 실패로 변경한다.
-
마일리지 차감, 재고 감소
-
멤버
- 멤버 id 정보를 갖는다.
- null이 아니어야 한다.
-
주문 상태
- 주문 완료, 주문 취소 중 하나여야 한다.
-
총 주문 금액
- 오버플로우를 고려해야 한다.
- 0 이상의 정수만 저장할 수 있다.
- null이 아니어야 한다.
-
총 품목 개수
- 1 이상의 정수여야 한다.
- null이 아니어야 한다.
-
생성 시간
- 수정되면 안 된다.
- 연, 월, 일, 시, 분, 초를 기록한다.
-
수정 시간
- 주문 정보가 수정될 때마다 갱신되어야 한다.
- 연, 월, 일, 시, 분, 초를 기록한다.
- 장바구니에 장바구니 술이 존재해야 한다.
- 장바구니의 모든 장바구니 술의 개수가 술의 재고보다 작거나 같아야 한다.
- (결제 ㅜㅜ) 총 주문 금액이 마일리지보다 작거나 같아야 한다.
- (결제 ㅜㅜ) 주문이 생성되면 마일리지를 총 주문 금액만큼 차감한다.
- 기본값은 생성시간 내림차순으로 주문을 조회한다.
- 페이징을 지원해야 한다.
- 페이지 기본값 : page = 0, size = 10
- 제공되는 주문의 정보는 id, 이미지, 이름, 총 주문 금액, 수량이다.
- 주문 id를 기준으로 조회한다.
- 주문 정보를 모두 보여준다.
- 요청 회원 id 랑 주문자의 회원 id 를 비교한다.
- 주문 내역이 있는지 확인한다.
- 주문 상태만 수정할 수 있고, 주문 완료에서 주문 취소로만 변경할 수 있다.
- (결제 ㅜㅜ) 차감된 마일리지가 지급된다.
- 요청 회원 id 랑 주문자의 회원 id 를 비교한다.
- 주문 내역이 있는지 확인한다.
- 주문 id를 기준으로 내역을 삭제한다.