- 설명: 사장(OWNER) 권한을 가진 사용자가 새 가게를 등록할 수 있다.
- 요청 데이터:
- 가게명
- 영업 시작 시간
- 영업 마감 시간
- 최소 주문 금액
- 처리 로직:
- 로그인 여부 확인
- 사용자 권한이 OWNER인지 검증
- 해당 사용자가 이미 소유한 가게가 3개 이상인 경우 등록 거부
- 새 가게 엔티티를 생성 및 저장
- 저장된 가게 정보를 응답
- 예외 처리:
- OWNER 권한이 아닌 경우:
StoreException(StoreError.UNAUTHORIZED_STORE_OWNER) - 운영 중인 가게가 3개 이상인 경우:
StoreException(StoreError.EXCEEDED_STORE_LIMIT)
- OWNER 권한이 아닌 경우:
- 설명: 가게 이름에 특정 문자열이 포함된 가게 목록을 조회할 수 있다.
- 요청 데이터:
- 검색어 (name)
- 처리 로직:
- 이름에 검색어가 포함된 가게 목록 조회
- 운영 중인 가게만 필터링하여 반환
- 예외 처리:
- 없음 (검색 결과가 없으면 빈 리스트 반환)
- 설명: 특정 가게 ID로 가게 상세 정보와 가게의 메뉴 리스트를 함께 조회할 수 있다.
- 요청 데이터:
- 가게 ID
- 처리 로직:
- 가게 ID로 가게 조회
- 해당 가게에 소속된 메뉴 목록 함께 조회
- 가게 정보 + 메뉴 목록을 응답
- 예외 처리:
- 가게를 찾을 수 없는 경우:
StoreException(StoreError.NOT_FOUND_STORE)
- 가게를 찾을 수 없는 경우:
- 설명: 가게 소유자가 본인의 가게 정보를 수정할 수 있다.
- 요청 데이터:
- 가게명
- 영업 시작 시간
- 영업 마감 시간
- 최소 주문 금액
- 공지사항
- 처리 로직:
- 로그인 여부 확인
- 가게 ID로 가게 조회
- 로그인한 사용자가 가게 소유자인지 검증
- 영업 시작 시간이 마감 시간 이후이면 수정 거부
- 가게 정보를 업데이트
- 수정된 가게 정보를 응답
- 예외 처리:
- OWNER가 아닌 사용자가 수정 시도할 경우:
StoreException(StoreError.UNAUTHORIZED_STORE_OWNER) - 영업 시작 시간이 마감 시간 이후일 경우:
StoreException(StoreError.INVALID_OPEN_TIME_AFTER_CLOSE)
- OWNER가 아닌 사용자가 수정 시도할 경우:
- 설명: 가게 소유자가 본인의 가게를 삭제(폐업)할 수 있다.
- 요청 데이터:
- 가게 ID
- 처리 로직:
- 로그인 여부 확인
- 가게 ID로 가게 조회
- 로그인한 사용자가 가게 소유자인지 검증
- 가게를 삭제 처리 (Soft Delete → 실제로는 status를 'CLOSED'로 변경)
- 예외 처리:
- OWNER가 아닌 사용자가 삭제 시도할 경우:
StoreException(StoreError.UNAUTHORIZED_STORE_OWNER) - 가게를 찾을 수 없는 경우:
StoreException(StoreError.NOT_FOUND_STORE)
- OWNER가 아닌 사용자가 삭제 시도할 경우:
- 설명: 사장이 본인의 특정 가게에 대한 일간/월간 매출 통계를 조회할 수 있다.
- 요청 데이터:
- 가게 ID
- 날짜 (
date, 형식: yyyy-MM-dd) 또는 - 월 (
month, 형식: yyyy-MM)
- 처리 로직:
- 로그인 여부 확인
- 가게 ID로 가게 조회
- 로그인한 사용자가 해당 가게의 소유자인지 검증
- 조회 기준(basis)을 일(
DATE) 또는 월(MONTH)로 구분 - 기간(start~end) 설정
- 해당 기간 동안의 주문 데이터를 기준으로
- 방문한 고객 수 (고유 사용자 수)
- 주문 건수
- 총 매출액 합계
- 가게 정보와 함께 응답
- 예외 처리:
- 로그인하지 않은 경우
- OWNER가 아닌 사용자가 접근 시도한 경우:
StoreException(StoreError.UNAUTHORIZED_STORE_OWNER) - 날짜(
date)와 월(month) 둘 다 입력하지 않은 경우:DashboardException(DashboardError.DATE_REQUIRED) - 날짜(
date)와 월(month) 둘 다 입력한 경우:DashboardException(DashboardError.DATE_PARAM_CONFLICT)
- 설명: 사장이 자신이 운영하는 모든 가게에 대한 일간/월간 통합 매출 통계를 조회할 수 있다.
- 요청 데이터:
- 날짜 (
date, 형식: yyyy-MM-dd) 또는 - 월 (
month, 형식: yyyy-MM)
- 날짜 (
- 처리 로직:
- 로그인 여부 확인
- 로그인한 사용자가 OWNER 권한을 가지고 있는지 검증
- 조회 기준(basis)을 일(
DATE) 또는 월(MONTH)로 구분 - 기간(start~end) 설정
- OWNER가 소유한 모든 운영 중인 가게들의 주문 데이터 합산
- 방문한 고객 수 (고유 사용자 수)
- 주문 건수
- 총 매출액 합계
- 응답에는 가게 정보 없이 매출 데이터만 반환
- 예외 처리:
- 로그인하지 않은 경우
- OWNER가 아닌 사용자가 접근 시도한 경우:
StoreException(StoreError.UNAUTHORIZED_STORE_OWNER) - 날짜(
date)와 월(month) 둘 다 입력하지 않은 경우:DashboardException(DashboardError.DATE_REQUIRED) - 날짜(
date)와 월(month) 둘 다 입력한 경우:DashboardException(DashboardError.DATE_PARAM_CONFLICT)