How mprvn/room-reservation-service works
This Spring Boot service accepts room reservations, validates dates and payment mode, calculates a rate-based total, verifies credit-card payments when selected, and persists the reservation. Cash reservations are confirmed immediately; bank-transfer reservations remain pending until payment events arrive, with overdue unpaid reservations cancelled by a scheduled job. The README documents the reservation API and its Kafka and payment-service dependencies. The graph reflects sampled service calls and indexed references; unsampled configuration and persistence wiring are shown only where supported.
Main entry points: ReservationService.java Reservation workflow · ReservationRepository.java Reservation repository · CancellationService.java Unpaid cancellation · BankTransferPaymentService.java Bank-transfer processing
Components 16
Reservation lifecycle
- Reservation API
src/main/java/com/marvel/hospitality/reservation/controller/ReservationController.java - Reservation workflow
src/main/java/com/marvel/hospitality/reservation/service/ReservationService.java - Reservation state
src/main/java/com/marvel/hospitality/reservation/model/Reservation.java - Unpaid cancellation
src/main/java/com/marvel/hospitality/reservation/service/CancellationService.java - Cancellation schedule
src/main/java/com/marvel/hospitality/reservation/job/UnpaidReservationCancellationJob.java
Payment processing
- Card payment client
src/main/java/com/marvel/hospitality/payment/creditcard/service/CreditCardPaymentClient.java - Bank-transfer listener
src/main/java/com/marvel/hospitality/payment/banktransfer/listener/BankTransferKafkaListener.java - Bank-transfer processing
src/main/java/com/marvel/hospitality/payment/banktransfer/service/BankTransferPaymentService.java
Persistence
- Reservation repository
src/main/java/com/marvel/hospitality/reservation/repository/ReservationRepository.java - Application database
- Bank payment repository
src/main/java/com/marvel/hospitality/payment/banktransfer/repository/BankTransferPaymentRepository.java
Application support
- Application properties
src/main/java/com/marvel/hospitality/common/AppProperties.java - Exception handler
src/main/java/com/marvel/hospitality/common/GlobalExceptionHandler.java
Other components
- Reservation client
- Credit-card service
- Payment event broker
Connections 16
- Reservation client → Reservation API: submits reservation
README.md - Reservation API → Reservation workflow: delegates to
src/main/java/com/marvel/hospitality/reservation/controller/ReservationController.java - Reservation workflow → Reservation state: creates and updates
src/main/java/com/marvel/hospitality/reservation/service/ReservationService.java - Reservation workflow → Reservation repository: saves and retrieves
src/main/java/com/marvel/hospitality/reservation/service/ReservationService.java - Reservation workflow → Card payment client: checks payment
src/main/java/com/marvel/hospitality/reservation/service/ReservationService.java - Card payment client → Credit-card service: requests status
src/main/java/com/marvel/hospitality/payment/creditcard/service/CreditCardPaymentClient.java - Payment event broker → Bank-transfer listener: delivers events
README.md - Bank-transfer listener → Bank-transfer processing: dispatches event
src/main/java/com/marvel/hospitality/payment/banktransfer/listener/BankTransferKafkaListener.java - Bank-transfer processing → Reservation repository: loads and saves
src/main/java/com/marvel/hospitality/payment/banktransfer/service/BankTransferPaymentService.java - Bank-transfer processing → Bank payment repository: records payment
src/main/java/com/marvel/hospitality/payment/banktransfer/service/BankTransferPaymentService.java - Cancellation schedule → Unpaid cancellation: triggers job
src/main/java/com/marvel/hospitality/reservation/job/UnpaidReservationCancellationJob.java - Unpaid cancellation → Reservation repository: queries and saves
src/main/java/com/marvel/hospitality/reservation/service/CancellationService.java - Reservation repository → Application database: persists reservations
- Bank payment repository → Application database: persists payments
- Reservation workflow → Application properties: reads rates and deadline
src/main/java/com/marvel/hospitality/reservation/service/ReservationService.java - Unpaid cancellation → Application properties: reads deadline
src/main/java/com/marvel/hospitality/reservation/service/CancellationService.java