diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/order/event/ExternalOrderCompletedMQEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/order/event/ExternalOrderCompletedMQEvent.java new file mode 100644 index 0000000..3069242 --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/order/event/ExternalOrderCompletedMQEvent.java @@ -0,0 +1,21 @@ +package com.qniao.dam.domian.aggregate.order.event; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ExternalOrderCompletedMQEvent implements Serializable { + + @ApiModelProperty("外部标识") + private Long externalId; + + @ApiModelProperty("订单标识") + private Long orderId; + + 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/order/OrderEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java index 8eac41d..528fa68 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java @@ -1,9 +1,11 @@ package com.qniao.dam.application.handler.order; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.google.common.eventbus.Subscribe; import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService; import com.qniao.dam.application.service.right.RightApplicationService; +import com.qniao.dam.domain.aggregate.externalorder.valueobj.ExternalOrderRel; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.entity.OrderItem; import com.qniao.dam.domain.aggregate.order.repository.OrderRepository; @@ -15,11 +17,15 @@ import com.qniao.dam.domain.aggregate.right.RightAggregate; import com.qniao.dam.domain.aggregate.right.entity.Right; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; +import com.qniao.dam.domian.aggregate.order.event.ExternalOrderCompletedMQEvent; import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; +import com.qniao.dam.infrastructure.constant.MqExchange; +import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao; import com.qniao.dau.application.UecServerApplicationService; import com.qniao.domain.BaseApplicationService; import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.AmqpTemplate; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -46,6 +52,10 @@ public class OrderEventHandler extends BaseApplicationService { private UecServerApplicationService uecServerApplicationService; @Resource private MarriageBountyOrderApplicationService marriageBountyOrderApplicationService; + @Resource + private ExternalOrderRelDao externalOrderRelDao; + @Resource + private AmqpTemplate amqpTemplate; /** * 订单已完成事件 -> 兑换权益 @@ -79,6 +89,17 @@ public class OrderEventHandler extends BaseApplicationService { if (OrderTypeEnum.MARRIAGE_BOUNTY.equals(order.getOrderType())) { marriageBountyOrderApplicationService.save(order.getId()); } + //外部订单处理 + ExternalOrderRel externalOrderRel = externalOrderRelDao.selectOne(new LambdaQueryWrapper() + .eq(ExternalOrderRel::getOrderId, order.getId())); + if (Objects.nonNull(externalOrderRel)) { + ExternalOrderCompletedMQEvent completedMQEvent = new ExternalOrderCompletedMQEvent(); + completedMQEvent.setExternalId(externalOrderRel.getExternalId()); + completedMQEvent.setOrderId(externalOrderRel.getOrderId()); + completedMQEvent.setUserId(order.getUserId()); + completedMQEvent.setMiId(order.getMiId()); + amqpTemplate.convertAndSend(MqExchange.EXTERNAL_ORDER_COMPLETED, null, completedMQEvent); + } } catch (Exception e) { log.error("订单已完成事件处理异常"); } 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 b68c08c..452a8d6 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 @@ -11,4 +11,7 @@ public interface MqExchange { String REWARD_MATCH_SUCCESSFULLY = "fanout.rewardMatchSuccessfully"; String SITE_ACTIVITY_CREATED = "fanout.siteActivityCreated"; + + String EXTERNAL_ORDER_COMPLETED = "fanout.externalOrderCompleted"; + }