From fb1e881d7e3842ab495bad0ea8021df0bbe8ecfa Mon Sep 17 00:00:00 2001 From: Alawn Date: Tue, 16 May 2023 15:15:00 +0800 Subject: [PATCH] Hello World --- .../payment/controller/OrderController.java | 16 +++++++++++--- .../ecp/payment/domain/ConsumeOrder.java | 22 ++++++++++++++----- .../com/murong/ecp/payment/domain/Order.java | 1 - .../murong/ecp/payment/enums/OrderStatus.java | 5 +++-- .../DuplicatePaymentMethodException.java | 7 ------ .../DuplicatedPaymentMethodException.java | 14 ++++++++++++ .../ecp/payment/processor/ProcessorChain.java | 2 +- .../OrderDefaultProcessor.java | 8 +++---- .../{order => flow}/OrderRiskProcessor.java | 10 ++++++--- .../payment/BankCardPaymentPartProcessor.java | 4 ++-- .../payment/PaymentPartDefaultProcessor.java | 8 +++---- .../payment/WalletPaymentPartProcessor.java | 4 ++-- 12 files changed, 65 insertions(+), 36 deletions(-) delete mode 100644 src/main/java/com/murong/ecp/payment/exception/DuplicatePaymentMethodException.java create mode 100644 src/main/java/com/murong/ecp/payment/exception/DuplicatedPaymentMethodException.java rename src/main/java/com/murong/ecp/payment/processor/{order => flow}/OrderDefaultProcessor.java (82%) rename src/main/java/com/murong/ecp/payment/processor/{order => flow}/OrderRiskProcessor.java (64%) diff --git a/src/main/java/com/murong/ecp/payment/controller/OrderController.java b/src/main/java/com/murong/ecp/payment/controller/OrderController.java index 2282621..920dffa 100644 --- a/src/main/java/com/murong/ecp/payment/controller/OrderController.java +++ b/src/main/java/com/murong/ecp/payment/controller/OrderController.java @@ -5,7 +5,8 @@ import com.murong.ecp.payment.api.Payment; import com.murong.ecp.payment.api.PlaceOrderRequest; import com.murong.ecp.payment.domain.ConsumeOrder; import com.murong.ecp.payment.domain.PaymentPart; -import com.murong.ecp.payment.processor.order.OrderRiskProcessor; +import com.murong.ecp.payment.processor.flow.OrderNotificationProcessor; +import com.murong.ecp.payment.processor.flow.OrderRiskProcessor; import com.murong.ecp.payment.processor.payment.BankCardPaymentPartProcessor; import com.murong.ecp.payment.processor.payment.WalletPaymentPartProcessor; import com.murong.ecp.payment.service.ConsumeOrderRepository; @@ -28,6 +29,10 @@ public class OrderController { @Autowired OrderRiskProcessor orderRiskProcessor; + @Autowired + OrderNotificationProcessor orderNotificationProcessor; + + @Autowired ConsumeOrderRepository consumeOrderRepository; @@ -81,10 +86,15 @@ public class OrderController { .build()); } - /** configure chain */ + /** + * configure chain + * + * Order Risk -> Wallet Payment -> BankCard Payment -> Order Notification + */ orderRiskProcessor.setNext(walletPaymentPartProcessor); walletPaymentPartProcessor.setNext(bankCardPaymentPartProcessor); - bankCardPaymentPartProcessor.setNext(null); + bankCardPaymentPartProcessor.setNext(orderNotificationProcessor); + orderNotificationProcessor.setNext(null); /** start chain */ orderRiskProcessor.entry(order); diff --git a/src/main/java/com/murong/ecp/payment/domain/ConsumeOrder.java b/src/main/java/com/murong/ecp/payment/domain/ConsumeOrder.java index 86de5d2..3c0acd6 100644 --- a/src/main/java/com/murong/ecp/payment/domain/ConsumeOrder.java +++ b/src/main/java/com/murong/ecp/payment/domain/ConsumeOrder.java @@ -1,11 +1,10 @@ package com.murong.ecp.payment.domain; -import com.murong.ecp.payment.api.PayOrderRequest; import com.murong.ecp.payment.api.PlaceOrderRequest; import com.murong.ecp.payment.enums.OrderStatus; import com.murong.ecp.payment.enums.PaymentMethod; import com.murong.ecp.payment.enums.RiskStatus; -import com.murong.ecp.payment.exception.DuplicatePaymentMethodException; +import com.murong.ecp.payment.exception.DuplicatedPaymentMethodException; import lombok.ToString; import java.util.ArrayList; @@ -19,9 +18,12 @@ import java.util.UUID; @ToString(callSuper = true) public class ConsumeOrder extends Order { private List breakdown = new ArrayList<>();; - private List orderFees = new ArrayList<>(); - private List orderTaxes = new ArrayList<>(); - private RiskStatus riskStatus = RiskStatus.UNTREATED; + private List orderFees = new ArrayList<>(); + private List orderTaxes = new ArrayList<>(); + private RiskStatus riskStatus = RiskStatus.UNTREATED; + private boolean notified = false; + private OrderStatus orderStatus = OrderStatus.UNTREATED; + public boolean containsPaymentMethod(PaymentMethod paymentMethod){ return breakdown.stream().anyMatch(part -> part.getPaymentMethod() == paymentMethod); @@ -65,7 +67,7 @@ public class ConsumeOrder extends Order { public void addPaymentItem(PaymentPart item) { if (breakdown.stream().anyMatch(b -> b.getPaymentMethod() == item.getPaymentMethod())) { - throw new DuplicatePaymentMethodException("Payment method already exists in breakdown."); + throw new DuplicatedPaymentMethodException("Payment method already exists in breakdown."); } breakdown.add(item); } @@ -121,5 +123,13 @@ public class ConsumeOrder extends Order { order.setMerchantId(request.getMerchantId()); return order; } + + public boolean isNotified(){ + return this.notified; + } + + public boolean isFinished(){ + return orderStatus.equals(OrderStatus.FAILURE) || orderStatus.equals(OrderStatus.SUCCESS) ? true : false; + } } diff --git a/src/main/java/com/murong/ecp/payment/domain/Order.java b/src/main/java/com/murong/ecp/payment/domain/Order.java index 632012e..a7f7572 100644 --- a/src/main/java/com/murong/ecp/payment/domain/Order.java +++ b/src/main/java/com/murong/ecp/payment/domain/Order.java @@ -18,6 +18,5 @@ public class Order { protected Date orderTime; protected String refId; protected String requestId; - protected OrderStatus orderStatus = OrderStatus.UNTREATED; } diff --git a/src/main/java/com/murong/ecp/payment/enums/OrderStatus.java b/src/main/java/com/murong/ecp/payment/enums/OrderStatus.java index 9cbacfb..a6dd9aa 100644 --- a/src/main/java/com/murong/ecp/payment/enums/OrderStatus.java +++ b/src/main/java/com/murong/ecp/payment/enums/OrderStatus.java @@ -3,9 +3,10 @@ package com.murong.ecp.payment.enums; public enum OrderStatus { UNTREATED("U", "Untreated"), INITIALIZED("I", "Initialized"), + + PROCESSING("P", "Processing"), SUCCESS("S", "Success"), - FAILURE("F", "Failure"), - PROCESSING("P", "Processing"); + FAILURE("F", "Failure"); private String code; private String description; diff --git a/src/main/java/com/murong/ecp/payment/exception/DuplicatePaymentMethodException.java b/src/main/java/com/murong/ecp/payment/exception/DuplicatePaymentMethodException.java deleted file mode 100644 index 45e105e..0000000 --- a/src/main/java/com/murong/ecp/payment/exception/DuplicatePaymentMethodException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.murong.ecp.payment.exception; - -public class DuplicatePaymentMethodException extends RuntimeException{ - public DuplicatePaymentMethodException(String s) { - super(s); - } -} diff --git a/src/main/java/com/murong/ecp/payment/exception/DuplicatedPaymentMethodException.java b/src/main/java/com/murong/ecp/payment/exception/DuplicatedPaymentMethodException.java new file mode 100644 index 0000000..c06a3a8 --- /dev/null +++ b/src/main/java/com/murong/ecp/payment/exception/DuplicatedPaymentMethodException.java @@ -0,0 +1,14 @@ +package com.murong.ecp.payment.exception; + +import com.murong.ecp.payment.enums.ResponseMessage; + +public class DuplicatedPaymentMethodException extends DefaultException { + public DuplicatedPaymentMethodException() { + super(ResponseMessage.DUPLICATED_PAYMENT_METHOD); + } + + public DuplicatedPaymentMethodException(String message) { + super(ResponseMessage.DUPLICATED_PAYMENT_METHOD); + super.message = message; + } +} diff --git a/src/main/java/com/murong/ecp/payment/processor/ProcessorChain.java b/src/main/java/com/murong/ecp/payment/processor/ProcessorChain.java index 140495d..4470f0a 100644 --- a/src/main/java/com/murong/ecp/payment/processor/ProcessorChain.java +++ b/src/main/java/com/murong/ecp/payment/processor/ProcessorChain.java @@ -3,5 +3,5 @@ package com.murong.ecp.payment.processor; public interface ProcessorChain { void entry(T request); void setNext(ProcessorChain next); - boolean precheck(T request); + boolean checkParams(T request); } diff --git a/src/main/java/com/murong/ecp/payment/processor/order/OrderDefaultProcessor.java b/src/main/java/com/murong/ecp/payment/processor/flow/OrderDefaultProcessor.java similarity index 82% rename from src/main/java/com/murong/ecp/payment/processor/order/OrderDefaultProcessor.java rename to src/main/java/com/murong/ecp/payment/processor/flow/OrderDefaultProcessor.java index c982620..8b21159 100644 --- a/src/main/java/com/murong/ecp/payment/processor/order/OrderDefaultProcessor.java +++ b/src/main/java/com/murong/ecp/payment/processor/flow/OrderDefaultProcessor.java @@ -1,4 +1,4 @@ -package com.murong.ecp.payment.processor.order; +package com.murong.ecp.payment.processor.flow; import com.murong.ecp.payment.domain.ConsumeOrder; import com.murong.ecp.payment.processor.ProcessorChain; @@ -12,7 +12,7 @@ public abstract class OrderDefaultProcessor implements ProcessorChain