Java
Przeczytaj kod i podkreśl błędy /** * Klient z zakupionym biletem może za dodatkową opłatą wybrać konkretne miejsce. * Cena bazowa miejsc jest określana przez taryfy (zewnętrzny serwis). * Dla klientów z określonymi taryfami (PREMIUM, ULTRA) konieczne jest zastosowanie zniżki przy płatności. * Przy rezerwacji klientowi wystawiana jest faktura do zapłaty. Zarządzanie płatnościami odbywa się w zewnętrznym serwisie. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Rezerwacja. * @param seatCode kod miejsca (np. 19A) * @param ticketId ID biletu */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //rezerwujemy var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //szukamy podstawowej taryfy dla wybranego miejsca w samolocie var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //szukamy danych klienta Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Znaleziono użytkownika " + userData.getFio() + " numer dokumentu " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //50% zniżki price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //20% zniżki price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //wystawiamy fakturę paymentClient.sendInvoice(invoice); System.out.println("Faktura wystawiona"); } @Data @Table("seat_booking") public class SeatBooking { @Column private String seatCode; @Column private UUID flightId; @Column private UUID ticketId; @Column private BookingStatus status; } public enum BookingStatus { BOOKED, PAID; }
Do czego służą funkcjonalne interfejsy ToDoubleFunction<T>, ToIntFunction<T> i ToLongFunction<T> w Java?
Jaka jest główna różnica między interfejsami Comparable i Comparator w Java podczas sortowania obiektów?
Jakie źródła wykorzystujesz do poszukiwania materiałów edukacyjnych i aktualizacji w dziedzinie technologii?
Czym są tworzone zapytania do bazy danych?
Na czym polega różnica między testami jednostkowymi a testami integracyjnymi?
Jakimi wartościami są domyślnie inicjalizowane zmienne w Java?
Jaka jest kolejność wywołań konstruktorów i bloków inicjalizacyjnych z uwzględnieniem hierarchii klas?
Czy możesz wyjaśnić, jak przeprowadzany jest atak typu SQL Injection i jak wykorzystuje luki w bazie danych?
Na czym polega różnica między bazami danych SQL a NoSQL?
Gdzie jest używany anotacja @Bean?
Gdzie najlepiej stosować dziedziczenie i asocjację w programowaniu?
Czym jest idempotentność metody?
Jaka jest różnica między metodami żądań HTTP?
Czym jest interfejs AutoCloseable i jak działa konstrukcja try-with-resources w Java?
Czym jest wyjątek w Java?
Jaką strukturę danych najlepiej używać do szybkiego wydobywania maksymalnego elementu przy rzadkich wstawieniach?
Czy miałeś przypadki tworzenia lub wdrażania komponentu lub mechanizmu podobnego do Starter?
Jakie restauracje lub kawiarnie polecasz odwiedzić?
Co się dzieje wewnątrz ArrayList podczas wstawiania elementu w jego środkową część?