|
|
@ -1,16 +1,26 @@ |
|
|
package com.qniao.dam.application.service.revenuereward; |
|
|
package com.qniao.dam.application.service.revenuereward; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
|
import com.qniao.dam.application.service.reward.RewardApplicationService; |
|
|
|
|
|
import com.qniao.dam.domain.aggregate.eso.entity.EntrustServiceOrder; |
|
|
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate; |
|
|
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate; |
|
|
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; |
|
|
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.RevenueRewardRecord; |
|
|
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; |
|
|
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; |
|
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|
|
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; |
|
|
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; |
|
|
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; |
|
|
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService; |
|
|
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService; |
|
|
|
|
|
import com.qniao.dam.domian.aggregate.matchmaker.event.MatchmakerFranchiseFeeRewardEvent; |
|
|
|
|
|
import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ; |
|
|
|
|
|
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum; |
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum; |
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; |
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; |
|
|
|
|
|
import com.qniao.dam.infrastructure.constant.MqExchange; |
|
|
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; |
|
|
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao; |
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao; |
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao; |
|
|
import com.qniao.dam.infrastructure.persistent.dao.org.OrganizationDao; |
|
|
import com.qniao.dam.infrastructure.persistent.dao.org.OrganizationDao; |
|
|
import com.qniao.dam.query.operationcenter.OperationCenterQueryService; |
|
|
import com.qniao.dam.query.operationcenter.OperationCenterQueryService; |
|
|
@ -18,9 +28,12 @@ import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; |
|
|
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|
|
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|
|
import com.qniao.dam.query.store.StoreQueryService; |
|
|
import com.qniao.dam.query.store.StoreQueryService; |
|
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
|
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
|
|
|
|
|
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; |
|
|
|
|
|
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; |
|
|
import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter; |
|
|
import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter; |
|
|
import com.qniao.dau.domain.aggregate.organization.entity.Organization; |
|
|
import com.qniao.dau.domain.aggregate.organization.entity.Organization; |
|
|
import com.qniao.dau.domain.aggregate.store.entity.Store; |
|
|
import com.qniao.dau.domain.aggregate.store.entity.Store; |
|
|
|
|
|
import com.qniao.dau.domian.aggregate.matchmakeraudit.constant.MatchmakerAuditBehaviorEnum; |
|
|
import com.qniao.dau.domian.aggregate.organization.constant.OrganizationTypeEnum; |
|
|
import com.qniao.dau.domian.aggregate.organization.constant.OrganizationTypeEnum; |
|
|
import com.qniao.framework.exception.BizException; |
|
|
import com.qniao.framework.exception.BizException; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
@ -53,6 +66,12 @@ public class RevenueRewardApplicationService { |
|
|
private WalletAccountQueryService walletAccountQueryService; |
|
|
private WalletAccountQueryService walletAccountQueryService; |
|
|
@Resource |
|
|
@Resource |
|
|
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService; |
|
|
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private MatchmakerDao matchmakerDao; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private MarriageInformationDao marriageInformationDao; |
|
|
|
|
|
@Resource |
|
|
|
|
|
private RewardApplicationService rewardApplicationService; |
|
|
|
|
|
|
|
|
public void create(RevenueReward revenueReward) { |
|
|
public void create(RevenueReward revenueReward) { |
|
|
RevenueReward existRevenueReward = revenueRewardQueryService.queryByUserId(revenueReward.getUserId()); |
|
|
RevenueReward existRevenueReward = revenueRewardQueryService.queryByUserId(revenueReward.getUserId()); |
|
|
@ -123,4 +142,52 @@ public class RevenueRewardApplicationService { |
|
|
log.error("管道收益处理异常", e); |
|
|
log.error("管道收益处理异常", e); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void settleEntrustServiceOrder(EntrustServiceOrder entrustServiceOrder) { |
|
|
|
|
|
Matchmaker matchmaker = matchmakerDao.selectById(entrustServiceOrder.getMatchmakerId()); |
|
|
|
|
|
MarriageInformation initiatorMiInfo = marriageInformationDao.selectById(entrustServiceOrder.getInitiatorMiId()); |
|
|
|
|
|
//邀请红娘在有效期内才能拿到佣金+积分奖励 |
|
|
|
|
|
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) { |
|
|
|
|
|
//收益信息 |
|
|
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmaker.getUserId()); |
|
|
|
|
|
if (Objects.isNull(revenueReward)) { |
|
|
|
|
|
revenueReward = RevenueReward.initUser(matchmaker.getUserId()); |
|
|
|
|
|
} |
|
|
|
|
|
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.ENTRUST_SERVICE_MATCHMAKER_FEE); |
|
|
|
|
|
|
|
|
|
|
|
//营收额 |
|
|
|
|
|
BigDecimal revenue = rewardConfig.calculateReward(entrustServiceOrder.getRewardAmount()); |
|
|
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.ENTRUST_SERVICE_REWARD, TradeSceneEnum.ONLINE, |
|
|
|
|
|
revenue, new BigDecimal(rewardConfig.getValue()), BigDecimal.ZERO, revenue, entrustServiceOrder.getRewardAmount()); |
|
|
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(initiatorMiInfo.getNickName())); |
|
|
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(entrustServiceOrder.getAssociateOrderId(), entrustServiceOrder.getRewardAmount()); |
|
|
|
|
|
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
|
|
|
|
|
|
|
|
//钱包信息 |
|
|
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL); |
|
|
|
|
|
BigDecimal originalBalance = walletAccount.getTotalBalance(); |
|
|
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.ENTRUST_SERVICE_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); |
|
|
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (Objects.nonNull(matchmaker.getStoreId())) { |
|
|
|
|
|
//门店收益 |
|
|
|
|
|
Store store = storeQueryService.queryById(matchmaker.getStoreId()); |
|
|
|
|
|
rewardApplicationService.handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, |
|
|
|
|
|
entrustServiceOrder.getRewardAmount(), initiatorMiInfo, |
|
|
|
|
|
entrustServiceOrder.getRewardAmount(), Collections.singletonList(entrustServiceOrder.getAssociateOrderId()), TradeTypeEnum.ENTRUST_SERVICE_REWARD); |
|
|
|
|
|
|
|
|
|
|
|
//运营中心 |
|
|
|
|
|
if (Objects.nonNull(store.getOperationCenterOrgId())) { |
|
|
|
|
|
rewardApplicationService.handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, |
|
|
|
|
|
entrustServiceOrder.getRewardAmount(), initiatorMiInfo, |
|
|
|
|
|
entrustServiceOrder.getRewardAmount(), Collections.singletonList(entrustServiceOrder.getAssociateOrderId()), TradeTypeEnum.ENTRUST_SERVICE_REWARD); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |