2 changed files with 82 additions and 10 deletions
Split View
Diff Options
-
24dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
-
68dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/virtualaccount/CostIMGiftRewardDomainService.java
@ -0,0 +1,68 @@ |
|||
package com.qniao.dam.domain.service.virtualaccount; |
|||
|
|||
import cn.hutool.core.collection.CollUtil; |
|||
import com.qniao.dam.domain.aggregate.order.OrderAggregate; |
|||
import com.qniao.dam.domain.aggregate.order.entity.Order; |
|||
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate; |
|||
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; |
|||
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord; |
|||
import com.qniao.dam.domain.aggregate.virtualaccount.VirtualAccountAggregate; |
|||
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; |
|||
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|||
import com.qniao.dam.domian.aggregate.revenuereward.event.RevenueRewardRecordCreatedEvent; |
|||
import com.qniao.domain.BaseDomainEvent; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.ArrayList; |
|||
import java.util.Collections; |
|||
import java.util.List; |
|||
import java.util.Objects; |
|||
|
|||
@Service |
|||
public class CostIMGiftRewardDomainService { |
|||
|
|||
|
|||
@Resource |
|||
private OrderAggregate orderAggregate; |
|||
@Resource |
|||
private VirtualAccountAggregate virtualAccountAggregate; |
|||
@Resource |
|||
private RevenueRewardAggregate revenueRewardAggregate; |
|||
@Resource |
|||
private WalletAccountAggregate walletAccountAggregate; |
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
public List<BaseDomainEvent> handle(Order order, |
|||
VirtualAccount virtualAccount, |
|||
Integer costBalance, |
|||
RevenueReward revenueReward, |
|||
WalletAccount walletAccount) { |
|||
List<BaseDomainEvent> eventList = new ArrayList<>(); |
|||
|
|||
orderAggregate.complete(order); |
|||
|
|||
virtualAccountAggregate.costGift(virtualAccount, costBalance,order.getId()); |
|||
|
|||
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount()); |
|||
revenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|||
revenueRewardAggregate.save(revenueReward); |
|||
|
|||
if(Objects.nonNull(walletAccount)) { |
|||
walletAccount.getRecordList().forEach(record -> { |
|||
record.setAssociateId(revenueReward.getRecordList().get(0).getId()); |
|||
}); |
|||
walletAccountAggregate.save(walletAccount); |
|||
} |
|||
|
|||
if (CollUtil.isNotEmpty(revenueReward.getRecordList())){ |
|||
revenueReward.getRecordList().forEach(record -> { |
|||
eventList.add(TypeConvertUtils.convert(record, RevenueRewardRecordCreatedEvent.class)); |
|||
}); |
|||
} |
|||
return eventList; |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save