|
|
|
@ -2,13 +2,17 @@ package com.qniao.dam.application.service.reward; |
|
|
|
|
|
|
|
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto; |
|
|
|
import com.qniao.dam.api.query.walletaccount.WalletAccountQueryService; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.Order; |
|
|
|
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountAssociateOrderRecord; |
|
|
|
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; |
|
|
|
import com.qniao.dam.query.order.OrderQueryService; |
|
|
|
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
@ -25,6 +29,8 @@ public class RewardApplicationService { |
|
|
|
private WalletAccountQueryService walletAccountQueryService; |
|
|
|
@Resource |
|
|
|
private WalletAccountAggregate walletAccountAggregate; |
|
|
|
@Resource |
|
|
|
private OrderQueryService orderQueryService; |
|
|
|
|
|
|
|
/** |
|
|
|
* todo 财务入账 |
|
|
|
@ -34,13 +40,19 @@ public class RewardApplicationService { |
|
|
|
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND); |
|
|
|
if (Objects.nonNull(rewardConfig) && RewardAmountUnitEnum.NUM.equals(rewardConfig.getRewardAmountUnit())) { |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId()); |
|
|
|
Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE); |
|
|
|
if (Objects.isNull(walletAccount)) { |
|
|
|
walletAccount = WalletAccount.init(dto.getInitiatorUserId()); |
|
|
|
} |
|
|
|
String content = "推荐红娘" + (Objects.nonNull(associateOrder) ? associateOrder.getOrderBelongName() : "") + "入驻平台"; |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardConfig.getRewardAmount())); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
rewardConfig.getRewardAmount(), true, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc()); |
|
|
|
rewardConfig.getRewardAmount(), true, content, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc()); |
|
|
|
if (Objects.nonNull(associateOrder)) { |
|
|
|
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
record.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
} |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
walletAccountAggregate.save(walletAccount); |
|
|
|
} |
|
|
|
|