Add DTO classes ...
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
package com.food.order.domain.event.publisher;
|
||||||
|
|
||||||
|
import com.food.order.domain.event.DomainEvent;
|
||||||
|
|
||||||
|
public interface DomainEventPublisher <T extends DomainEvent> {
|
||||||
|
void publish(T event);
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
package com.food.order.domain.valueobject;
|
||||||
|
|
||||||
|
public enum OrderApprovalStatus {
|
||||||
|
APPROVED,
|
||||||
|
REJECTED
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.food.order.domain.valueobject;
|
||||||
|
|
||||||
|
public enum PaymentStatus {
|
||||||
|
COMPLETED,CANCELED,FAILED
|
||||||
|
}
|
||||||
@@ -21,6 +21,21 @@
|
|||||||
<artifactId>order-core-domain</artifactId>
|
<artifactId>order-core-domain</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.food.order</groupId>
|
||||||
|
<artifactId>common-domain</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-validation</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-tx</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.food.order.domain.dto.create;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
public record CreateOrderCommand(@NotNull UUID customerId,
|
||||||
|
@NotNull UUID restaurantId,
|
||||||
|
@NotNull BigDecimal price,
|
||||||
|
@NotNull List<OrderItem> orderItems,
|
||||||
|
@NotNull OrderAddress orderAddress) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.food.order.domain.dto.create;
|
||||||
|
|
||||||
|
import com.food.order.domain.valueobject.OrderStatus;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
public record CreateOrderResponse(@NotNull UUID orderTrackingId,
|
||||||
|
@NotNull OrderStatus orderStatus,
|
||||||
|
@NotNull String message) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package com.food.order.domain.dto.create;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.Max;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public record OrderAddress(@NotNull @Max(value = 50) String street,
|
||||||
|
@NotNull @Max(value = 50) String city,
|
||||||
|
@NotNull @Max(value = 10) String postalCode) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
package com.food.order.domain.dto.create;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Builder
|
||||||
|
public record OrderItem(@NotNull UUID productId,
|
||||||
|
@NotNull Integer quantity,
|
||||||
|
@NotNull BigDecimal price,
|
||||||
|
@NotNull BigDecimal subTotal) {}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.food.order.domain.dto.message;
|
||||||
|
|
||||||
|
import com.food.order.domain.valueobject.PaymentStatus;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class PaymentResponse {
|
||||||
|
|
||||||
|
private String id;
|
||||||
|
private String sagaId;
|
||||||
|
private String orderId;
|
||||||
|
private String paymentId;
|
||||||
|
private String customerId;
|
||||||
|
private BigDecimal price;
|
||||||
|
private PaymentStatus paymentStatus;
|
||||||
|
private List<String> failureMessages;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package com.food.order.domain.dto.message;
|
||||||
|
|
||||||
|
import com.food.order.domain.valueobject.OrderApprovalStatus;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class RestaurantApprovalResponse {
|
||||||
|
private String id;
|
||||||
|
private String sagaId;
|
||||||
|
private String orderId;
|
||||||
|
private String restaurantId;
|
||||||
|
private Instant createdAt;
|
||||||
|
private OrderApprovalStatus orderApprovalStatus;
|
||||||
|
private List<String> failureMessages;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.food.order.domain.dto.track;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
public record TrackOrderQuery(@NotNull UUID orderTrackingId) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package com.food.order.domain.dto.track;
|
||||||
|
|
||||||
|
import com.food.order.domain.valueobject.OrderStatus;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
public record TrackOrderResponse(@NotNull UUID orderTrackingId,
|
||||||
|
@NotNull OrderStatus orderStatus,
|
||||||
|
List<String> failureMessages) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.food.order.domain.mapper;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class OrderDataMapper {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.food.order.domain.ports.input.message.listener.payment;
|
||||||
|
|
||||||
|
import com.food.order.domain.dto.message.PaymentResponse;
|
||||||
|
|
||||||
|
public interface PaymentResponseMessageListener {
|
||||||
|
|
||||||
|
void paymentCompleted(PaymentResponse paymentResponse);
|
||||||
|
void paymentCancelled(PaymentResponse paymentResponse);
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.food.order.domain.ports.input.message.listener.restaurantapproval;
|
||||||
|
|
||||||
|
import com.food.order.domain.dto.message.RestaurantApprovalResponse;
|
||||||
|
|
||||||
|
public interface RestaurantApprovalResponseMessageListener {
|
||||||
|
void orderApproved(RestaurantApprovalResponse restaurantApprovalResponse);
|
||||||
|
void orderRejected(RestaurantApprovalResponse restaurantApprovalResponse);
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.food.order.domain.ports.input.service;
|
||||||
|
|
||||||
|
import com.food.order.domain.dto.create.CreateOrderCommand;
|
||||||
|
import com.food.order.domain.dto.create.CreateOrderResponse;
|
||||||
|
import com.food.order.domain.dto.track.TrackOrderQuery;
|
||||||
|
import com.food.order.domain.dto.track.TrackOrderResponse;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
public interface OrderApplicationService {
|
||||||
|
|
||||||
|
CreateOrderResponse createOrder(@Valid CreateOrderCommand createOrderCommand);
|
||||||
|
TrackOrderResponse trackOrder(@Valid TrackOrderQuery trackOrderQuery);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.food.order.domain.ports.output.message.publisher.payment;
|
||||||
|
|
||||||
|
import com.food.order.domain.event.publisher.DomainEventPublisher;
|
||||||
|
import com.food.order.system.domain.event.OrderCancelledEvent;
|
||||||
|
|
||||||
|
public interface OrderCancelledPaymentRequestMessagePublisher extends DomainEventPublisher<OrderCancelledEvent> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.food.order.domain.ports.output.message.publisher.payment;
|
||||||
|
|
||||||
|
import com.food.order.domain.event.publisher.DomainEventPublisher;
|
||||||
|
import com.food.order.system.domain.event.OrderCreatedEvent;
|
||||||
|
|
||||||
|
public interface OrderCreatedPaymentRequestMessagePublisher extends DomainEventPublisher<OrderCreatedEvent> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.food.order.domain.ports.output.message.publisher.restaurantapproval;
|
||||||
|
|
||||||
|
import com.food.order.domain.event.publisher.DomainEventPublisher;
|
||||||
|
import com.food.order.system.domain.event.OrderPaidEvent;
|
||||||
|
|
||||||
|
public interface OrderPaidRestaurantRequestMessagePublisher extends DomainEventPublisher<OrderPaidEvent> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
package com.food.order.domain.ports.output.repository;
|
||||||
|
|
||||||
|
import com.food.order.system.domain.entity.Customer;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public interface CustomerRepository {
|
||||||
|
Optional<Customer> findCustomer(UUID customerId);
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package com.food.order.domain.ports.output.repository;
|
||||||
|
|
||||||
|
import com.food.order.system.domain.entity.Order;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface OrderRepository {
|
||||||
|
|
||||||
|
Order save(Order order);
|
||||||
|
|
||||||
|
Optional<Order> findByTrackingId(String trackingId);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package com.food.order.domain.ports.output.repository;
|
||||||
|
|
||||||
|
import com.food.order.system.domain.entity.Restaurant;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public interface RestaurantRepository {
|
||||||
|
Optional<Restaurant> findRestaurantInformation(Restaurant restaurant);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user