diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java index 1a9f3d1..be10975 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java @@ -71,11 +71,97 @@ public class RewardApplicationService extends BaseApplicationService { @Resource private RevenueRewardDao revenueRewardDao; - /** - * 获得红娘推荐奖励 + * 获得红娘推荐奖励 新政策 */ public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { + //红娘加盟订单 + Order associateOrder = orderDao.selectById(dto.getAssociateOrderId()); + if (Objects.nonNull(associateOrder)) { + BigDecimal rewardAmount = associateOrder.getSettlementAmount(); + //推荐的红娘 + if (Objects.nonNull(dto.getInitiatorUserId())) { + synchronized (dto.getInitiatorUserId().toString().intern()) { + Matchmaker initiatorMatchmaker = matchmakerQueryService.queryByUserId(dto.getInitiatorUserId()); + //邀请红娘在有效期内才能拿到佣金+积分奖励 + if (Objects.nonNull(initiatorMatchmaker) && initiatorMatchmaker.checkEnable()) { + //奖励百分比 + 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); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, + revenue, recommendRewardPct, BigDecimal.ZERO, revenue, associateOrder.getSettlementAmount()); + revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(dto.getReceiveUserName()) ? dto.getReceiveUserName() : "")); + 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); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance()); + walletAccount.setRecordList(Collections.singletonList(record)); + acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + + //发送红娘收益事件 + if (MatchmakerAuditBehaviorEnum.REGISTER.equals(dto.getBehavior())) { + MatchmakerFranchiseFeeRewardEvent rewardEvent = new MatchmakerFranchiseFeeRewardEvent(); + rewardEvent.setMatchmakerId(initiatorMatchmaker.getId()); + rewardEvent.setFranchiseFee(rewardAmount); + rewardEvent.setStayFranchiseFee(rewardAmount.subtract(revenue)); + rewardEvent.setReceiveUserName(dto.getReceiveUserName()); + rewardEvent.setInitiatorLevel(dto.getInitiatorLevel()); + rewardEvent.setReceiveLevel(dto.getReceiveLevel()); + rewardEvent.setAssociateId(dto.getAssociateOrderId()); + rewardEvent.setMaxReward(revenue); + this.sendEvent(rewardEvent); + } + + //积分奖励 + PointRewardCreatedMQ mq = new PointRewardCreatedMQ(); + mq.setOwnId(dto.getInitiatorUserId()); + mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL); + mq.setPointType(PointRewardConfigTypeEnum.INVITE_MATCHMAKER); + mq.setContent("邀请红娘:" + dto.getReceiveUserName()); + mq.setIsIncome(true); + mq.setAssociateId(dto.getAssociateOrderId()); + mq.setAmount(rewardAmount); + // 发送mq事件 + amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq); + } + } + } + } + + //门店提成 + Store store = storeQueryService.queryByOrg(dto.getStoreOrgId()); + if (dto.getInitiatorUserId().equals(store.getAdministratorId())) { + //门店直推的话 + //门店回本前 拿100% 20%推荐费+50%门店费用(30%直接拿+20%新手任务完成)+ 30%回本补贴 + //门店回本后 拿70% 20%推荐费+50%门店费用(30%直接拿+20%新手任务完成) + + }else{ + //红娘推荐的话 + //门店回本前+红娘没有完成新手任务: 红娘直接拿20%+30%回本补贴+对照新手任务奖励 + //门店回本后: 红娘直接拿20%+30%回本补贴+对照新手任务奖励 + + } + } + + } + + /** + * 获得红娘推荐奖励 老政策 + */ + public void acquireMatchmakerJoinRecommendRewardOld(UserAcquireMatchmakerJoinRecommendRewardDto dto) { //红娘加盟订单 Order associateOrder = orderDao.selectById(dto.getAssociateOrderId()); if (Objects.nonNull(associateOrder)) {