예약 관리 | 예약 목록 조회 API 구현

Faithful Dev·2025년 3월 15일

매장 예약 서비스

목록 보기
8/15

구현한 기능

  • 사용자별 예약 목록 조회 API 구현
  • 파트너별 매장 예약 목록 조회 API 구현
  • 예약 상태, 매장 ID, 날짜별 필터링 기능
  • 다양한 정렬 조건 지원 (최신순, 시간순, 매장별)

코드 스냅샷

사용자 예약 목록 조회 API 컨트롤러

@GetMapping("/user")
public ResponseEntity<ApiResponse<List<ReservationDto.ReservationInfoResponse>>> getUserReservations(
        @RequestParam(required = false) List<String> status
) {
    Long userId = authenticationUtil.getCurrentUserId();
    List<ReservationDto.ReservationInfoResponse> reservations = 
            reservationService.getUserReservations(userId, status);
    
    return ResponseEntity.ok(ApiResponse.success("예약 목록을 성공적으로 조회했습니다.", reservations));
}

파트너 예약 목록 조회 API 컨트롤러

@GetMapping("/partner/{partnerId}")
@PreAuthorize("hasRole('ROLE_PARTNER')")
public ResponseEntity<ApiResponse<List<ReservationDto.ReservationInfoResponse>>> getPartnerReservations(
        @PathVariable Long partnerId,
        @RequestParam(required = false) Long storeId,
        @RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date,
        @RequestParam(required = false) List<String> status
) {
    authenticationUtil.validatePartnerOwnership(partnerId);
    
    List<ReservationDto.ReservationInfoResponse> reservations = 
            reservationService.getPartnerReservations(partnerId, storeId, date, status);
    
    return ResponseEntity.ok(ApiResponse.success("매장 예약 목록을 성공적으로 조회했습니다.", reservations));
}

문자열 상태 목록 변환 헬퍼 메소드

private List<ReservationStatus> getReservationStatuses(List<String> statusList) {
    if (statusList == null || statusList.isEmpty()) {
        return new ArrayList<>();
    }
    
    return statusList.stream()
            .map(status -> {
                try {
                    return ReservationStatus.valueOf(status.toUpperCase());
                } catch (IllegalArgumentException e) {
                    throw new CustomException(ErrorCode.INVALID_REQUEST, 
                                            "유효하지 않은 예약 상태: " + status);
                }
            })
            .collect(Collectors.toList());
}

Postman 테스트



구현 예정

  • 예약 상세 조회 API
  • 예약 취소 API
profile
Turning Vision into Reality.

0개의 댓글