From 9ee1680631c17562ef63bae060ecdb8bae802bcb Mon Sep 17 00:00:00 2001 From: Nour Eldien Ayman Date: Sun, 18 May 2025 23:55:12 +0300 Subject: [PATCH 1/4] Change Order relationship from ManyToOne to OneToOne in Address model --- src/main/java/com/podzilla/order/model/Address.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/podzilla/order/model/Address.java b/src/main/java/com/podzilla/order/model/Address.java index acf13c3..6c47cd7 100644 --- a/src/main/java/com/podzilla/order/model/Address.java +++ b/src/main/java/com/podzilla/order/model/Address.java @@ -1,13 +1,7 @@ package com.podzilla.order.model; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; -import jakarta.persistence.JoinColumn; -import jakarta.persistence.ManyToOne; -import jakarta.persistence.Table; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -31,7 +25,7 @@ public class Address { private String country; private String postalCode; - @ManyToOne + @OneToOne @JoinColumn(name = "order_id", nullable = false) private Order order; } From b96a3027cd8c58b68162d642737444cdde87db73 Mon Sep 17 00:00:00 2001 From: MohammmedAhmed8 <94786411+MohammmedAhmed8@users.noreply.github.com> Date: Mon, 19 May 2025 01:00:13 +0300 Subject: [PATCH 2/4] solved issues --- .../order/controller/OrderController.java | 40 ++++++++++++++++++- .../order/messaging/OrderProducer.java | 2 + .../podzilla/order/service/OrderService.java | 2 + src/main/resources/application.properties | 7 ++++ 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/podzilla/order/controller/OrderController.java b/src/main/java/com/podzilla/order/controller/OrderController.java index c0378a4..acf7576 100644 --- a/src/main/java/com/podzilla/order/controller/OrderController.java +++ b/src/main/java/com/podzilla/order/controller/OrderController.java @@ -1,5 +1,11 @@ package com.podzilla.order.controller; +import com.podzilla.mq.EventPublisher; +import com.podzilla.mq.EventsConstants; +import com.podzilla.mq.events.CartCheckedoutEvent; +import com.podzilla.mq.events.ConfirmationType; +import com.podzilla.mq.events.DeliveryAddress; +import com.podzilla.mq.events.OrderItem; import com.podzilla.order.model.Order; import com.podzilla.order.model.OrderLocation; import com.podzilla.order.model.OrderStatus; @@ -22,6 +28,8 @@ import org.slf4j.LoggerFactory; +import java.math.BigDecimal; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -32,12 +40,14 @@ public class OrderController { private final OrderService orderService; + private final EventPublisher eventPublisher; private static final Logger LOGGER = LoggerFactory.getLogger(OrderController.class); @Autowired - public OrderController(final OrderService orderService) { + public OrderController(final OrderService orderService, final EventPublisher eventPublisher) { this.orderService = orderService; + this.eventPublisher = eventPublisher; } @@ -79,6 +89,33 @@ public ResponseEntity getOrderById(@PathVariable final UUID id) { } + @GetMapping("/testEventPublisher") + public ResponseEntity testEventPublisher() { + LOGGER.info("Testing Event Publisher"); + List orderItems = new ArrayList<>(); + orderItems.add(new OrderItem(UUID.randomUUID().toString(), 5, new BigDecimal(100.0))); + DeliveryAddress deliveryAddress = new DeliveryAddress( + "123 Main St", + "Springfield", + "IL", + "USA", + "62701" + ); + CartCheckedoutEvent event = new CartCheckedoutEvent( + UUID.randomUUID().toString(), + UUID.randomUUID().toString(), + orderItems, + new BigDecimal(500.0), + deliveryAddress, + 10.0, + 20.0, + "signature", + ConfirmationType.SIGNATURE + ); + eventPublisher.publishEvent(EventsConstants.CART_CHECKEDOUT, event); + return ResponseEntity.ok("Event published successfully"); + } + @PatchMapping("/{id}") @Operation(summary = "Update an order", @@ -124,7 +161,6 @@ public ResponseEntity> getOrderByUserId( } - @PutMapping("/cancel/{id}") @Operation( summary = "Cancel order", diff --git a/src/main/java/com/podzilla/order/messaging/OrderProducer.java b/src/main/java/com/podzilla/order/messaging/OrderProducer.java index a34781d..8b9496d 100644 --- a/src/main/java/com/podzilla/order/messaging/OrderProducer.java +++ b/src/main/java/com/podzilla/order/messaging/OrderProducer.java @@ -40,4 +40,6 @@ public void sendCancelOrder( orderCancelledEvent ); } + + } diff --git a/src/main/java/com/podzilla/order/service/OrderService.java b/src/main/java/com/podzilla/order/service/OrderService.java index 76eb036..57c3c50 100644 --- a/src/main/java/com/podzilla/order/service/OrderService.java +++ b/src/main/java/com/podzilla/order/service/OrderService.java @@ -53,6 +53,8 @@ public Order createOrder(final Order order) { log.info("Creating new order: {}", order); order.setCreatedAt(LocalDateTime.now()); order.setUpdatedAt(LocalDateTime.now()); + order.getShippingAddress().setOrder(order); + order.getOrderProducts().forEach(product -> product.setOrder(order)); orderRepository.save(order); OrderStatusStrategy strategy = strategyFactory.getStrategy(OrderStatus.PENDING); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index cde2649..5bc9d37 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -4,3 +4,10 @@ spring.rabbitmq.host=rabbitmq spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest + +spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect +spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.generate-ddl=true +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.use_sql_comments=true From 4a8991b34ad4ed48f4421440d147d96535c5198c Mon Sep 17 00:00:00 2001 From: Nour Eldien Ayman Date: Mon, 19 May 2025 02:14:39 +0300 Subject: [PATCH 3/4] Fix product ID assignment in CreatedOrderStrategy --- .../order/service/statusstrategy/CreatedOrderStrategy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java b/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java index ee1e823..6099059 100644 --- a/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java +++ b/src/main/java/com/podzilla/order/service/statusstrategy/CreatedOrderStrategy.java @@ -39,7 +39,7 @@ private List getOrderItems(final Order order) { List orderProducts = order.getOrderProducts(); for (OrderProduct product : orderProducts) { OrderItem orderItem = new OrderItem(); - orderItem.setProductId(product.getId().toString()); + orderItem.setProductId(product.getProductId().toString()); orderItem.setQuantity(product.getQuantity()); orderItem.setPricePerUnit(product.getPricePerUnit()); orderItems.add(orderItem); From b1dff37cfacccb523b1d11c17ab8ad9b4f500f34 Mon Sep 17 00:00:00 2001 From: Nour Eldien Ayman Date: Mon, 19 May 2025 17:51:08 +0300 Subject: [PATCH 4/4] Update podzilla-utils-lib version to v1.1.13 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1040229..e6ccb8c 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ com.github.Podzilla podzilla-utils-lib - v1.1.12 + v1.1.13