Skip to content

team-mealhub/mealhub

Repository files navigation

🍽️ Mealhub


📝 프로젝트 소개

Mealhub는 음식점 검색부터 주문·결제, 그리고 신뢰 가능한 리뷰까지 한 곳에서 해결하는 음식 주문 플랫폼입니다.


💁‍♂️ 프로젝트 팀원

김민형 김나은 박근용 이유진 이호준 장가현
User, Auth, Cart, PaymentLog Restaurant,
RestauCategory,
AI, CI
Order Review Product Address

📁 프로젝트 상세

인증

  • 회원가입
    • 회원가입 시, 요청한 정보로 데이터베이스에 유저 정보를 등록합니다.
  • 로그인
    • 사용자 인증 정보를 통해 로그인 합니다.

유저

  • 유저 정보 조회
    • 유저 ID에 대한 유저 정보를 조회합니다.
    • MANAGER 권한의 유저만 수행 가능합니다.
  • 로그인한 유저 정보 조회
    • 로그인한 유저에 대한 유저 정보를 조회합니다.
  • 유저 정보 수정
    • 로그인한 유저에 대한 유저 정보를 수정합니다.
  • 유저 탈퇴
    • 로그인한 유저에 대한 탈퇴를 수행합니다.

주소

  • 주소 등록
    • 사용자가 배송지를 등록합니다.
  • 주소 조회
    • 단일 주소 또는 등록된 주소 전체 목록을 조회할 수 있습니다.
    • 키워드 검색과 페이징 기능을 통해 조회가 가능합니다.
  • 주소 수정
    • 등록된 주소 정보를 수정할 수 있습니다.
  • 주소 삭제
    • soft-delete 방식을 적용해 데이터 일관성을 유지하며 필요 시 복구가 가능합니다.
  • 기본 주소 설정
    • 여러 배송지 중 하나를 기본 주소로 지정할 수 있습니다.

가게

  • 가게
    • 가게 등록, 수정, 삭제 기능을 제공합니다.
  • 가게 카테고리
    • 한식, 중식, 분식, 치킨, 피자 등 음식점 카테고리 관리 기능을 제공합니다.
    • 카테고리 추가 및 수정이 가능한 확장성 있는 데이터 구조로 설계하였습니다.

상품

  • 상품 등록
    • 매니저 또는 관리자가 상품을 등록하여 상품을 생성합니다.
  • 상품 조회
    • 단일 상품 또는 생성된 상품 전체 목록을 조회가 가능합니다.
    • 키워드 검색 또는 페이징 및 정렬을 이용하여 목록을 상세하게 볼 수 있습니다.
  • 상품 수정
    • 등록된 상품 이름,가격,설명등을 수정하여 상품 내용을 전체 및 일부분 수정 할 수 있습니다.
  • 상품 삭제
    • soft-delete 원리를 이용하여 데이터를 일시적으로 삭제하며, 필요시 데이터를 다시 불러와서 사용할 수 있습니다. -상품 숨김 활성화 및 비활성화
  • 등록된 상품을 숨김 동작을 활성화하여 상품을 보이게 하거나, 비활성화시켜 상품을 숨기게 할 수 있습니다.

AI

  • AI
    • 상품 등록 시 Gemini API를 활용해 상품 설명을 자동 생성 기능을 제공합니다.
    • AI 요청 및 응답 내역을 별도의 AI 로그 테이블에 저장하도록 설계하였습니다.

장바구니

  • 장바구니 상품 추가
    • 장바구니에 상품을 추가합니다.
    • 동일한 상품이 장바구니에 이미 존재할 시, 기존의 장바구니 상품 수량을 변경하도록 동작합니다.
  • 장바구니 상품 조회
    • 로그인한 유저의 장바구니 상품을 조회합니다. 장바구니 상품 페이징 결과와 총 금액을 포함합니다.
  • 장바구니 상품 수량 변경
    • 장바구니 상품의 수량을 변경합니다.
  • 장바구니 상품 삭제
    • 장바구니 상품을 삭제합니다.

주문

  • 주문 생성
    • 고객이 상품 목록과 배송지 정보를 포함한 주문을 생성합니다.
    • 실제 상품 조회를 통해 가격을 검증하고 총액을 자동 계산합니다.
  • 주문 조회
    • 단건 조회: 주문 ID로 특정 주문의 상세 정보를 조회합니다.
    • 목록 조회: 주문 상태, 레스토랑, 유저, 기간 등 다양한 조건으로 주문을 검색합니다.
    • 권한 검증: 고객은 본인 주문만, 가게 주인은 자신의 레스토랑 주문만 조회 가능합니다.
  • 주문 상태 관리
    • 가게 주인이 주문 상태를 업데이트합니다. (PENDING → IN_PROGRESS → OUT_FOR_DELIVERY → DELIVERED)
    • 상태 전환 규칙을 검증하여 잘못된 상태 변경을 방지합니다.
    • 모든 상태 변경 이력을 로그로 저장합니다.
  • 주문 취소
    • 고객이 본인의 주문을 취소할 수 있습니다.
    • 취소 사유와 함께 주문 상태를 CANCELLED로 변경합니다.
  • 주문 삭제
    • 관리자 또는 가게 주인이 주문을 소프트 삭제합니다.
    • 삭제된 주문은 조회되지 않지만 데이터는 보존됩니다.

리뷰

  • 리뷰 생성
    • 고객의 주문 ID를 통해 주문 및 배달이 완료된 건에 대하여 해당 가게에 대한 리뷰 작성
    • 한 주문당 하나의 리뷰만 작성 가능
    • "사장님만 보기" 기능으로 타 유저에 대한 리뷰 숨김 처리 기능 제공
  • 리뷰 단건 조회
    • 리뷰 ID로 해당 리뷰에 대한 상세 보기 조회
  • 리뷰 리스트 조회
    • 가게 ID로 해당 대한 모든 리뷰 목록 조회
    • 정렬 및 페이징 기능 제공
    • 동일 값이 나올 경우를 대비해 주 정렬 키 + id DESC 보조 정렬로 안정 정렬 설계
    • 관리자, 해당 가게 사장님, 리뷰 작성자 본인만 "사장님만 보기 true"설정 리뷰 볼 수 있도록 설계
  • 내가 작성한 리뷰 조회
    • 접속한 유저의 ID로 본인이 작성한 리뷰만 전체 모아보기 제공
  • 리뷰 수정
    • 리뷰 ID로 해당 리뷰를 작성한 본인 및 관리자가 리뷰 수정
    • 별점, 리뷰 본문, 사장님만 보기 설정 단일 수정 가능
  • 리뷰 삭제
    • 리뷰 ID로 해당 리뷰를 작성한 본인 또는 관리자가 리뷰를 소프트 삭제
    • 삭제된 리뷰는 조회할 수 없지만 데이터는 보존

결제 기록

  • 결제 기록 조회
    • 유저 ID나 주문 ID를 받아 결제 기록을 조회합니다.
    • 유저 ID 또는 주문 ID 중 하나는 반드시 제공되어야 합니다. 결제 상태에 따른 필터링을 제공합니다.
    • MANAGER 권한의 유저만 수행 가능합니다.

🗂️ APIs

작성한 API는 아래에서 확인할 수 있습니다.

👉🏻 Swagger API 문서


🗃️ ERD

del (4)

⚙ 기술 스택

🖥️ Back-end

☁️ Infra

🧰 Tools


🛠️ 프로젝트 아키텍쳐

mealhub drawio

About

음식 배달 주문 플랫폼

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7