상품 등록
상품 등록 API
POST
/products
S3 기본 설정
상품 수정
상품 수정 API
PUT
/products/{id}
상품 사이즈 옵셥 수정(추가) 로직 구현
- 상품의 해당 사이즈 옵션이 있으면 저장하지 않고 없을 경우에만 추가로 저장
상품 이미지 수정 API
상품 삭제
상품 삭제 API
DELETE
/products/{id}
isDeleted
플래그를 이용한 소프트 삭제 구현상품 필터링/정렬/검색 조회
GET
/products/search
동적 쿼리를 이용해서 아래의 조건들에 대하여 다 적용되도록!!
필터링
브랜드
스니커즈 사이즈
- 가격(후순위)
정렬
- 인기순(기본)
- 즉시 구매가순
- 즉시 판매가순
발매일순
검색
브랜드명, 모델명, 모델번호 검색
모든 상품 조회
모든 상품 조회 API
GET
/products
GET
/admin/products
각 상품의 즉시 구매가, 즉시 판매가를 가져오는 로직 구현(고민)
- 즉시 구매가 : 판매 입찰에 등록된 판매 희망가 중 최저값
- 즉시 판매가 : 구매 입찰에 등록된 구매 희망가 중 최고값
- 반환 값이
0
이라면 "해당 상품의 모든 사이즈 옵션에 아직 입찰(구매 or 판매)이 등록되지 않았다" 라는 것을 의미
특정 상품 상세 조회
특정 상품 상세 정보 조회 API
GET
/products/{id}
- 기본정보(브랜드, 영어이름, 한글이름, 모델번호, 출시일, 컬러, 발매가, 이미지)
- 모든 사이즈 옵션(각 사이즈의 즉시 구매가 포함)
- 즉시 구매가 : 판매 희망가 중 최저
선택한 사이즈에 따른 상세 정보 조회 API
GET
/products/{id}/details?size={size}- 최근 거래가 : 해당 상품의 최근 거래가(거래일 정렬 후 나온 첫번째 값)
- 체결거래 : 정보(사이즈, 거래가, 거래일) - 거래일 최신 정렬
- 판매입찰 : 정보(사이즈, 판매희망가, 수량) - 희망가 정렬(오름차순)
- 구매입찰 : 정보(사이즈, 구매희망가, 수량) - 희망가 정렬(내림차순)
- 만약 사이즈가 선택된다면 해당 사이즈의 내역만 조회
- 모든사이즈와 특정사이즈에 따른 조회 기능을 구현하다보니 사이즈가 추가되는 것만 같고 중복된 쿼리 메서드인 것 같다. 동적 쿼리로 해결할 수 있을까....?
findFirstByProductOrderByCreatedDateDesc()
findFirstByProductAndSizeOrderByCreatedDateDesc()
사이즈(옵션)를 별도의 테이블로 분리하여 아이디와 같은 식별자 값으로 관리하는 것이 더 나은 방법이라고 생각하지만, 현재 이 상태(2주 프로젝트)에서는 더 복잡한 ERD를 만들지 않기 위해 분리하지 않았습니다:)