Features : 최종 구현 기능 - Kim-Gyuri/SanrioShop GitHub Wiki

✅ User

  1. 로그인 성공하면 Access, Refresh 토큰을 받는데, Refresh 토큰은 Mysql에 저장한다. 각각의 토큰은 생명주기와 사용처가 다르게 설정했다.

Access : 헤더에 발급 후 프론트에서 로컬 스토리지에 저장하여 사용한다. Refresh : 쿠키에 발급 받는다.

Access 토큰은 10분, Refresh 토큰은 24시간으로 설정했다. 보안적 차원에서 Access 토큰의 생명주기를 짧게 설정하고, 만료된 Access 토큰은 Refresh 토큰을 사용해 재발급하는 방식으로 관리하도록 구현했다.

  1. User Level은 UNAUTH, AUTH, ADMIN 총 3가지가 존재하며, 회원가입을 했을 때 AUTH(가입된 회원)으로 설정된다.

번외 아직 기능 구현은 하지 않았지만, 관리자 역할을 추가할 계획이었다. ADMIN을 '관리자' 권한으로 사용될 예정이며, 사용자 상태로 BAN과 NORMAL 두 가지로 구성했다. 관리자가 블록 처리한 사용자는 상태를 BAN으로 변경하여 관리할 수 있도록 하려고 했다.


  • 회원가입

    • 이메일/닉네임/비밀번호를 입력받는다.
    • 이메일과 닉네임 중복 검사를 진행한다.
  • 로그인 / 로그아웃

  • 회원 정보 수정

    • 닉네임을 변경할 수 있다.
    • 프로필 이미지를 변경할 수 있다.

✅ Item

  1. Item 생성권한은 AUTH(가입된 회원)만 가능하다.
  2. Item 이미지는 GCS에 저장하고, Mysql에 GCS에 저장된 이미지 경로를 저장한다.

  • Item 생성

    • 특정 종류의 산리오 캐릭터에 대한 Item을 생성할 수 있다.
    • 각 Item은 분류 테마를 설정할 수 있다. 테마는 '인기검색어', '포카 꾸미기', '책상 꾸미기', '다꾸/문구', '필기류', '소품'으로 구성했다.
    • Item에 대한 정보로 여러 이미지를 추가하고, 해시태그를 설정할 수 있다.
    • 각 이미지와 해시태그는 개별 객체로 생성되어 해당 Item과 연결된다.
  • Item 수정

    • 생성된 Item을 수정할 수 있다.
    • 수정 시, 추가로 이미지를 추가하거나 해시태그를 추가할 수 있다.
    • 수정 시, 기존의 이미지 또는 해시태그를 삭제할 수 있다.
  • Item 조회

    • 메인 페이지에서 해시태그와 상품명으로 검색할 수 있다.
      • 사용자는 해시태그 또는 상품명을 입력하여 원하는 상품을 조회할 수 있으며, 상품에 표시된 해시태그를 클릭해 검색할 수 있다.
      • 산리오 캐릭터별로 상품을 검색할 수 있다. 사용자는 특정 캐릭터를 선택하여 해시태그 또는 상품명을 입력하여 조건에 맞는 상품을 찾을 수 있다.
    • 카테고리 페이지에서는 '인기 검색어', '포카 꾸미기', '책상 꾸미기', '다꾸/문구', '필기류', '소품' 등의 테마를 통해 상품을 쉽게 찾을 수 있다.
      • 선택한 테마에 맞는 해시태그로 검색 조건을 설정할 수 있으며, 해당 테마에서도 산리오 캐릭터별로 검색할 수 있다.
  • Item 삭제

    • 생성된 Item을 삭제할 수 있다.
    • Item에 대한 주문이 있는 경우 삭제할 수 없도록 예외 처리가 되어 있다.
    • Item 삭제 시, 연관된 이미지와 해시태그도 함께 삭제된다.
    • Item을 삭제할 때, 품절 안내 메시지 Notification이 생성된다.

✅ WishItem

  1. WishItem 생성은 AUTH(가입된 회원)에게만 허용된다.
  2. 사용자는 원하는 Item을 WishItem으로 생성할 수 있으며, WishList와 N:1 관계로 장바구니에 담는 찜 상품을 나타낸다.

  • WishItem 생성

    • 원하는 Item을 WishItem으로 생성할 수 있다.
  • WishItem 조회

    • 특정 사용자가 생성한 WishItem을 조회할 수 있다.
  • WishItem 삭제

    • 생성된 WishItem을 삭제할 수 있다.

✅ SaleItem

  1. SaleItem은 실제로 판매되거나 거래 과정에서 사용되는 상품을 나타낸다.
  2. SaleStatus는 CONTACT_PENDING("거래 연락 받는 중"), MEETING_SCHEDULED("약속 잡힘"), TRADE_COMPLETE("거래 완료")로 구성된다.

  • 판매

    • 동시 거래 요청을 고려하여 거래 요청에 대한 SaleItem이 생성되도록 처리했다.
  • 주문 조회

    • 구매자는 상품의 거래 내용을 조회할 수 있다.
  • 판매 조회

    • 판매자는 상품의 거래 내용을 조회할 수 있다.

🔑 주요 서비스 처리 과정

서버 연결했을 때 다시 그림추가하자!

  • 1. 상품 검색

  1. 회원가입/로그인
  2. 검색
  • 가입된 회원만 상품을 검색할 수 있다.
  • 구매하고 싶은 상품을 산리오 캐릭터별, 상품명, 해시태그, 테마 등 검색조건으로 찾는다.

  • 2. 찜등록 과정

  1. 회원가입/로그인
  2. 검색
  3. 찜 등록
  • 가입된 회원만 관심있는 상품을 찜 등록할 수 있다.
  • 찜 등록했던 상품을 조회할 수 있다.

  • 3. 판매 과정

  1. 회원가입/로그인
  2. 판매할 상품 등록
  3. 주문관리
  • 가입된 회원만 상품을 판매할 수 있다.
  • 판매하고 싶은 상품을 등록한다.
  • 판매 페이지에서 판매상품을 관리할 수 있다.
  • 알림을 통해 주문을 확인하여, 판매 페이지에서 주문 상세조회를 할 수 있다.

  • 4. 구매 과정

  1. 회원가입/로그인
  2. 상품 검색
  3. 상품 조회
  4. 구매
  5. 주문 리스트 조회
  • 회원가입과 로그인을 진행한다.
  • 구매를 원하는 상품을 검색한다.
  • 주문 리스트에서 주문을 확인한다.