공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.
이번 장에서는 대출 상환 내역을 조회하는 기능을 구현한다. 이를 위해 필요한 컨트롤러, 서비스, DTO, 그리고 리포지토리 메서드를 추가하였다.
1. InternalController 메서드 추가
상환 내역을 조회할 수 있도록 InternalController에 새로운 GET 메서드를 추가하였다. 이 메서드는 특정 applicationId를 통해 상환 내역을 조회하며, 해당 데이터를 반환하는 역할을 한다.
@GetMapping("{applicationId}/repayments")
public ResponseDTO<List<RepaymentDTO.ListResponse>> getPayments(@PathVariable Long applicationId) {
return ok(repaymentService.get(applicationId));
}
2. RepaymentDTO 클래스에 ListResponse 추가
상환 내역 조회 시 클라이언트에게 전달할 데이터 형식을 정의하기 위해 RepaymentDTO 클래스에 ListResponse라는 새로운 내부 클래스를 추가하였다. 이 클래스는 상환 ID, 상환 금액, 생성일, 수정일 정보를 포함하고 있다.
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Getter
@Setter
public static class ListResponse {
private Long repaymentId;
private BigDecimal repaymentAmount;
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
}
3. RepaymentRepository 메서드 추가
상환 내역을 DB에서 조회할 수 있도록 RepaymentRepository에 findAllByApplicationId 메서드를 추가하였다. 이 메서드는 특정 applicationId와 연관된 모든 상환 데이터를 반환하는 역할을 한다.
List<Repayment> findAllByApplicationId(Long applcationId);
4. RepaymentService 메서드 추가
비즈니스 로직을 처리하는 RepaymentService에 상환 내역 조회를 위한 get 메서드를 추가하였다. 이 메서드는 applicationId에 따라 상환 내역을 조회하여 반환한다.
List<ListResponse> get(Long applicationId);
5. RepaymentServiceImpl 구현체 추가
RepaymentServiceImpl 클래스에서 get 메서드를 구현하였다. 이 메서드는 상환 내역을 조회한 후, 이를 ListResponse 형식으로 변환하여 클라이언트에게 전달한다. 이를 위해 조회된 상환 리스트를 스트림으로 처리하고, modelMapper를 이용해 DTO로 변환하는 과정을 거친다.
@Override
public List<ListResponse> get(Long applicationId) {
List<Repayment> repayments = repaymentRepository.findAllByApplicationId(applicationId);
return repayments.stream().map(r -> modelMapper.map(r, ListResponse.class)).collect(Collectors.toList());
}
6. 실행 테스트
상환 조회 기능을 Postman을 통해 테스트한다.
1) 1회 차 상환 기록 조회
첫 번째 상환을 완료한 후 상환 내역을 조회했을 때, 상환 기록이 정상적으로 반환되었다. 반환된 데이터는 repaymentId, repaymentAmount, createdAt, updatedAt 등의 필드를 포함한다. 이를 통해 첫 번째 상환이 성공적으로 기록되었음을 확인할 수 있다.
2) 추가 상환 후 상환 내역 조회
고객이 한 번 더 상환한 후 상환 내역을 다시 조회하였을 때, 2회 차 상환 기록이 정상적으로 반영되었다. 이전 상환 기록과 함께 두 번째 상환 정보도 반환되며, 여러 번의 상환 기록이 잘 저장되고 있음을 확인할 수 있었다.
테스트를 통해 대출 상환 내역 조회 기능이 정상적으로 동작하고 있으며, 여러 차례의 상환 기록을 올바르게 조회할 수 있음을 확인하였다.
'BackEnd > Project' 카테고리의 다른 글
[Loan] Ch06. 대출 상환 삭제 기능 구현 (1) | 2024.09.14 |
---|---|
[Loan] Ch06. 대출 상환 수정 기능 구현 (2) | 2024.09.14 |
[Loan] Ch06. 대출 상환 등록 기능 구현 (1) | 2024.09.14 |
[Loan] Ch06. 대출 상환 테이블 정의 (0) | 2024.09.14 |
[Loan] Ch05. 대출 집행 삭제 기능 구현 (2) | 2024.09.13 |