Add DTO classes ...

This commit is contained in:
Ali CANLI
2022-07-09 22:10:39 +03:00
parent a7b74074a7
commit 7c7089780a
22 changed files with 278 additions and 0 deletions

View File

@@ -21,6 +21,21 @@
<artifactId>order-core-domain</artifactId>
</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>
</project>

View File

@@ -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) {
}

View File

@@ -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) {
}

View File

@@ -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) {
}

View File

@@ -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) {}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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) {
}

View File

@@ -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) {
}

View File

@@ -0,0 +1,8 @@
package com.food.order.domain.mapper;
import org.springframework.stereotype.Component;
@Component
public class OrderDataMapper {
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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> {
}

View File

@@ -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> {
}

View File

@@ -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> {
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}