This repository has been archived by the owner on Aug 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 22
2. Features : 최종 구현 기능
Jeong ki hyuk edited this page May 21, 2021
·
1 revision
- 모든 인증번호는 Redis 서버에 저장한다. 타임아웃은 이메일 링크의 경우 24시간, 단순 인증번호의 경우 10분으로 설정되어 있다.
- 회원의 로그인 정보는 Redis 서버에 저장한다. 세션의 타임아웃은 6시간이다.
- User Level은
UNAUTH
,AUTH
,ADMIN
총 3가지가 존재하며, 초기 Level은 UNAUTH 이며 이메일 링크 인증을 진행하면 AUTH로 변경된다. - User Status는
BAN
,NORMAL
총 2가지가 존재하며, 관리자에 의해 블록 처리된 사용자는 BAN으로 변경된다.
-
회원가입
- 이메일/닉네임/비밀번호/휴대폰 번호를 입력받는다.
- 이메일과 닉네임 중복 검사 진행를 진행한다.
- 회원가입시 휴대폰 인증을 진행한다.
- 회원가입 완료시 이메일 인증 링크를 전송한다. 이메일 인증을 완료하지 않아도 일부 서비스 이용이 가능하다.
- 이메일 인증 링크는 24시간 동안 유효하며, 시간이 만료되면 재전송이 가능하다.
-
로그인 / 로그아웃
- 로그인 / 로그아웃이 가능하다.
-
회원 정보 수정
- 환급받을 계좌번호를 등록/수정할 수 있다.
- 주소록에 다수의 주소를 추가/삭제/수정할 수 있다.
- 비밀번호를 변경할 수 있다. 이전 비밀번호가 일치하고, 비밀번호 Validation에 통과해야 한다.
- 닉네임을 변경할 수 있다. 단, 닉네임은 7일에 한번만 변경이 가능하다.
-
비밀번호 찾기
- 휴대폰 인증 또는 이메일 인증 中 선택이 가능하다.
- 인증에 성공하면 비밀번호를 변경할 수 있다.
- Admin 관련 권한은
UserLevel.ADMIN
에게만 부여된다.
-
전체 회원 조회
- 서비스에 가입된 모든 USER를 조회할 수 있다.
-
회원 상세 조회
- 특정 유저를 조회할 수 있으며, 회원의 모든 정보를 확인할 수 있다.
-
회원 검색 기능
- UserLevel, Ban 여부, Email로 회원을 검색할 수 있다.
-
회원 블럭(정지) 기능
- 회원을 블럭(정지) 시킬 수 있다.
-
모든 Trade 조회
- Trade ID 또는 Trade Status 별로 Trade를 조회한다.
- Brand는 Redis를 이용한 캐싱 기능을 제공한다.
- Brand 이미지는 AWS S3에 저장하고, 썸네일 이미지 활용시 불필요하게 큰 원본 이미지 파일을 계속하여 요청하는 것은 전송 효율이 떨어지므로 AWS Lamda를 이용해 이미지 리사이즈를 요청한다.
- Brand는 중복 생성이 불가능하다.
- Brand 생성 권한은
UserLevel.ADMIN
에게만 부여된다.
-
브랜드 생성
- 브랜드 생성를 생성할 수 있다.
-
브랜드 조회
- 생성한 브랜드를 조회할 수 있다.
-
브랜드 수정
- 생성한 브랜드를 수정할 수 있다.
-
브랜드 삭제
- 생성한 브랜드를 삭제할 수 있다.
- Product는 Redis를 이용한 캐싱 기능을 제공한다.
- Product이미지는 AWS S3에 저장하고, 썸네일 이미지 활용시 불필요하게 큰 원본 이미지 파일을 계속하여 요청하는 것은 전송 효율이 떨어지므로 AWS Lamda를 이용해 이미지 리사이즈를 요청한다.
- Product는 중복 생성이 불가능하다.
- Product생성 권한은
UserLevel.ADMIN
에게만 부여된다.
-
Product 생성
- Product를 생성할 수 있다.
-
Product 조회
- 생성된 Product를 조회할 수 있다.
- Product 조회시 연관관계를 맺고있는 Trade 목록도 함께 조회된다.
- 입찰 내역(판매 / 구매) 목록을 제공한다.
- 상품의 시세 변동 추이를 확인하기 위한 거래 완료 내역을 제공한다.
-
Product 수정
- 생성된 Product를 수정할 수 있다.
-
Product 삭제
- 생성된 Product를 삭제할 수 있다.
- Trade는 Product와 밀접한 관계를 맺고 있다. 따라서 Trade가 추가되거나, 삭제되었을 경우 DB와 캐시 저장소의 데이터 일관성을 맞추기 위하여 캐싱되었던 값의 refresh를 실행한다.
- Trade 진행 과정에서 Inspection(검수)와 Delivery(배송)이 함께 진행된다.
- 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
- 판매자로부터 도착한 물건에 이상 여부를 판단하는 검수 과정을 거친다.
- 검수 통과시 다음 구매자에게 물품을 발송하는 상태로 변경하고, 검수 불통과시 사유와 함께 판매자에게 물품을 리턴시킨다.
- 결제시스템 구현을 위해 mustache 충전페이지를 구성한다.
- 포인트 충전 방법에는 카카오페이를 사용한다.
- 아임포트 API를 사용한다.
- 포인트 충전
- 사용자가 입력한 금액만큼 포인트를 충전한다.
- 포인트 출금
- 판매 대금으로 받은 포인트를 출금할 수 있다.
- 충전한 포인트의 환불기능을 따로 구현하지 않고, 포인트 출금으로 대체한다.
- 포인트 내역 조회
- 포인트 충전 내역을 조회할 수 있다. (충전 내역 / 판매 대금 정산 내역)
- 포인트 차감 내역을 조회할 수 있다. (출금 내역 / 구매 대금 지불 내역)
- 판매/구매 관련
- 포인트가 부족하면 구매 입찰을 등록할 수 없다.
- 회원가입과 로그인을 진행합니다.
- 판매 또는 구매를 원하는 상품을 검색합니다.
- 판매 입찰 또는 구매 입찰을 등록합니다.
- 판매 입찰 등록한 물품이 판매되면 Shoe-auction으로 판매 물품을 발송합니다.
TradeStatus
가 PRE_SELLER_SHIPMENT로 변경됩니다. - 발송 후 발송정보 (운송장 번호 / 택배사)를 등록하면
TradeStatus
가 PRE_WAREHOUSING로 변경됩니다. - 발송하신 상품이 Shoe-auction에 도착하면
TradeStatus
가 PRE_INSPECTION로 변경됩니다. - 검수에 합격하면
TradeStatus
가 TRADE_COMPLETE로 변경되고 판매 대금이 포인트로 지급됩니다. - 검수에 불합격하면
TradeStatus
가 CANCEL로 변경되고 CANCEL 사유와 반송된 물품의 운송장 정보가 등록됩니다.
- 충전해둔 포인트로 원하는 물품을 구매합니다.
- 판매자가 물품을 발송 후, 검수에 합격하면
TradeStatus
가 SHIPPING으로 변경됩니다. - 판매자가 발송한 물품이 검수에 불합격하면
TradeStatus
가 CANCLE로 변경되고, 구매 대금은 즉시 포인트로 환불됩니다.