Java
Cuéntame, ¿de qué manera te involucraste en los detalles de este proyecto?
¿Qué datos de origen se utilizan para determinar el valor de hashCode en un objeto?
¿Cuál es el papel del sistema de control de versiones en el proceso de desarrollo de software?
¿Cómo se puede implementar el almacenamiento y la visualización de la estructura de un árbol genealógico en una base de datos relacional?
¿Puede explicar la diferencia entre el concepto de polimorfismo y abstracción en la programación orientada a objetos?
Lea el código y destaque los errores /** * Un cliente con un billete comprado puede, por un costo adicional, elegir un asiento específico. * El precio base de los asientos se determina mediante tarifas (servicio externo). * Para clientes con tarifas específicas (PREMIUM, ULTRA), se debe aplicar un descuento en el pago. * Al reservar, se emite una factura para el pago. La gestión del pago se realiza en un servicio externo. */ @Service public class SeatBookingService { @Autowired private SeatBookingRepository seatBookingRepository; @Autowired private TicketRepository ticketRepository; @Autowired private TariffClient tariffClient; @Autowired private CustomerClient customerClient; @Autowired private PaymentClient paymentClient; /** * Reserva. * @param seatCode código del asiento (por ejemplo, 19A) * @param ticketId ID del billete */ @Transactional public void bookSeat(String seatCode, UUID ticketId) { var ticket = ticketRepository.findById(ticketId); //reservamos var seatBooking = new SeatBooking(seatCode, ticket.get().getFlightId(), ticketId, BookingStatus.BOOKED); seatBookingRepository.save(seatBooking); //buscamos la tarifa base para el asiento en el avión var basePrice = tariffClient.getBasePrice(ticket.get().getPlaneModel(), seatCode); //buscamos datos del cliente Long userId = (Long) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); var userData = customerClient.getCustomer(userId); System.out.println("Usuario encontrado " + userData.getFio() + " número de documento " + userData.getDocument()); var price = basePrice; if (userData.getTariff() == "PREMIUM") { //descuento del 50% price = basePrice * 0.5d; } if (userData.getTariff() == "ULTRA") { //descuento del 20% price = basePrice * 0.8d; } var invoice = new Invoice(price, ticketId, userId); //emitimos la factura paymentClient.sendInvoice(invoice); System.out.println("Factura emitida"); } @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; }
¿Puedes hablar sobre los diferentes tipos de propagación que se pueden establecer en la anotación @Transactional?
¿Qué fuentes utilizas para buscar materiales de estudio y actualizaciones en el campo de la tecnología?
¿Es posible establecer conexiones entre diferentes colecciones en la base de datos MongoDB?
¿Cómo comenzaste a aprender a trabajar con Java y tus primeros proyectos en este lenguaje?
¿Con qué se forman las consultas a la base de datos?
¿En qué se basa el framework Spring?
¿En qué consiste la diferencia entre bases de datos SQL y NoSQL?
¿Dónde se usa la anotación @Bean?
¿Dónde es mejor aplicar la herencia y la asociación en programación?
¿Qué es la idempotencia de un método?
¿Qué enfoque de autenticación y autorización se implementa en Spring Security en su proyecto?
¿Cuál es la diferencia entre los métodos de solicitudes HTTP?
¿Qué es la interfaz AutoCloseable y cómo funciona la construcción try-with-resources en Java?
¿Por qué las bases de datos son mejores que los archivos de texto?