Browse Source

新政策

master
张彭杰 11 months ago
parent
commit
f4f21461d7
1 changed files with 88 additions and 2 deletions
  1. 90
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

90
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)) {

Loading…
Cancel
Save