From 67ff9d73f69f44e9b7d743f28768df06a08cc1a9 Mon Sep 17 00:00:00 2001 From: Derran Date: Sun, 5 May 2024 16:17:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/MarriageBountyOrder.java | 12 ++++++++++++ .../event/MarriageBountyOrderCancelledMQ.java | 17 +++++++++++++++++ .../PaymentOrderRefundEventHandler.java | 10 ++++++++++ .../MarriageBountyOrderApplicationService.java | 2 ++ .../dam/infrastructure/constant/MqExchange.java | 1 + 5 files changed, 42 insertions(+) create mode 100644 dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderCancelledMQ.java diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java index 3b84ed9..7dc0985 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java @@ -10,8 +10,10 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.Objects; @Data @EqualsAndHashCode(callSuper = true) @@ -24,6 +26,9 @@ public class MarriageBountyOrder extends Entity { @ApiModelProperty("征婚资料标识") private Long miId; + @ApiModelProperty("奖励金额") + private BigDecimal rewardAmount; + @ApiModelProperty("状态") private MarriageBountyOrderStatusEnum status; @@ -48,4 +53,11 @@ public class MarriageBountyOrder extends Entity { marriageBountyOrder.setMiId(miId); return marriageBountyOrder; } + + public void calculateRewardAmount() { + if (Objects.nonNull(orderRewardList)) { + rewardAmount = orderRewardList.stream().map(MarriageBountyOrderReward::getRewardAmount) + .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); + } + } } diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderCancelledMQ.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderCancelledMQ.java new file mode 100644 index 0000000..ca45849 --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderCancelledMQ.java @@ -0,0 +1,17 @@ +package com.qniao.dam.domian.aggregate.marriagebounty.event; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class MarriageBountyOrderCancelledMQ implements Serializable { + + //悬赏订单标识 + private Long marriageBountyOrderId; + + private Long userId; + + private Long miId; + +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/paymentorderrefund/PaymentOrderRefundEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/paymentorderrefund/PaymentOrderRefundEventHandler.java index a433c57..a4777db 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/paymentorderrefund/PaymentOrderRefundEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/paymentorderrefund/PaymentOrderRefundEventHandler.java @@ -3,12 +3,16 @@ package com.qniao.dam.application.handler.paymentorderrefund; import com.qniao.dam.domain.aggregate.marriagebounty.MarriageBountyOrderAggregate; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; +import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCancelledMQ; import com.qniao.dam.domian.aggregate.paymentorderrefund.constant.PaymentOrderRefundStatusEnum; import com.qniao.dam.domian.aggregate.paymentorderrefund.event.PaymentOrderRefundRefundedEvent; +import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.paymentorderrefund.PaymentOrderRefundQueryService; import com.qniao.domain.BaseApplicationService; +import com.qniao.framework.utils.TypeConvertUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.AmqpTemplate; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -26,6 +30,8 @@ public class PaymentOrderRefundEventHandler extends BaseApplicationService { private PaymentOrderRefundQueryService paymentOrderRefundQueryService; @Resource private MarriageBountyOrderAggregate marriageBountyOrderAggregate; + @Resource + private AmqpTemplate amqpTemplate; /** * 付款单已退款事件 @@ -41,6 +47,10 @@ public class PaymentOrderRefundEventHandler extends BaseApplicationService { refundMarriageBountyOrder.setId(marriageBountyOrder.getId()); marriageBountyOrderAggregate.refund(refundMarriageBountyOrder); //todo 主动发起退款 + MarriageBountyOrderCancelledMQ cancelledMQ = TypeConvertUtils.convert(marriageBountyOrder, MarriageBountyOrderCancelledMQ.class); + cancelledMQ.setMarriageBountyOrderId(event.getId()); + // 发送mq事件 + amqpTemplate.convertAndSend(MqExchange.MARRIAGE_BOUNTY_ORDER_CREATED, null, cancelledMQ); } } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java index e56f7bf..8fc4532 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java @@ -80,6 +80,7 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic marriageBountyOrder.setProductRecordList(Collections.singletonList(productRecord)); marriageBountyOrder.setOrderRewardList(orderRewardList); marriageBountyOrder.setInsertOrderRewardList(orderRewardList); + marriageBountyOrder.calculateRewardAmount(); BaseDomainEvent event = marriageBountyOrderAggregate.create(marriageBountyOrder); this.sendEvent(event); } else { @@ -106,6 +107,7 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic marriageBountyOrder.getUpdateOrderRewardList().add(orderReward); } } + marriageBountyOrder.calculateRewardAmount(); marriageBountyOrderAggregate.update(marriageBountyOrder); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java index a665218..fa5e1ec 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java @@ -4,4 +4,5 @@ public interface MqExchange { String MARRIAGE_BOUNTY_ORDER_CREATED = "fanout.marriageBountyOrderCreated"; + String MARRIAGE_BOUNTY_ORDER_CANCELLED = "fanout.marriageBountyOrderCancelled"; }