Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
dd41a2d2ca
2 changed files with 52 additions and 9 deletions
  1. 56
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  2. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

56
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java

@ -6,6 +6,7 @@ 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.OrderAggregate;
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,6 +16,7 @@ import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository;
import com.qniao.dam.domain.aggregate.right.RightAggregate;
import com.qniao.dam.domain.aggregate.right.entity.Right;
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum;
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;
@ -22,6 +24,10 @@ 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.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.dau.application.UecServerApplicationService;
import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j;
@ -30,7 +36,9 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@ -55,6 +63,14 @@ public class OrderEventHandler extends BaseApplicationService {
@Resource
private ExternalOrderRelDao externalOrderRelDao;
@Resource
private MarriageInformationDao marriageInformationDao;
@Resource
private ProductQueryService productQueryService;
@Resource
private OrderAggregate orderAggregate;
@Resource
private SnowFlakeUtil snowFlakeUtil;
@Resource
private AmqpTemplate amqpTemplate;
/**
@ -93,18 +109,46 @@ public class OrderEventHandler extends BaseApplicationService {
ExternalOrderRel externalOrderRel = externalOrderRelDao.selectOne(new LambdaQueryWrapper<ExternalOrderRel>()
.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);
if (ExternalOrderTypeEnum.VIP_PRODUCT.equals(externalOrderRel.getType())) {
//购买vip套餐赠送下线参与机会
giftSiteActivityOrder(externalOrderRel.getExternalId(), order.getUserId(), order.getMiId());
} else if (ExternalOrderTypeEnum.SITE_ACTIVITY.equals(externalOrderRel.getType())) {
//发送订单完成事件
sendCompletedMQ(externalOrderRel, order);
}
}
} catch (Exception e) {
log.error("订单已完成事件处理异常");
}
}
private void giftSiteActivityOrder(Long externalId, Long userId, Long miId) {
MarriageInformation marriageInformation = marriageInformationDao.selectById(miId);
Product product = productQueryService.querySiteActivityBy(externalId, marriageInformation.getGenderCode());
Order order = Order.build(userId, miId, OrderBelongingEnum.CUSTOMER, marriageInformation.getNickName(), OrderTypeEnum.NORMAL);
ProductSpec productSpec = product.getProductSpecList().get(0);
OrderItem orderItem = OrderItem.build(productSpec.getProductId(), productSpec.getId(), product.getProductType(), product.getMainCategory(), product.getSubCategory(),
product.getProductTitle(), BigDecimal.ZERO, 1);
orderItem.setSettlementAmount(BigDecimal.ZERO);
order.setSettlementAmount(BigDecimal.ZERO);
order.setOrderItemList(Collections.singletonList(orderItem));
//设置订单号
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
orderAggregate.complete(order);
ExternalOrderRel externalOrderRel = ExternalOrderRel.build(externalId, order.getId(), ExternalOrderTypeEnum.SITE_ACTIVITY);
externalOrderRelDao.insert(externalOrderRel);
sendCompletedMQ(externalOrderRel, order);
}
private void sendCompletedMQ(ExternalOrderRel externalOrderRel, Order order) {
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);
}
@Transactional(rollbackFor = Exception.class)
public void batchCreate(List<Right> rightList) {
if (CollUtil.isNotEmpty(rightList)) {

5
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

@ -105,7 +105,7 @@ public class OrderApplicationService {
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId());
}
private PaymentOrder makePaymentOrder(Order order) {
public PaymentOrder makePaymentOrder(Order order) {
PaymentOrder paymentOrder = new PaymentOrder();
paymentOrder.setPayableAmount(order.getSettlementAmount());
paymentOrder.setUnpaidAmount(paymentOrder.getPayableAmount());
@ -113,7 +113,7 @@ public class OrderApplicationService {
return paymentOrder;
}
private void countOrderAmount(Order order) {
public void countOrderAmount(Order order) {
if (CollUtil.isNotEmpty(order.getOrderItemList())) {
BigDecimal totalSettlementAmount = BigDecimal.ZERO;
for (OrderItem orderItem : order.getOrderItemList()) {
@ -304,7 +304,6 @@ public class OrderApplicationService {
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
//4. 组织付款单信息
paymentOrder = makePaymentOrder(order);
submitOrderDomainService.handle(order, paymentOrder);
submitSiteActivityOrderDomainService.handle(order, paymentOrder, dto.getSiteActivityId(), dto.getOpenVip());
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId());
}

Loading…
Cancel
Save