Coder Social home page Coder Social logo

shoe-auction's Introduction

Shoe-auction

최근 패선엽계에서 한정판 스니커즈 리셀(resell · 재판매)이 화두로 떠오르고 있는 점을 고려하여 판매자와 구매자 사이에서 중개자 역할을 통해 가품 판매 방지와 사기 방지를 지원하는 중개 거래 플랫폼

프로젝트 목표

  • 해외 StockX와 국내 KREAM과 같은 중개거래 플랫폼 구현
  • 객체지향의 원리를 최대한 적용하여 유지 보수에 용이한 코드 구현
  • 단순 기능 구현만이 아닌 대용량 트래픽을 고려한 확장에 용이한 서버 구조 설계
  • 프로젝트 진행 과정에서 코드리뷰를 통한 코드의 정확성 및 품질향상
  • 이유와 타당한 근거에 따른 기술 사용

사용 기술

적용기술

🧚‍♀️ WIKI

해당 프로젝트의 모든 정보는 WIKI를 통해 참고하실 수 있습니다.

shoe-auction's People

Contributors

hosick avatar kihyuk-jeong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

shoe-auction's Issues

상품, 브랜드 CRUD 효율화

  • Redis를 이용한 글로벌 캐싱 설정
  • 브랜드 전체 조회시 캐시 등록
  • 브랜드 생성, 수정, 삭제 시 브랜드 List 캐시 삭제
  • 상품 조회시 캐시 등록
  • 상품 수정, 삭제 시 상품 캐시 삭제

프로젝트 설정

의존성 추가

  • spring-boot-starter-web
  • lombok
  • spring-boot-devtools
  • h2database:h2
  • spring-restdocs-mockmvc
  • spring-boot-starter-validation
    • springboot2.3 이후 Web-starter 의존성에 Valid가 제외되었으므로 추가

h2 DB 초기 설정

  • application.yml에 h2 db 초기 설정

여러 기준의 상품 목록 조회 구현

상품 목록 조회 기준

-브랜드 별 상품 조회

-정렬

  • 즉시 구매가 낮은 순 정렬
  • 즉시 구매가 높은 순 정렬
  • 상품 발매일 순 정렬

-검색

  • 상품 한글 명
  • 상품 영문 명
  • 상품 모델 넘버

회원가입 구현

필수 입력 항목

  • 이메일
  • 비밀번호
  • 닉네임
  • 휴대폰 번호

기타

  • 휴대폰 인증 절차 진행
  • 이메일/ 닉네임 중복검사 진행

Push 알림 서비스 구현

  • FireBase admin dependency 추가
  • FCMInitializer 클래스 생성하여 FirebaseApp 초기화 작업
  • 로그인 시 클라이언트로부터 fcm 토큰을 받아서 로그인 email을 key로 Redis에 저장
  • 즉시 구매, 판매 시 거래 상대방에게 알림 메세지 send

알림 캡쳐

찜(장바구니) 구현 (모델링)

찜 목록 구현
일반 쇼핑몰의 장바구니와는 다르게, 해당 상품 자체를 담아서 한번에 주문하는 기능이 아닌 관심 상품 북마크 개념의 기능

회원 탈퇴 기능 구현

  • 비밀번호 입력하여 현재 로그인 중인 회원 탈퇴
  • 회원 탈퇴 성공 시 자동 로그아웃
  • 비밀번호 불일치 시 예외 발생
  • 회원 탈퇴 성공/실패 테스트 작성

이메일 인증, 인증 관련 상수 클래스로 관리

이메일을 회원의 ID로 사용하기 때문에 회원가입시 이메일 인증 진행
인증번호를 입력하는 방식이 아닌 랜덤 토큰을 이메일로 발송하여 해당 URL을 클릭하면 인증이 완료되는 방식으로 구현

상품, 브랜드 도메인 및 CRUD 구현

구현 내용

  • 브랜드, 상품 도메인 구현
  • 브랜드, 상품 CRUD 구현 (전체조회는 제외)

추가 이슈에서 구현할 내용들

  • 브랜드, 상품에 이미지 추가
  • 이미지 추가 완료 후 테스트 코드 작성
  • 다양한 유형의 상품 조회(페이징, 분류별, 브랜드별 등)

비밀번호 찾기 구현

  1. 가입시 등록한 이메일로 인증번호 확인 후 비밀번호 변경
  2. 가입시 등록한 휴대폰 번호로 인증번호 확인 후 비밀번호 변경

브랜드 이미지 리사이징 및 파일 용량 제한

브랜드의 이미지 파일 용도는 상품 리스트를 조회할 때 상품 이미지와 함께 작은 브랜드 이미지도 함께 조회하기 위함이다.
따라서 불필요한 크기의 이미지가 트래픽을 차지해 로딩을 느리게 하지 않도록 업로드 시 원본이미지 동일 비율에 고정된 높이 값(60mm)을 갖도록 리사이징을 해야 한다.

또한 요청으로 이미지 파일을 받을 때에 지정한 크기 제한(10MB) 이상의 파일을 받았을 때 발생하는 MaxUploadSizeExceededException을 핸들링한다.

회원정보 수정

  • 마이페이지에서 환급받을 계좌번호 입력/수정
  • 마이페이지에서 배송받을 주소 입력/수정
  • 마이페이지에서 비밀번호 변경
  • 마이페이지에서 닉네임 변경

로그인 구현

session을 이용한 로그인 구현

  1. id/pw 불일치시 로그인 실패
  2. 로그아웃
  3. 로그인이 필요한 경우 aop로 세션 검사
  4. 로그인 성공/실패 테스트코드 구현

addressBook 관련 리팩토링

  1. 주소 최대 10개까지만 추가 가능하도록 수정
  2. my-infos에서는 addressbook 을 리턴하지 않도록 수정

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.