diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index 08a4298..7add51f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -149,10 +149,13 @@ public class OrderApplicationService extends BaseApplicationService { } public PaymentOrder makePaymentOrder(Order order) { - PaymentOrder paymentOrder = new PaymentOrder(); - paymentOrder.setPayableAmount(order.getSettlementAmount()); - paymentOrder.setUnpaidAmount(paymentOrder.getPayableAmount()); - paymentOrder.setPaidAmount(BigDecimal.ZERO); + PaymentOrder paymentOrder = null; + if (order.getSettlementAmount().compareTo(BigDecimal.ZERO) > 0) { + paymentOrder = new PaymentOrder(); + paymentOrder.setPayableAmount(order.getSettlementAmount()); + paymentOrder.setUnpaidAmount(paymentOrder.getPayableAmount()); + paymentOrder.setPaidAmount(BigDecimal.ZERO); + } return paymentOrder; } @@ -508,8 +511,9 @@ public class OrderApplicationService extends BaseApplicationService { order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode()); //4. 组织付款单信息 PaymentOrder paymentOrder = makePaymentOrder(order); - submitOrderDomainService.handle(order, paymentOrder); - return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false); + BaseDomainEvent event = submitOrderDomainService.handle(order, paymentOrder); + this.sendEvent(event); + return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), order.getSettlementAmount().compareTo(BigDecimal.ZERO) == 0); } private void checkLiveDuration(Order order, diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitOrderDomainService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitOrderDomainService.java index b8ba9af..03c724b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitOrderDomainService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitOrderDomainService.java @@ -5,10 +5,12 @@ import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.paymentorder.PaymentOrderAggregate; import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; +import com.qniao.domain.BaseDomainEvent; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; @Service public class SubmitOrderDomainService { @@ -19,9 +21,15 @@ public class SubmitOrderDomainService { private PaymentOrderAggregate paymentOrderAggregate; @Transactional(rollbackFor = Exception.class) - public void handle(Order order, PaymentOrder paymentOrder) { - orderAggregate.submit(order); - paymentOrder.setOrderId(order.getId()); - paymentOrderAggregate.create(paymentOrder); + public BaseDomainEvent handle(Order order, PaymentOrder paymentOrder) { + BaseDomainEvent event = null; + if (order.getSettlementAmount().compareTo(BigDecimal.ZERO) == 0) { + event = orderAggregate.complete(order); + } else { + orderAggregate.submit(order); + paymentOrder.setOrderId(order.getId()); + paymentOrderAggregate.create(paymentOrder); + } + return event; } }