|
|
|
@ -1,6 +1,7 @@ |
|
|
|
package com.qniao.dam.application.handler.revenuereward; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil; |
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
import com.google.common.eventbus.Subscribe; |
|
|
|
import com.qniao.dam.application.service.revenuereward.RevenueRewardApplicationService; |
|
|
|
import com.qniao.dam.application.service.reward.RewardApplicationService; |
|
|
|
@ -9,9 +10,14 @@ import com.qniao.dam.domain.aggregate.ffpm.entity.FranchiseFeeProfitManagement; |
|
|
|
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.revenuereward.valueobj.RevenueRewardRecord; |
|
|
|
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecoveredRecord; |
|
|
|
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.WalletAccountRecord; |
|
|
|
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService; |
|
|
|
import com.qniao.dam.domian.aggregate.ffpm.constant.FranchiseFeeProfitManagementTypeEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.revenuereward.event.RevenueRewardRecoveryRequirementFilledEvent; |
|
|
|
import com.qniao.dam.domian.aggregate.revenuereward.event.RevenueRewardUpdatedEvent; |
|
|
|
@ -31,6 +37,7 @@ import com.qniao.dam.query.operationcenter.OperationCenterQueryService; |
|
|
|
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; |
|
|
|
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|
|
|
import com.qniao.dam.query.store.StoreQueryService; |
|
|
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
|
|
|
import com.qniao.das.domian.aggregate.mntp.event.MatchmakerNoviceTaskProgressFinishedMQ; |
|
|
|
import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter; |
|
|
|
import com.qniao.dau.domain.aggregate.organization.entity.Organization; |
|
|
|
@ -86,6 +93,12 @@ public class RevenueRewardEventHandler extends BaseApplicationService { |
|
|
|
private RewardApplicationService rewardApplicationService; |
|
|
|
@Resource |
|
|
|
private StoreDao storeDao; |
|
|
|
@Resource |
|
|
|
private WalletAccountQueryService walletAccountQueryService; |
|
|
|
@Resource |
|
|
|
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService; |
|
|
|
@Resource |
|
|
|
private WalletAccountAggregate walletAccountAggregate; |
|
|
|
|
|
|
|
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.OPERATION_CENTER_CREATED), |
|
|
|
exchange = @Exchange(value = MqExchange.OPERATION_CENTER_CREATED, |
|
|
|
@ -287,9 +300,45 @@ public class RevenueRewardEventHandler extends BaseApplicationService { |
|
|
|
|
|
|
|
//todo 推荐的红娘不在一个门店中,收益是否归门店 |
|
|
|
//todo 红娘的新手任务奖励 |
|
|
|
handleStoreNoviceTaskReward(store.getOrgId(), mq.getMatchmakerExtraBonus(), mq.getMatchmakerName()); |
|
|
|
handleMatchmakerNoviceTaskReward(mq.getMatchmakerUserId(), mq.getMatchmakerExtraBonus()); |
|
|
|
|
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
log.error("新手任务完成事件处理异常", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void handleStoreNoviceTaskReward(Long orgId, BigDecimal revenue, String matchmakerName) { |
|
|
|
//钱包信息 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(orgId, IdentityTypeEnum.ORGANIZATION); |
|
|
|
BigDecimal originalBalance = walletAccount.getTotalBalance(); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD, revenue, false, originalBalance, walletAccount.getTotalBalance()); |
|
|
|
record.setRemark(matchmakerName + TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD.getDesc()); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
walletAccountAggregate.save(walletAccount); |
|
|
|
} |
|
|
|
|
|
|
|
private void handleMatchmakerNoviceTaskReward(Long matchmakerUserId, BigDecimal revenue) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmakerUserId); |
|
|
|
if (Objects.isNull(revenueReward)) { |
|
|
|
revenueReward = RevenueReward.initUser(matchmakerUserId); |
|
|
|
} |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD, TradeSceneEnum.ONLINE, |
|
|
|
revenue, BigDecimal.ZERO, BigDecimal.ZERO, revenue, BigDecimal.ZERO); |
|
|
|
revenueRewardRecord.setContent(TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD.getDesc()); |
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
|
|
|
|
//钱包信息 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmakerUserId, IdentityTypeEnum.INDIVIDUAL); |
|
|
|
BigDecimal originalBalance = walletAccount.getTotalBalance(); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_NOVICE_TASK_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
} |
|
|
|
} |