본문 바로가기
BackEnd/Project

[Loan] Ch05. 대출 집행 조회 기능 구현

by 개발 Blog 2024. 9. 13.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

 

이번 시간에는 대출 집행 내역을 조회하는 기능을 구현해 본다. 대출 집행이 완료된 이후, 신청자는 자신의 대출 집행 내역을 확인할 수 있어야 한다. 이를 위해 조회 API를 추가하여 특정 대출 신청에 대한 집행 내역을 확인하는 기능을 구현한다.

1. InternalController에 메서드 추가

대출 집행 내역을 조회하기 위한 API를 InternalController에 추가한다. GET /internal/applications/{applicationId}/entries 경로로 대출 신청 ID를 받아 해당 대출의 집행 내역을 반환한다.

@GetMapping("{applicationId}/entries")
public ResponseDTO<Response> get(@PathVariable Long applicationId) {
    return ok(entryService.get(applicationId));
}
  • @GetMapping("{applicationId}/entries"): 대출 신청 ID에 해당하는 대출 집행 내역을 조회한다.
  • entryService.get(applicationId): 서비스 계층에서 실제 대출 집행 내역을 조회하는 메서드를 호출한다.

2. EntryRepository에 메서드 추가

대출 집행 내역을 데이터베이스에서 조회하기 위해 EntryRepository에 새로운 메서드를 추가한다. applicationId를 기준으로 해당 대출의 집행 내역을 조회한다.

Optional<Entry> findByApplicationId(Long applicationId);
  • findByApplicationId: 대출 신청 ID로 해당 대출의 집행 내역을 조회하는 메서드이다.

3. EntryService 인터페이스에 메서드 추가

서비스 계층의 인터페이스에 대출 집행 내역을 조회하는 메서드를 정의한다.

Response get(Long applicationId);
  • get: 대출 신청 ID에 해당하는 대출 집행 내역을 조회하여 반환하는 메서드이다.

4. EntryServiceImpl에 메서드 추가

EntryServiceImpl에서 실제로 대출 집행 내역을 조회하는 로직을 구현한다. 데이터베이스에서 조회된 데이터를 Response 객체로 변환하여 반환한다.

@Override
public Response get(Long applicationId) {
    Optional<Entry> entry = entryRepository.findByApplicationId(applicationId);

    if(entry.isPresent()){
        return modelMapper.map(entry, Response.class);
    } else {
        return null;
    }
}
  • Entry 조회: applicationId를 기준으로 EntryRepository를 통해 해당 대출의 집행 내역을 조회한다.
  • Response로 변환: 조회된 Entry 객체가 존재할 경우, 이를 Response 객체로 변환하여 반환한다. 만약 존재하지 않을 경우, null을 반환한다.

5. 실행 테스트

구현한 대출 집행 조회 기능을 테스트하기 위해 Postman을 사용하여 GET 요청을 보냈다.

요청 URL은 GET /internal/applications/1/entries로, 대출 신청 ID 1에 해당하는 집행 내역을 조회하였다.

  • 요청 후, 정상적으로 대출 집행 내역이 반환되었으며, 다음과 같은 JSON 응답을 확인할 수 있었다.

테스트를 통해 대출 집행 조회 기능이 정상적으로 동작하는 것을 확인했다. 대출 신청자와 관리자는 이 API를 통해 특정 대출 신청에 대한 집행 내역을 조회할 수 있으며, 모든 데이터는 정확히 반환되었다.