여러분은 투자 서비스의 백엔드 개발자입니다.
- 사용자는 원하는 투자 상품을 투자할 수 있습니다.
- 투자상품이 오픈될 때, 다수의 고객이 동시에 투자를 합니다.
- 투자 후 투자상품의 누적 투자모집 금액, 투자자 수가 증가됩니다.
- 총 투자모집금액 달성 시 투자는 마감되고 상품은 sold out 됩니다.
이번 과제에서는 REST API를 구현하는 것이 목표입니다.
위 목표와 아래의 요구사항을 만족하는 API서비스를 자유롭게 정의하여 구현해주시면 됩니다.
- 전체투자상품 조회 API
- 투자하기 API
- 나의 투자상품 조회 API
- 투자취소하기 API
- 요청한 사용자 식별값은 숫자 형태이며 “X-USER_ID”라는 HTTP Header로 전달됩니다.
- 채점용 테스트코드 외에 단위테스트를 작성합니다.
- Request/Response JSON은 채점용 테스트코드를 참고합니다.
- 각 투자상품의 필요한 정보는 아래와 같습니다. (상품명, 총 투자모집금액, 투자 시작일시, 투자 종료일시)
- 상품 모집기간내(투자 시작일시 ~ 투자 종료일시)의 상품만 응답합니다.
- Response에는 아래의 값을 포함합니다.
- 상품 ID
- 상품명
- 총 모집금액
- 현재 모집금액
- 투자자 수
- 상품 모집기간(투자 시작일시, 투자 종료일시)
- Request에는 아래의 값을 포함합니다.
- 사용자 식별값
- 상품 ID
- 투자 금액
- 총 투자모집금액이 남아 있지 않다면 실패 상태를 응답합니다.
- 투자요청한 금액이 투자가능금액보다 클 경우 실패로 처리힙니다.
- 내가 투자한 모든 상품을 반환합니다.(취소한 상품도 조회 가능)
- Response에는 아래의 값을 포함합니다.
- 투자 ID
- 상품 ID
- 상품명
- 총 모집금액
- 나의 투자금액
- 투자상태
- 투자일시
- Request에는 아래의 값을 포함합니다.
- 사용자 식별값
- 상품ID
- 취소가 되더라도 상품의 상태는 변경되지 않습니다.
- 취소가 되더라도 나의 투자상품 조회에서는 취소 조회가 되어야합니다.
전달해준 프로젝트에서 작성합니다.
SpringBoot + H2로 환경에서 시작합니다.
기본적으로 필요한 기술은
Java, REST API, Spring boot, JPA, H2이며 스스로 판단하여 추가적인 기술은 추가하여 사용합니다.
(적절한 아키택처 사용 평가)
- 채점용 테스트코드를 통과하는가? (만점 60점)
- 요구사항을 잘 이해하고 구현하였는가?(10점)
- 적절한 아키텍처 사용을 하였는가? (점수 10점)
- 의도가 명확하고 가독성이 좋은 코드인가?(점수 5점)
- 적절한 단위테스트를 작성하였는가?(추가점수 10점)
- JPA사용시 (추가점수 5점)