diff --git a/order-service/order-data-access/pom.xml b/order-service/order-data-access/pom.xml index eb0839a..f85e3e8 100644 --- a/order-service/order-data-access/pom.xml +++ b/order-service/order-data-access/pom.xml @@ -19,6 +19,16 @@ com.food.order order-application-service + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.postgresql + postgresql + \ No newline at end of file diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/adapter/CustomerRepositoryImpl.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/adapter/CustomerRepositoryImpl.java new file mode 100644 index 0000000..783b089 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/adapter/CustomerRepositoryImpl.java @@ -0,0 +1,27 @@ +package com.food.order.system.data.access.customer.adapter; + +import com.food.order.domain.ports.output.repository.CustomerRepository; +import com.food.order.system.data.access.customer.mapper.CustomerDataAccessMapper; +import com.food.order.system.data.access.customer.repository.CustomerJPARepository; +import com.food.order.system.domain.entity.Customer; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Optional; +import java.util.UUID; + +@Service +@RequiredArgsConstructor +public class CustomerRepositoryImpl implements CustomerRepository { + + + private final CustomerJPARepository customerJpaRepository; + private final CustomerDataAccessMapper customerDataAccessMapper; + + + @Override + public Optional findCustomer(UUID customerId) { + return customerJpaRepository.findById(customerId) + .map(customerDataAccessMapper::customerEntityToCustomer); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/entity/CustomerEntity.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/entity/CustomerEntity.java new file mode 100644 index 0000000..ceb1d15 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/entity/CustomerEntity.java @@ -0,0 +1,23 @@ +package com.food.order.system.data.access.customer.entity; + +import lombok.*; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.UUID; + +@Entity +@DynamicUpdate +@Table(name = "order_customer_m_view",schema = "customer") +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CustomerEntity { + + @Id + private UUID id; +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/mapper/CustomerDataAccessMapper.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/mapper/CustomerDataAccessMapper.java new file mode 100644 index 0000000..24db9f2 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/mapper/CustomerDataAccessMapper.java @@ -0,0 +1,14 @@ +package com.food.order.system.data.access.customer.mapper; + +import com.food.order.domain.valueobject.CustomerId; +import com.food.order.system.data.access.customer.entity.CustomerEntity; +import com.food.order.system.domain.entity.Customer; +import org.springframework.stereotype.Component; + +@Component +public class CustomerDataAccessMapper { + + public Customer customerEntityToCustomer(CustomerEntity customerEntity) { + return new Customer(new CustomerId(customerEntity.getId())); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/repository/CustomerJPARepository.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/repository/CustomerJPARepository.java new file mode 100644 index 0000000..e550d0a --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/customer/repository/CustomerJPARepository.java @@ -0,0 +1,11 @@ +package com.food.order.system.data.access.customer.repository; + +import com.food.order.system.data.access.customer.entity.CustomerEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +public interface CustomerJPARepository extends JpaRepository { +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/adapter/OrderRepositoryImpl.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/adapter/OrderRepositoryImpl.java new file mode 100644 index 0000000..335ca93 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/adapter/OrderRepositoryImpl.java @@ -0,0 +1,34 @@ +package com.food.order.system.data.access.order.adapter; + +import com.food.order.domain.ports.output.repository.OrderRepository; +import com.food.order.system.data.access.order.mapper.OrderDataAccessMapper; +import com.food.order.system.data.access.order.repository.OrderJpaRepository; +import com.food.order.system.domain.entity.Order; +import com.food.order.system.domain.valueobject.TrackingId; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +@Slf4j +public class OrderRepositoryImpl implements OrderRepository { + + private final OrderJpaRepository orderJpaRepository; + private final OrderDataAccessMapper orderDataAccessMapper; + + + @Override + public Order save(Order order) { + return orderDataAccessMapper.orderEntityToOrder(orderJpaRepository + .save(orderDataAccessMapper.orderToOrderEntity(order))); + } + + @Override + public Optional findByTrackingId(TrackingId trackingId) { + return orderJpaRepository.findByTrackingId(trackingId.getValue()) + .map(orderDataAccessMapper::orderEntityToOrder); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderAddressEntity.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderAddressEntity.java new file mode 100644 index 0000000..e591b33 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderAddressEntity.java @@ -0,0 +1,41 @@ +package com.food.order.system.data.access.order.entity; + +import lombok.*; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.util.UUID; + +@Entity +@DynamicUpdate +@Table(name = "order_address") +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderAddressEntity { + + @Id + private UUID id; + + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "ORDER_ID") + private OrderEntity order; + + private String street; + private String city; + private String postalCode; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof OrderAddressEntity that)) return false; + return id.equals(that.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } +} \ No newline at end of file diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderEntity.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderEntity.java new file mode 100644 index 0000000..a5fc66d --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderEntity.java @@ -0,0 +1,55 @@ +package com.food.order.system.data.access.order.entity; + +import com.food.order.domain.valueobject.OrderStatus; +import lombok.*; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.util.List; +import java.util.UUID; + +@Entity +@DynamicUpdate +@Table(name = "orders") +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderEntity { + + @Id + private UUID id; + + private UUID customerId; + + private UUID restaurantId; + + private UUID trackingId; + + @Enumerated(EnumType.STRING) + private OrderStatus orderStatus; + + private BigDecimal price; + + private String failureMessages; + + @OneToOne(mappedBy = "order", cascade = CascadeType.ALL) + private OrderAddressEntity address; + + @OneToMany(mappedBy = "orderEntity", cascade = CascadeType.ALL) + private List items; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof OrderEntity that)) return false; + return id.equals(that.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderItemEntity.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderItemEntity.java new file mode 100644 index 0000000..750649a --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderItemEntity.java @@ -0,0 +1,50 @@ +package com.food.order.system.data.access.order.entity; + +import lombok.*; +import org.hibernate.annotations.DynamicUpdate; + +import javax.persistence.*; +import java.math.BigDecimal; +import java.util.UUID; + +@Entity +@DynamicUpdate +@Table(name = "order_items") +@IdClass(OrderItemEntityId.class) +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderItemEntity { + + @Id + private Long id; + @Id + @ManyToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "ORDER_ID") + private OrderEntity orderEntity; + + private UUID productId; + + private Integer quantity; + + private BigDecimal price; + + private BigDecimal subTotal; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof OrderItemEntity that)) return false; + if (!id.equals(that.id)) return false; + return orderEntity.equals(that.orderEntity); + } + + @Override + public int hashCode() { + int result = id.hashCode(); + result = 31 * result + orderEntity.hashCode(); + return result; + } +} \ No newline at end of file diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderItemEntityId.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderItemEntityId.java new file mode 100644 index 0000000..1521f1d --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/entity/OrderItemEntityId.java @@ -0,0 +1,29 @@ +package com.food.order.system.data.access.order.entity; + +import lombok.*; + +import java.io.Serializable; + + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrderItemEntityId implements Serializable { + + private Long id; + private OrderEntity order; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof OrderItemEntityId that)) return false; + return id.equals(that.id); + } + + @Override + public int hashCode() { + return id.hashCode(); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/mapper/OrderDataAccessMapper.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/mapper/OrderDataAccessMapper.java new file mode 100644 index 0000000..d7c82b5 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/mapper/OrderDataAccessMapper.java @@ -0,0 +1,92 @@ +package com.food.order.system.data.access.order.mapper; + +import com.food.order.domain.valueobject.*; +import com.food.order.system.data.access.order.entity.OrderAddressEntity; +import com.food.order.system.data.access.order.entity.OrderEntity; +import com.food.order.system.data.access.order.entity.OrderItemEntity; +import com.food.order.system.domain.entity.Order; +import com.food.order.system.domain.entity.OrderItem; +import com.food.order.system.domain.entity.Product; +import com.food.order.system.domain.valueobject.OrderItemId; +import com.food.order.system.domain.valueobject.StreetAddress; +import com.food.order.system.domain.valueobject.TrackingId; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +import static com.food.order.system.domain.entity.Order.FAILURE_MESSAGE_DELIMITER; + +@Component +public class OrderDataAccessMapper { + + public OrderEntity orderToOrderEntity(Order order){ + OrderEntity orderEntity = new OrderEntity(); + orderEntity.setId(order.getId().getValue()); + orderEntity.setOrderStatus(order.getStatus()); + orderEntity.setCustomerId(order.getCustomerId().getValue()); + orderEntity.setRestaurantId(order.getRestaurantId().getValue()); + orderEntity.setTrackingId(order.getTrackingId().getValue()); + orderEntity.setAddress(deliveryAddressToAddressEntity(order.getDeliveryAddress())); + orderEntity.setPrice(order.getPrice().getAmount()); + orderEntity.setItems(orderItemsToOrderItemsEntity(order.getItems())); + orderEntity.setFailureMessages(order.getFailureMessages() != null ? + String.join(FAILURE_MESSAGE_DELIMITER, order.getFailureMessages()) : ""); + orderEntity.getAddress().setOrder(orderEntity); + orderEntity.getItems().forEach(item -> item.setOrderEntity(orderEntity)); + return orderEntity; + } + + public Order orderEntityToOrder(OrderEntity orderEntity){ + return Order.builder() + .orderId(new OrderId(orderEntity.getId())) + .customerId(new CustomerId(orderEntity.getCustomerId())) + .restaurantId(new RestaurantId(orderEntity.getRestaurantId())) + .deliveryAddress(addressEntityToDeliveryAddress(orderEntity.getAddress())) + .price(new Money(orderEntity.getPrice())) + .items(orderItemsEntityToOrderItems(orderEntity.getItems())) + .trackingId(new TrackingId(orderEntity.getTrackingId())) + .status(orderEntity.getOrderStatus()) + .failureMessages(orderEntity.getFailureMessages() != null ? + List.of(orderEntity.getFailureMessages().split(FAILURE_MESSAGE_DELIMITER)) : + new ArrayList<>()) + .build(); + } + + private List orderItemsEntityToOrderItems(List items) { + return items.stream() + .map(item -> OrderItem.builder() + .orderItemId(new OrderItemId(item.getId())) + .product(new Product(new ProductId(item.getProductId()))) + .quantity(item.getQuantity()) + .price(new Money(item.getPrice())) + .subTotal(new Money(item.getSubTotal())) + .build()) + .toList(); + } + + private StreetAddress addressEntityToDeliveryAddress(OrderAddressEntity address) { + return new StreetAddress(address.getId(),address.getStreet(), address.getCity() , address.getPostalCode()); + } + + private List orderItemsToOrderItemsEntity(List items) { + return items.stream() + .map(item -> OrderItemEntity.builder() + .id(item.getId().getValue()) + .productId(item.getProduct().getId().getValue()) + .price(item.getPrice().getAmount()) + .quantity(item.getQuantity()) + .subTotal(item.getSubTotal().getAmount()) + .build()) + .toList(); + } + + private OrderAddressEntity deliveryAddressToAddressEntity(StreetAddress deliveryAddress) { + OrderAddressEntity orderAddressEntity = new OrderAddressEntity(); + orderAddressEntity.setId(deliveryAddress.getId()); + orderAddressEntity.setStreet(deliveryAddress.getStreet()); + orderAddressEntity.setCity(deliveryAddress.getCity()); + orderAddressEntity.setPostalCode(deliveryAddress.getPostalCode()); + return orderAddressEntity; + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/repository/OrderJpaRepository.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/repository/OrderJpaRepository.java new file mode 100644 index 0000000..cc40b86 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/order/repository/OrderJpaRepository.java @@ -0,0 +1,16 @@ +package com.food.order.system.data.access.order.repository; + +import com.food.order.system.data.access.order.entity.OrderEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface OrderJpaRepository extends JpaRepository { + + Optional findByTrackingId(UUID trackingId); + + +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/adapter/RestaurantRepositoryImpl.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/adapter/RestaurantRepositoryImpl.java new file mode 100644 index 0000000..8f5d5ff --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/adapter/RestaurantRepositoryImpl.java @@ -0,0 +1,26 @@ +package com.food.order.system.data.access.restaurant.adapter; + +import com.food.order.domain.ports.output.repository.RestaurantRepository; +import com.food.order.system.data.access.restaurant.mapper.RestaurantDataAccessMapper; +import com.food.order.system.data.access.restaurant.repository.RestaurantJpaRepository; +import com.food.order.system.domain.entity.Restaurant; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class RestaurantRepositoryImpl implements RestaurantRepository { + + private final RestaurantJpaRepository restaurantJpaRepository; + private final RestaurantDataAccessMapper restaurantDataAccessMapper; + + @Override + public Optional findRestaurantInformation(Restaurant restaurant) { + return restaurantJpaRepository.findByRestaurantIdAndProductIdIn + (restaurant.getId().getValue(), + restaurantDataAccessMapper.restaurantToRestaurantProducts(restaurant)) + .map(restaurantDataAccessMapper::restaurantEntityToRestaurant); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/entity/RestaurantEntity.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/entity/RestaurantEntity.java new file mode 100644 index 0000000..b3d73d8 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/entity/RestaurantEntity.java @@ -0,0 +1,51 @@ +package com.food.order.system.data.access.restaurant.entity; + + +import lombok.*; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.Table; +import java.math.BigDecimal; +import java.util.UUID; + +@Entity +@Table(name = "order_restaurant_m_view",schema = "restaurant") +@Getter +@Setter +@Builder +@IdClass(RestaurantEntityId.class) +@NoArgsConstructor +@AllArgsConstructor +public class RestaurantEntity { + + @Id + private UUID restaurantId; + + @Id + private UUID productId; + + private String restaurantName; + + private Boolean restaurantActive; + + private String productName; + + private BigDecimal productPrice; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof RestaurantEntity that)) return false; + if (!restaurantId.equals(that.restaurantId)) return false; + return productId.equals(that.productId); + } + + @Override + public int hashCode() { + int result = restaurantId.hashCode(); + result = 31 * result + productId.hashCode(); + return result; + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/entity/RestaurantEntityId.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/entity/RestaurantEntityId.java new file mode 100644 index 0000000..46cbac3 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/entity/RestaurantEntityId.java @@ -0,0 +1,32 @@ +package com.food.order.system.data.access.restaurant.entity; + +import lombok.*; + +import java.io.Serializable; +import java.util.UUID; + +@Getter +@Setter +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class RestaurantEntityId implements Serializable { + + private UUID restaurantId; + private UUID productId; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof RestaurantEntityId that)) return false; + if (!restaurantId.equals(that.restaurantId)) return false; + return productId.equals(that.productId); + } + + @Override + public int hashCode() { + int result = restaurantId.hashCode(); + result = 31 * result + productId.hashCode(); + return result; + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/exception/RestaurantDataAccessException.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/exception/RestaurantDataAccessException.java new file mode 100644 index 0000000..6220767 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/exception/RestaurantDataAccessException.java @@ -0,0 +1,7 @@ +package com.food.order.system.data.access.restaurant.exception; + +public class RestaurantDataAccessException extends RuntimeException{ + public RestaurantDataAccessException(String s) { + super(s); + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/mapper/RestaurantDataAccessMapper.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/mapper/RestaurantDataAccessMapper.java new file mode 100644 index 0000000..690c4b9 --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/mapper/RestaurantDataAccessMapper.java @@ -0,0 +1,40 @@ +package com.food.order.system.data.access.restaurant.mapper; + +import com.food.order.domain.valueobject.Money; +import com.food.order.domain.valueobject.ProductId; +import com.food.order.domain.valueobject.RestaurantId; +import com.food.order.system.data.access.restaurant.entity.RestaurantEntity; +import com.food.order.system.data.access.restaurant.exception.RestaurantDataAccessException; +import com.food.order.system.domain.entity.Product; +import com.food.order.system.domain.entity.Restaurant; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.UUID; + +@Component +public class RestaurantDataAccessMapper { + + public List restaurantToRestaurantProducts(Restaurant restaurant) { + return restaurant.getProducts() + .stream() + .map(product -> product.getId().getValue()) + .toList(); + } + + public Restaurant restaurantEntityToRestaurant(List restaurantEntities) { + var restaurantEntity = + restaurantEntities.stream().findFirst() + .orElseThrow(() -> new RestaurantDataAccessException("No restaurant found")); + var restaurantProducts = restaurantEntities.stream() + .map(entity -> new Product(new ProductId(entity.getProductId()), + entity.getProductName(), + new Money(entity.getProductPrice()))).toList(); + return Restaurant.builder() + .id(new RestaurantId(restaurantEntity.getRestaurantId())) + .products(restaurantProducts) + .isActive(restaurantEntity.getRestaurantActive()) + .build(); + + } +} diff --git a/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/repository/RestaurantJpaRepository.java b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/repository/RestaurantJpaRepository.java new file mode 100644 index 0000000..def551d --- /dev/null +++ b/order-service/order-data-access/src/main/java/com/food/order/system/data/access/restaurant/repository/RestaurantJpaRepository.java @@ -0,0 +1,14 @@ +package com.food.order.system.data.access.restaurant.repository; + +import com.food.order.system.data.access.restaurant.entity.RestaurantEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface RestaurantJpaRepository extends JpaRepository { + Optional> findByRestaurantIdAndProductIdIn(UUID restaurantId, List productIds); +} diff --git a/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Customer.java b/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Customer.java index 626e8cd..978f5c6 100644 --- a/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Customer.java +++ b/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Customer.java @@ -4,4 +4,11 @@ import com.food.order.domain.entity.AggregateRoot; import com.food.order.domain.valueobject.CustomerId; public class Customer extends AggregateRoot { + + public Customer(){ + + } + public Customer (CustomerId id) { + super.setId(id); + } } diff --git a/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Order.java b/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Order.java index 509eced..f74a770 100644 --- a/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Order.java +++ b/order-service/order-domain/order-core-domain/src/main/java/com/food/order/system/domain/entity/Order.java @@ -13,6 +13,8 @@ import java.util.UUID; public class Order extends AggregateRoot { + public static final String FAILURE_MESSAGE_DELIMITER = ","; + private final CustomerId customerId; private final RestaurantId restaurantId; private final StreetAddress deliveryAddress;