Skip to content

jo0oy/jpastore-project

Repository files navigation

온라인 서점 서비스 API - jpastore-project

요구사항 및 상세 기능

  • 인증 기능
    • 로그인
    • 토큰 재발행
    • 소셜로그인 (Kakao/Naver)
    • 로그아웃
  • 회원 기능
    • 회원 등록
    • 회원 조회 - 회원 본인 or 관리자 권한
    • 회원 멤버십 벌크 업데이트 - 관리자 권한
    • 회원 삭제 - 회원 본인 or 관리자 권한
    • 전체 회원 리스트 조회 - 관리자 권한
    • 전체 회원 리스트 조회 (페이징, 정렬, 검색) - 관리자 권한
  • 상품 기능
    • 상품 등록 - 관리자 권한
    • 상품 수정 - 관리자 권한
    • 상품 삭제 - 관리자 권한
    • 단일 상품 조회
    • 전체 상품 리스트 조회
    • 전체 상품 리스트 조회 (페이징, 정렬, 검색)
  • 카테고리 기능
    • 카테고리 등록 - 관리자 권한
    • 카테고리 수정 - 관리자 권한
    • 카테고리 삭제 - 관리자 권한
    • 전체 카테고리 조회
    • 전체 카테고리 계층 리스트 조회
    • 카테고리 상품 리스트 조회
  • 주문 기능
    • 상품 주문
    • 단일 주문 내역 조회 - 회원 본인 or 관리자 권한
    • 주문 취소 - 회원 본인 or 관리자 권한
    • 로그인된 회원의 주문 내역 리스트 조회
    • 전체 주문 리스트 조회 - 관리자 권한
    • 전체 주문 리스트 조회 (페이징, 정렬, 검색) - 관리자 권한
  • 리뷰 기능
    • 리뷰 작성
    • 단일 리뷰 조회
    • 로그인된 회원이 작성한 리뷰 리스트 조회
    • 전체 리뷰 리스트 조회
    • 전체 리뷰 리스트 조회 (페이징, 정렬, 검색)
  • 기타 요구사항
    • JWT 토큰을 통해 인증/권한 관리를 진행한다.
    • 소셜로그인(카카오/네이버) 가능하다.
    • RefreshToken은 Redis에 “RT:{회원ID}”를 key 값으로 저장된다. → 만료기한(TTL) 있음.
    • 상품은 재고 관리가 필요하다.
    • 상품의 종류는 도서, 음반, 영화가 있다.
    • 상품을 카테고리로 구분할 수 있다.
    • 회원 멤버십은 상/하반기 분기별로 회원의 이전 분기 누적 지출액에 따라 등급을 업데이트 한다.
    • 등록하려는 카테고리가 root 레벨일 경우 어느 것과도 중복되지 않은 카테고리명만 등록 가능하다. 그 외일 경우, 부모 카테고리, 형제 카테고리와 중복되지 않은 이름만 등록 가능하다.
    • 자식 카테고리가 있을 경우 해당 카테고리는 삭제할 수 없다.
    • CategoryItem 엔티티를 제외한 모든 도메인의 삭제는 softDelete 처리한다.

개발환경

  • IntelliJ Ultimate 2022.03
  • Java 11
  • Gradle 6.8.3
  • Spring Boot 2.6.11

세부 기술 스택

Spring Boot

  • Spring Web
  • Spring Data JPA
  • Spring Security
  • Spring Security OAuth2
  • Spring AOP
  • Spring Validation
  • Spring Dev Tools
  • Thymeleaf
  • MariaDB Driver
  • Lombok

그외

  • Redis
  • JWT
  • Querydsl
  • MapStruct
  • Testcontainers
  • Google Guava
  • Spring Doc

ERD

Feature List

  • 상품(Item) 과 Book, Album, Dvd 상속 관계 매핑 적용 - 단일 테이블 전략
  • 상품 재고 동시성 문제를 고려해 상품(Item) 조회 쿼리에 비관적 락(Pessimistic Lock) 적용

Results

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages