We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
상품 조회 페이지에서 상품을 클릭해 해당 상품 및 상품에 대한 옵션과 수량을 장바구니에 담을 수 있다.
(임시 규칙) 사용자 당 장바구니는 하나만 존재한다. 장바구니는 익명 사용자의 경우 프론트엔드에서 임시 저장한다(보유기간 무제한). 익명 사용자가 로그인 시 장바구니가 해당 사용자의 장바구니로 복제된다. 로그인 된 사용자의 경우 해당 사용자의 장바구니에 곧장 담긴다.
(임시 규칙)
장바구니 아이템 목록 조회: GET (사용자_ID) => [ { 상품_ID, 옵션, 수량 }, ... ] 장바구니 아이템 생성/수정: POST/PUT (사용자_ID, 장바구니_아이템_ID, 새_장바구니_아이템_필드) => [ ...새로운_목록 ] 장바구니 아이템 삭제: DELETE (사용자_ID, 장바구니_아이템_ID) => [ ...새로운_목록 ]
GET (사용자_ID) => [ { 상품_ID, 옵션, 수량 }, ... ]
POST/PUT (사용자_ID, 장바구니_아이템_ID, 새_장바구니_아이템_필드) => [ ...새로운_목록 ]
DELETE (사용자_ID, 장바구니_아이템_ID) => [ ...새로운_목록 ]
상품(Product) (외부 애그리거트 루트)
Product
장바구니(Cart)
Cart
UserId
CartItem
CartItemOption
Name
Price
quantity
장바구니(Cart) (루트 엔터티)
List<CartItem>
CartItem의 내부 구현은 지금 단계에서 구현할 필요가 없어 테스트 케이스를 제거했습니다.
List<CartItemOption>
Quantity
Id
List<CarItemOption>
The text was updated successfully, but these errors were encountered:
Implement Order Domain Objects - Cart, CartItem, CartItemOption (#1)
5407cc4
seongbin9786
Successfully merging a pull request may close this issue.
프론트엔드 요구사항
상품 조회 페이지에서 상품을 클릭해 해당 상품 및 상품에 대한 옵션과 수량을 장바구니에 담을 수 있다.
예상되는 백엔드 API 요구사항 (이 Issue는 API까지 구현하지 않습니다.)
장바구니 아이템 목록 조회:
GET (사용자_ID) => [ { 상품_ID, 옵션, 수량 }, ... ]
장바구니 아이템 생성/수정:
POST/PUT (사용자_ID, 장바구니_아이템_ID, 새_장바구니_아이템_필드) => [ ...새로운_목록 ]
장바구니 아이템 삭제:
DELETE (사용자_ID, 장바구니_아이템_ID) => [ ...새로운_목록 ]
유비쿼터스 언어 추출
상품(
Product
) (외부 애그리거트 루트)장바구니(
Cart
)UserId
)로 식별할 수 있다.CartItem
) <상품, 옵션[], 수량>을 담을 수 있다.CartItemOption
으로 부르며, 문자열 필드Name
과 가격 필드Price
를 갖는다.quantity
)은 1을 초과하는 정수이다.도메인 모델
장바구니(
Cart
) (루트 엔터티)CartItem
) (내부 엔터티) [1:N]CartItem
은 mutable이므로 엔터티로 정의한다.테스트 케이스
CartItemOption
객체의 수량은 최소 1 이상의 정수이어야 한다.Cart
객체는UserId
로 식별할 수 있으며이 필드를 노출한다.Cart
객체는CartItem
을 추가할 수 있다.Cart
객체는CartItem
을 제거할 수 있다.Cart
객체는CartItem
을 변경할 수 있다.Cart
객체가 노출하는List<CartItem>
은 외부에서 그 내용을 수정할 수 없어야 한다.Cart
객체는CartItem
을 변경할 때 해당 Item이 이미 List에 없다면 예외를 발생시킨다.리뷰 과정에서 제거된 테스트 케이스
CartItem의 내부 구현은 지금 단계에서 구현할 필요가 없어 테스트 케이스를 제거했습니다.
CartItem
객체가 가질 것으로 예상되는 상태인List<CartItemOption>
과Quantity
필드는 API 컨트롤러 혹은 애플리케이션 서비스 를 구현할 때 필요할 것으로 보여 해당 시점으로 미루기로 하였습니다.CartItemOption
객체는Name
과Price
필드를 노출한다.CartItem
객체는Id
,List<CarItemOption>
,Quantity
필드를 노출한다.추가된 테스트 케이스
CartItem
객체는Id
로 식별할 수 있다.The text was updated successfully, but these errors were encountered: