첫 협동 프로젝트_03

Kingyj·2025년 1월 21일
post-thumbnail

개요

  • 여러 종류의 웹 서비스 중, 기본적인 비즈니스 웹 서비스인 상품을 판매하는 웹 서비스를 제작.
  • 모두 백엔드로 이루어진 팀.

서비스

  • 커피원두를 판매하는 웹 서비스

정리 내용

  • 요구사항 분석 (기능 구현)
  • 상호 관계

요구사항 분석 (기능 구현)

회원(Member)관리

회원 가입 :

  • 회원은 이메일(ID), 비밀번호, 별명, 주소, 우편번호, 권한(ROLE_MEMBER/ROLE_GUEST)을 입력하여 가입 가능
  • 고유 Email과 RefreshToken 회원에게 지급

회원 정보 조회 :

  • 회원의 기본 정보 조회 기능

회원 권한 :

  • 회원은 ROLE_MEMBER 또는 ROLE_GUEST 권한을 획득
    특정 기능 사용 제한 설정 가능

비즈니스 로직 :

  • Email과 RefreshToken은 고유하며, 중복 불가
    각 회원은 단일 Cart와 관계

장바구니(Cart)관리

상품 추가:
회원은 상품(Product)을 장바구니에 추가하며, 추가된 상품의 ID와 수량은 CartProduct 엔티티에 저장

장바구니 조회:
회원은 장바구니에 담긴 상품 리스트를 조회하며, 총 가격 계산 로직 포함

장바구니 수정:
장바구니에 담긴 특정 상품의 수량 변경 가능

장바구니 초기화:
주문(Order) 생성 시 장바구니 초기화

비즈니스 로직:
각 회원은 단일 Cart와 관계를 맺으며, 하나의 Cart는 여러 CartProduct를 포함
Cart의 getTotalPrice() 메서드는 CartProduct의 상품 가격과 수량을 기반으로 총 가격 반환

상품(Product) 관리

상품 등록:
회원은 상품 정보를 입력하여 상품을 등록하고 등록된 상품은 Product 엔티티에 저장

상품 수정:
등록된 상품의 가격, 설명, 재고 수정 가능

상품 조회:
모든 등록된 상품을 조회하거나 특정 상품 ID로 세부 정보 확인 가능

비즈니스 로직:
상품은 이름(name), 가격(price), 설명(description), 카테고리(category), 재고(stock) 필드를 필수로 가짐
특정 회원이 등록한 상품은 해당 회원과 관계를 맺음

주문(Order) 관리

주문 생성:
회원은 장바구니에 담긴 상품으로 주문 생성 가능
장바구니의 총 가격(getTotalPrice)은 Order에 저장

주문 조회:
회원은 자신이 생성한 모든 주문을 조회하거나 특정 주문 ID로 세부 정보 확인 가능

주문 상태 변경:
주문 상태(orderType)는 ORDERED, DELIVERY, PAID, CANCELED로 변경 가능

주문 삭제:
회원은 특정 주문 삭제 가능

비즈니스 로직:
주문 생성 시 장바구니 초기화, 주문 내역(Order)에 장바구니 정보(Cart)와 소비자(Member) 정보 저장
각 주문은 단일 Cart와 연결


상호 관계

장바구니(Cart)와 상품(Product) 관계

다대다[N:M] / @Manytomany

  • 장바구니는 여러개의 상품을 가질 수 있다.
  • 상품은 여러개의 장바구니에 속할 수 있다.

CartProduck Entity를 만들어 card_id, product_id, quantity 정보를 관리하여 중개한다.

비즈니스 로직
CartProduct는 상품 ID와 수량 정보를 기반으로 각 상품의 총 가격을 계산.
Cart는 CartProduct의 정보를 통해 총 가격 (getTotalPrice()) 계산.

추가 비즈니스 규칙

  • 데이터 유효성 검증

모든 필드는 적절한 유효성 검사를 통과해야 한다.
예시 : 가격(price)은 0 이상의 양수여야 하며, 이메일 형식이 올바르지 않으면 예외 처리한다.

연관 관계

  • Member와 Cart는 1:1 관계 유지 / @OneToOne
  • Cart와 Order는 N:1 관계 유지 / @ManyToOne
  • Product는 Member와 N:1 관계 유지 @ManyToOne

0개의 댓글