Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

2. Features : 최종 구현 기능

Jeong ki hyuk edited this page May 21, 2021 · 1 revision

👨‍🎓 Shoe-auction Features

✅ User

USER 공통 사항

  1. 모든 인증번호는 Redis 서버에 저장한다. 타임아웃은 이메일 링크의 경우 24시간, 단순 인증번호의 경우 10분으로 설정되어 있다.
  2. 회원의 로그인 정보는 Redis 서버에 저장한다. 세션의 타임아웃은 6시간이다.
  3. User Level은 UNAUTH, AUTH, ADMIN 총 3가지가 존재하며, 초기 Level은 UNAUTH 이며 이메일 링크 인증을 진행하면 AUTH로 변경된다.
  4. User Status는 BAN, NORMAL 총 2가지가 존재하며, 관리자에 의해 블록 처리된 사용자는 BAN으로 변경된다.

  • 회원가입
    • 이메일/닉네임/비밀번호/휴대폰 번호를 입력받는다.
    • 이메일과 닉네임 중복 검사 진행를 진행한다.
    • 회원가입시 휴대폰 인증을 진행한다.
    • 회원가입 완료시 이메일 인증 링크를 전송한다. 이메일 인증을 완료하지 않아도 일부 서비스 이용이 가능하다.
    • 이메일 인증 링크는 24시간 동안 유효하며, 시간이 만료되면 재전송이 가능하다.
  • 로그인 / 로그아웃
    • 로그인 / 로그아웃이 가능하다.
  • 회원 정보 수정
    • 환급받을 계좌번호를 등록/수정할 수 있다.
    • 주소록에 다수의 주소를 추가/삭제/수정할 수 있다.
    • 비밀번호를 변경할 수 있다. 이전 비밀번호가 일치하고, 비밀번호 Validation에 통과해야 한다.
    • 닉네임을 변경할 수 있다. 단, 닉네임은 7일에 한번만 변경이 가능하다.
  • 비밀번호 찾기
    • 휴대폰 인증 또는 이메일 인증 中 선택이 가능하다.
    • 인증에 성공하면 비밀번호를 변경할 수 있다.

✅ Admin

Admin 공통 사항

  1. Admin 관련 권한은 UserLevel.ADMIN 에게만 부여된다.

  • 전체 회원 조회
    • 서비스에 가입된 모든 USER를 조회할 수 있다.
  • 회원 상세 조회
    • 특정 유저를 조회할 수 있으며, 회원의 모든 정보를 확인할 수 있다.
  • 회원 검색 기능
    • UserLevel, Ban 여부, Email로 회원을 검색할 수 있다.
  • 회원 블럭(정지) 기능
    • 회원을 블럭(정지) 시킬 수 있다.
  • 모든 Trade 조회
    • Trade ID 또는 Trade Status 별로 Trade를 조회한다.

✅ Brand

Brand 공통 사항

  1. Brand는 Redis를 이용한 캐싱 기능을 제공한다.
  2. Brand 이미지는 AWS S3에 저장하고, 썸네일 이미지 활용시 불필요하게 큰 원본 이미지 파일을 계속하여 요청하는 것은 전송 효율이 떨어지므로 AWS Lamda를 이용해 이미지 리사이즈를 요청한다.
  3. Brand는 중복 생성이 불가능하다.
  4. Brand 생성 권한은 UserLevel.ADMIN에게만 부여된다.

  • 브랜드 생성
    • 브랜드 생성를 생성할 수 있다.
  • 브랜드 조회
    • 생성한 브랜드를 조회할 수 있다.
  • 브랜드 수정
    • 생성한 브랜드를 수정할 수 있다.
  • 브랜드 삭제
    • 생성한 브랜드를 삭제할 수 있다.

✅ Product

Product 공통 사항

  1. Product는 Redis를 이용한 캐싱 기능을 제공한다.
  2. Product이미지는 AWS S3에 저장하고, 썸네일 이미지 활용시 불필요하게 큰 원본 이미지 파일을 계속하여 요청하는 것은 전송 효율이 떨어지므로 AWS Lamda를 이용해 이미지 리사이즈를 요청한다.
  3. Product는 중복 생성이 불가능하다.
  4. Product생성 권한은 UserLevel.ADMIN에게만 부여된다.

  • Product 생성
    • Product를 생성할 수 있다.
  • Product 조회
    • 생성된 Product를 조회할 수 있다.
    • Product 조회시 연관관계를 맺고있는 Trade 목록도 함께 조회된다.
    • 입찰 내역(판매 / 구매) 목록을 제공한다.
    • 상품의 시세 변동 추이를 확인하기 위한 거래 완료 내역을 제공한다.
  • Product 수정
    • 생성된 Product를 수정할 수 있다.
  • Product 삭제
    • 생성된 Product를 삭제할 수 있다.

✅ Trade

