예약 관리 | 예약 가능 시간 조회 API 구현

Faithful Dev·2025년 3월 15일

매장 예약 서비스

목록 보기
7/15

구현한 기능

  • 예약 관련 엔티티 및 인프라 구축 (Reservation, ReservationStatus)
  • 날짜별, 매장별 예약 가능 시간 조회 기능
  • 예약 생성 기능
  • 인증된 사용자 정보 활용을 위한 유틸리티 메서드

코드 스냅샷

예약 가능 시간 조회 컨트롤러

@RestController
@RequestMapping("/api/reservations")
@RequiredArgsConstructor
public class ReservationController {
    private final ReservationService reservationService;
    
    @PostMapping("/available-times")
    public ResponseEntity<ApiResponse<ReservationDto.AvailableTimesResponse>> getAvailableTimes(
            @Valid @RequestBody ReservationDto.AvailableTimesRequest request
    ) {
        ReservationDto.AvailableTimesResponse response = 
            reservationService.getAvailableTimes(request);
        
        return ResponseEntity.ok(ApiResponse.success(
            "예약 가능 시간 목록을 성공적으로 조회했습니다.", response));
    }
}

예약 엔티티

@Entity
@Table(name = "reservations")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Reservation {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id", nullable = false)
    private User user;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "store_id", nullable = false)
    private Store store;

    @Column(nullable = false)
    private LocalDate reservationDate;

    @Column(nullable = false)
    private LocalTime reservationTime;

    @Column(nullable = false)
    private Integer partySize;

    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private ReservationStatus status;
    
    // ... 기타 필드
}

예약 가능 시간 조회 응답 DTO

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class AvailableTimesResponse {
    private Long storeId;
    private String storeName;
    private LocalDate date;
    private List<LocalTime> availableTimes;
}

Postman 테스트



구현 예정

  • 예약 목록 조회 API (사용자용/파트너용)
  • 예약 상세 조회 API
  • 예약 취소 API
profile
Turning Vision into Reality.

0개의 댓글