- 유저 - 서비스를 통해 상품을 선택하여 주문하는 고객
- 파트너 - 해당 서비스에 입점하여 상품을 판매하는 업체
- 내부 운영자 - 해당 서비스을 운영하고 관리하는 담당자
- 파트너 - 파트너 등록과 운영을 처리함
- 상품 - 상품과 상품의 옵션 정보를 등록하고 관리함
- 주문 - 유저가 선택한 상품 정보와 주문 정보를 관리하고 결제를 처리함
- 시스템에 등록된 파트너만이 상품을 등록하고 주문을 처리할 수 있다
- 파트너 등록 시 파트너명, 사업자등록번호, 이메일은 필수값이다
- 파트너는 계약이 종료되면 비활성 상태로 전환된다. 단, 파트너 정보 자체는 삭제되지 않고 유지된다
- 파트너 등록이 성공하면 등록된 이메일로 가입 완료 안내 메일을 발송한다
- 그 외 시스템을 사용하는 유저가 기본적으로 기대하는 기본 기능들 - 조회, 등록, 수정, 삭제 등의 기능을 제공해야 한다
- 시스템에 등록되고 활성화된 파트너는 상품을 등록할 수 있다
- 등록된 상품은 유저의 주문을 받아 판매될 수 있다
- 상품은 상품명, 가격 등의 기본 정보와 색상, 사이즈와 같은 옵션으로 구성된다
- 상품은 옵션 정보 없이 기본값으로만 저장될 수도 있다
- 주문 화면에서 보여지는 상품의 옵션은 파트너사가 원하는 순서에 맞게 노출될 수있어야 한다
- 상품 구매 시 특정한 옵션을 선택하면 가격이 추가될 수 있다
- 상품은 판매 준비중, 판매중, 판매 종료와 같은 상태를 가진다
- 그 외 시스템을 사용하는 유저가 기본적으로 기대하는 기본 기능들 - 조회, 등록, 수정, 삭제 등의 기능을 제공해야 한다
- 시스템에 등록된 상품은 유저가 주문할 수 있다
- 주문은 주문 등록, 결제, 배송준비, 배송중, 배송 완료의 단계를 가진다
- 주문 등록 과정에서는 결제수단을 선택하고 상품 및 상품 옵션을 선택한다
- 시스템에서 사용 가능한 결제수단은 1) 카드 2) 토스페이 3) 카카오페이 4) 네이버페이 등이 있다
- 결제 과정에서는 유저가 선택한 결제수단으로 결제를 진행한다
- 결제완료 후 유저에게 카카오톡으로 주문 성공 알림이 전달된다
- 결제가 완료되면 배송준비 단계로 넘어간다
- 배송중, 배송완료의 단계도 순차적으로 진행된다
- Setter는 도메인의 정합성을 깨드리는 메서드로 사용하지 않는다.
- Entity의 아이디 값을 외부에 노출시키는것이 아니라 대체키를 사용하여 노출시킨다.
- 의존성 역전 원친(DIP)를 지켜가면서 설계를 한다. DIP란
- Service와 Service간의 참조는 하지 않는다.참조가 이뤄지는 순간 상하관계가 설정이 되고 TestCode작성시 목킹해야할 것이 많아진다.
- 읽고 있는 좋은코드, 나쁜코드를 최대한 적용시켜서 좋은코드로 작성해보기