Trade 공통 사항

  1. Trade는 Product와 밀접한 관계를 맺고 있다. 따라서 Trade가 추가되거나, 삭제되었을 경우 DB와 캐시 저장소의 데이터 일관성을 맞추기 위하여 캐싱되었던 값의 refresh를 실행한다.
  2. Trade 진행 과정에서 Inspection(검수)와 Delivery(배송)이 함께 진행된다.
  3. Trade 진행 과정별로 Status가 변경된다.

  • 판매/구매 입찰 등록을 위한 리소스

    • 반송 주소 / 배송 주소 입력을 위한 회원의 주소록을 함께 응답한다.
    • 판매자의 경우 정산 계좌를 한번 더 확인할 수 있도록 계좌 정보를 함께 응답한다.
    • 즉시 구매할 수 있는 가장 낮은 가격의 판매 입찰과, 즉시 판매할 수 있는 가장 높은 금액의 구매 입찰 Trade 정보를 함께 제공한다.
    • 본인이 본인의 물품을 판매/구매하는 Exception을 방지하기 위해 구매/판매 페이지에서는 선택한 신발과 사이즈에 맞는 최저 판매가격 / 최고 구매가격만 표시된다. 만약 최저 판매가격 / 최고 구매가격에 해당하는 Trade가 자신이 등록한 Trade라면 해당 리소스는 제외하고 보여준다.
  • 판매 /구매 입찰

    • 판매 물품에 대한 입찰 등록을 할 수 있다.
    • 구매 물품에 대한 입찰 등록을 할 수 있다.
  • 즉시 판매 / 즉시 구매

    • 다른 사용자의 입찰에 대한 즉시 판매, 즉시 구매를 할 수 있다.
  • Trade 삭제

    • 등록한 판매 / 구매 입찰을 삭제할 수 있다.
  • Trade 수정

    • 등록한 판매 / 구매 입찰을 수정할 수 있다.
  • Trade 진행 상태에 따른 상태 변화

    • PRE_CONCLUSION: 거래 체결 대기 (거래 체결과 동시에 결제까지 완료)
    • PRE_SELLER_SHIPMENT: 판매자 발송 대기
    • PRE_WAREHOUSING: 입고 대기(판매자 -> 회사)
    • PRE_INSPECTION: 검수 대기
    • PRE_SHIPMENT: 구매자 발송 대기
    • SHIPPING: 배송중(회사 -> 구매자)
    • TRADE_COMPLETE: 거래 완료
    • CANCEL: 취소(판매자가 기간 내 상품 미발송 및 검수 탈락)
  • Inspection

    • 판매자로부터 도착한 물건에 이상 여부를 판단하는 검수 과정을 거친다.
    • 검수 통과시 다음 구매자에게 물품을 발송하는 상태로 변경하고, 검수 불통과시 사유와 함께 판매자에게 물품을 리턴시킨다.

✅ Point

Point 공통 사항

  1. 결제시스템 구현을 위해 mustache 충전페이지를 구성한다.
  2. 포인트 충전 방법에는 카카오페이를 사용한다.
  3. 아임포트 API를 사용한다.

  • 포인트 충전
    • 사용자가 입력한 금액만큼 포인트를 충전한다.
  • 포인트 출금
    • 판매 대금으로 받은 포인트를 출금할 수 있다.
    • 충전한 포인트의 환불기능을 따로 구현하지 않고, 포인트 출금으로 대체한다.
  • 포인트 내역 조회
    • 포인트 충전 내역을 조회할 수 있다. (충전 내역 / 판매 대금 정산 내역)
    • 포인트 차감 내역을 조회할 수 있다. (출금 내역 / 구매 대금 지불 내역)
  • 판매/구매 관련
    • 포인트가 부족하면 구매 입찰을 등록할 수 없다.

🔑 주요 서비스 처리 과정

1. 판매 입찰 / 구매 입찰

1 입찰

  • 회원가입과 로그인을 진행합니다.
  • 판매 또는 구매를 원하는 상품을 검색합니다.
  • 판매 입찰 또는 구매 입찰을 등록합니다.

2. 판매 과정

2  판매 과정

  • 판매 입찰 등록한 물품이 판매되면 Shoe-auction으로 판매 물품을 발송합니다. TradeStatusPRE_SELLER_SHIPMENT로 변경됩니다.
  • 발송 후 발송정보 (운송장 번호 / 택배사)를 등록하면 TradeStatusPRE_WAREHOUSING로 변경됩니다.
  • 발송하신 상품이 Shoe-auction에 도착하면 TradeStatusPRE_INSPECTION로 변경됩니다.
  • 검수에 합격하면 TradeStatusTRADE_COMPLETE로 변경되고 판매 대금이 포인트로 지급됩니다.
  • 검수에 불합격하면 TradeStatusCANCEL로 변경되고 CANCEL 사유와 반송된 물품의 운송장 정보가 등록됩니다.

3. 구매 과정

3  구매 과정

  • 충전해둔 포인트로 원하는 물품을 구매합니다.
  • 판매자가 물품을 발송 후, 검수에 합격하면 TradeStatusSHIPPING으로 변경됩니다.
  • 판매자가 발송한 물품이 검수에 불합격하면 TradeStatusCANCLE로 변경되고, 구매 대금은 즉시 포인트로 환불됩니다.