|
|
@ -1,8 +1,10 @@ |
|
|
package com.qniao.dam.application.handler.contract; |
|
|
package com.qniao.dam.application.handler.contract; |
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
|
|
import com.google.common.eventbus.Subscribe; |
|
|
import com.qniao.dam.domain.aggregate.contract.ContractAggregate; |
|
|
import com.qniao.dam.domain.aggregate.contract.ContractAggregate; |
|
|
import com.qniao.dam.domain.aggregate.contract.entity.Contract; |
|
|
import com.qniao.dam.domain.aggregate.contract.entity.Contract; |
|
|
|
|
|
import com.qniao.dam.domain.aggregate.contract.repository.ContractRepository; |
|
|
import com.qniao.dam.domain.aggregate.contract.valobj.ContractImage; |
|
|
import com.qniao.dam.domain.aggregate.contract.valobj.ContractImage; |
|
|
import com.qniao.dam.domain.aggregate.contract.valobj.ContractTerm; |
|
|
import com.qniao.dam.domain.aggregate.contract.valobj.ContractTerm; |
|
|
import com.qniao.dam.domain.aggregate.order.OrderAggregate; |
|
|
import com.qniao.dam.domain.aggregate.order.OrderAggregate; |
|
|
@ -13,6 +15,8 @@ import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; |
|
|
import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; |
|
|
import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; |
|
|
import com.qniao.dam.domian.aggregate.contract.constant.ContractStatusEnum; |
|
|
import com.qniao.dam.domian.aggregate.contract.constant.ContractStatusEnum; |
|
|
import com.qniao.dam.domian.aggregate.contract.constant.ContractTermNameEnum; |
|
|
import com.qniao.dam.domian.aggregate.contract.constant.ContractTermNameEnum; |
|
|
|
|
|
import com.qniao.dam.domian.aggregate.contract.event.ContractCreatedEvent; |
|
|
|
|
|
import com.qniao.dam.domian.aggregate.contract.event.CustomizedServiceContractCreatedMQ; |
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; |
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; |
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; |
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; |
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; |
|
|
@ -25,10 +29,13 @@ import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|
|
import com.qniao.dam.infrastructure.constant.MqExchange; |
|
|
import com.qniao.dam.infrastructure.constant.MqExchange; |
|
|
import com.qniao.dam.infrastructure.constant.MqQueue; |
|
|
import com.qniao.dam.infrastructure.constant.MqQueue; |
|
|
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; |
|
|
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; |
|
|
|
|
|
import com.qniao.dam.query.contract.ContractQueryService; |
|
|
import com.qniao.dcs.domain.dsc.event.DatingStoreCustomerSignedMQ; |
|
|
import com.qniao.dcs.domain.dsc.event.DatingStoreCustomerSignedMQ; |
|
|
import com.qniao.domain.BaseApplicationService; |
|
|
import com.qniao.domain.BaseApplicationService; |
|
|
|
|
|
import com.qniao.domain.BaseDomainEvent; |
|
|
import com.qniao.framework.utils.TypeConvertUtils; |
|
|
import com.qniao.framework.utils.TypeConvertUtils; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
import org.springframework.amqp.core.AmqpTemplate; |
|
|
import org.springframework.amqp.core.ExchangeTypes; |
|
|
import org.springframework.amqp.core.ExchangeTypes; |
|
|
import org.springframework.amqp.rabbit.annotation.Exchange; |
|
|
import org.springframework.amqp.rabbit.annotation.Exchange; |
|
|
import org.springframework.amqp.rabbit.annotation.Queue; |
|
|
import org.springframework.amqp.rabbit.annotation.Queue; |
|
|
@ -57,6 +64,12 @@ public class ContractEventHandler extends BaseApplicationService { |
|
|
private OrderAggregate orderAggregate; |
|
|
private OrderAggregate orderAggregate; |
|
|
@Resource |
|
|
@Resource |
|
|
private PaymentOrderAggregate paymentOrderAggregate; |
|
|
private PaymentOrderAggregate paymentOrderAggregate; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ContractRepository contractRepository; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private ContractQueryService contractQueryService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private AmqpTemplate amqpTemplate; |
|
|
|
|
|
|
|
|
@Value("${platform-org-id:963432943739605555}") |
|
|
@Value("${platform-org-id:963432943739605555}") |
|
|
private Long platformOrgId; |
|
|
private Long platformOrgId; |
|
|
@ -70,15 +83,17 @@ public class ContractEventHandler extends BaseApplicationService { |
|
|
type = ExchangeTypes.FANOUT))) |
|
|
type = ExchangeTypes.FANOUT))) |
|
|
public void handle(DatingStoreCustomerSignedMQ mq) { |
|
|
public void handle(DatingStoreCustomerSignedMQ mq) { |
|
|
try { |
|
|
try { |
|
|
|
|
|
List<BaseDomainEvent> eventList = new ArrayList<>(); |
|
|
//合同 |
|
|
//合同 |
|
|
Contract contract = handleContract(mq); |
|
|
Contract contract = handleContract(mq); |
|
|
contractAggregate.create(contract); |
|
|
|
|
|
|
|
|
eventList.add(contractAggregate.create(contract)); |
|
|
//订单 |
|
|
//订单 |
|
|
Order order = handleOrder(mq); |
|
|
Order order = handleOrder(mq); |
|
|
orderAggregate.complete(order); |
|
|
orderAggregate.complete(order); |
|
|
//付款单 |
|
|
//付款单 |
|
|
PaymentOrder paymentOrder = handlePaymentOrder(mq, order); |
|
|
PaymentOrder paymentOrder = handlePaymentOrder(mq, order); |
|
|
paymentOrderAggregate.save(paymentOrder); |
|
|
paymentOrderAggregate.save(paymentOrder); |
|
|
|
|
|
this.sendEvent(eventList); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
log.error("线下门店客户已签约事件处理异常", e); |
|
|
log.error("线下门店客户已签约事件处理异常", e); |
|
|
} |
|
|
} |
|
|
@ -172,4 +187,19 @@ public class ContractEventHandler extends BaseApplicationService { |
|
|
contract.setContractImageList(TypeConvertUtils.convert(mq.getContractImageList(), ContractImage.class)); |
|
|
contract.setContractImageList(TypeConvertUtils.convert(mq.getContractImageList(), ContractImage.class)); |
|
|
return contract; |
|
|
return contract; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Subscribe |
|
|
|
|
|
private void handle(ContractCreatedEvent event) { |
|
|
|
|
|
try { |
|
|
|
|
|
Contract contract = contractRepository.load(event.getId()); |
|
|
|
|
|
CustomizedServiceContractCreatedMQ mq = new CustomizedServiceContractCreatedMQ(); |
|
|
|
|
|
mq.setContractId(contract.getId()); |
|
|
|
|
|
mq.setDatingStoreCustomerId(contract.getFirstPartyId()); |
|
|
|
|
|
ContractTerm contractTerm = contractQueryService.findTermBy(contract.getContractTermList(), ContractTermNameEnum.NUMBER_OF_SERVICES); |
|
|
|
|
|
mq.setNumberOfServices(Integer.valueOf(contractTerm.getValue())); |
|
|
|
|
|
amqpTemplate.convertAndSend(MqExchange.CUSTOMIZED_SERVICE_CONTRACT_CREATED, null, mq); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error("合同已创建事件处理异常", e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |