|
|
|
@ -9,6 +9,7 @@ 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.service.revenuereward.AcquireRevenueRewardDomainService; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; |
|
|
|
import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; |
|
|
|
@ -65,90 +66,91 @@ public class RewardApplicationService { |
|
|
|
public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { |
|
|
|
//红娘加盟订单 |
|
|
|
Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), dto.getType()); |
|
|
|
BigDecimal rewardAmount = associateOrder.getSettlementAmount(); |
|
|
|
//推荐的红娘 |
|
|
|
if (Objects.nonNull(dto.getInitiatorUserId())) { |
|
|
|
synchronized (dto.getInitiatorUserId().toString().intern()) { |
|
|
|
//区分红娘类型 |
|
|
|
RewardTypeEnum rewardType = RewardConfig.getRecommendRewardType(dto.getType()); |
|
|
|
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(rewardType); |
|
|
|
if (Objects.nonNull(recommendRewardConfig)) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); |
|
|
|
if (Objects.isNull(revenueReward)) { |
|
|
|
revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); |
|
|
|
} |
|
|
|
//营收额 |
|
|
|
BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); |
|
|
|
rewardAmount = rewardAmount.subtract(revenue); |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
revenue, revenue, associateOrder.getOriginalAmount()); |
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); |
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
|
|
|
|
//钱包信息 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//门店提成 |
|
|
|
if (Objects.nonNull(dto.getStoreOrgId())) { |
|
|
|
synchronized (dto.getStoreOrgId().toString().intern()) { |
|
|
|
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); |
|
|
|
if (Objects.nonNull(recommendRewardConfig)) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); |
|
|
|
//营收额 |
|
|
|
BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
revenue, revenue, associateOrder.getOriginalAmount()); |
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); |
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
|
|
|
|
//钱包信息 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//运营中心提成 |
|
|
|
if (Objects.nonNull(dto.getOperationCenterOrgId())) { |
|
|
|
synchronized (dto.getOperationCenterOrgId().toString().intern()) { |
|
|
|
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); |
|
|
|
if (Objects.nonNull(recommendRewardConfig)) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); |
|
|
|
//营收额 |
|
|
|
BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
revenue, revenue, associateOrder.getOriginalAmount()); |
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); |
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
if (Objects.nonNull(associateOrder)) { |
|
|
|
BigDecimal rewardAmount = associateOrder.getSettlementAmount(); |
|
|
|
//推荐的红娘 |
|
|
|
if (Objects.nonNull(dto.getInitiatorUserId())) { |
|
|
|
synchronized (dto.getInitiatorUserId().toString().intern()) { |
|
|
|
//奖励百分比 |
|
|
|
BigDecimal recommendRewardPct = rewardConfigQueryService.queryRecommendRewardPct(dto.getInitiatorLevel(), dto.getReceiveLevel()); |
|
|
|
if (recommendRewardPct.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId()); |
|
|
|
if (Objects.isNull(revenueReward)) { |
|
|
|
revenueReward = RevenueReward.initUser(dto.getInitiatorUserId()); |
|
|
|
} |
|
|
|
//营收额 |
|
|
|
BigDecimal revenue = RewardConfig.calculatePct(rewardAmount, recommendRewardPct); |
|
|
|
rewardAmount = rewardAmount.subtract(revenue); |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
revenue, revenue, associateOrder.getOriginalAmount()); |
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); |
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
|
|
|
|
//钱包信息 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
//钱包信息 |
|
|
|
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// //门店提成 |
|
|
|
// if (Objects.nonNull(dto.getStoreOrgId())) { |
|
|
|
// synchronized (dto.getStoreOrgId().toString().intern()) { |
|
|
|
// RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); |
|
|
|
// if (Objects.nonNull(recommendRewardConfig)) { |
|
|
|
// //收益信息 |
|
|
|
// RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); |
|
|
|
// //营收额 |
|
|
|
// BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); |
|
|
|
// RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
// revenue, revenue, associateOrder.getOriginalAmount()); |
|
|
|
// revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); |
|
|
|
// RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
// revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
// revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
// |
|
|
|
// //钱包信息 |
|
|
|
// WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); |
|
|
|
// walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
// walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
// WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); |
|
|
|
// walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
// acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
// //运营中心提成 |
|
|
|
// if (Objects.nonNull(dto.getOperationCenterOrgId())) { |
|
|
|
// synchronized (dto.getOperationCenterOrgId().toString().intern()) { |
|
|
|
// RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); |
|
|
|
// if (Objects.nonNull(recommendRewardConfig)) { |
|
|
|
// //收益信息 |
|
|
|
// RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); |
|
|
|
// //营收额 |
|
|
|
// BigDecimal revenue = recommendRewardConfig.calculateReward(rewardAmount); |
|
|
|
// RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, |
|
|
|
// revenue, revenue, associateOrder.getOriginalAmount()); |
|
|
|
// revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "")); |
|
|
|
// RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount()); |
|
|
|
// revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
// revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
// |
|
|
|
// //钱包信息 |
|
|
|
// WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); |
|
|
|
// walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
// walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
// WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); |
|
|
|
// walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
// acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|