Browse Source

红娘续费

master
张彭杰 1 year ago
parent
commit
909cf355d0
2 changed files with 161 additions and 149 deletions
  1. 36
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java
  2. 274
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

36
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java

@ -26,6 +26,7 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; 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.MatchmakerDao;
import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService;
import com.qniao.dam.query.matchmaker.MatchmakerQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.das.domian.aggregate.marriageseekingreward.event.MatchSuccessfullyEvent; import com.qniao.das.domian.aggregate.marriageseekingreward.event.MatchSuccessfullyEvent;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
@ -64,6 +65,8 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
private MatchmakerDao matchmakerDao; private MatchmakerDao matchmakerDao;
@Resource @Resource
private MarriageInformationDao marriageInformationDao; private MarriageInformationDao marriageInformationDao;
@Resource
private MatchmakerQueryService matchmakerQueryService;
@Subscribe @Subscribe
public void handle(MarriageBountyOrderCreatedEvent event) { public void handle(MarriageBountyOrderCreatedEvent event) {
@ -155,23 +158,26 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
if (Objects.nonNull(event.getMarriageBountyOrderRewardId()) && CollUtil.isNotEmpty(event.getRewardReceiveRecordList())) { if (Objects.nonNull(event.getMarriageBountyOrderRewardId()) && CollUtil.isNotEmpty(event.getRewardReceiveRecordList())) {
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectById(event.getId()); MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectById(event.getId());
for (MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent rewardReceiveRecordEvent : event.getRewardReceiveRecordList()) { for (MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent rewardReceiveRecordEvent : event.getRewardReceiveRecordList()) {
if (Objects.nonNull(rewardReceiveRecordEvent.getReceivedAmount()) && rewardReceiveRecordEvent.getReceivedAmount().compareTo(BigDecimal.ZERO) > 0) {
//处理积分奖励
//积分奖励
MarriageInformation marriageInformation = marriageInformationDao.selectById(marriageBountyOrder.getMiId());
PointRewardCreatedMQ mq = new PointRewardCreatedMQ();
mq.setOwnId(rewardReceiveRecordEvent.getReceiver());
mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
mq.setPointType(transformPointRewardConfigType(rewardReceiveRecordEvent.getRewardType()));
mq.setContent("完成榜单:" + marriageInformation.getNickName() + "榜单");
mq.setIsIncome(true);
mq.setAssociateId(event.getId());
mq.setAmount(rewardReceiveRecordEvent.getReceivedAmount());
// 发送mq事件
amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq);
Matchmaker matchmaker = matchmakerQueryService.queryByUserId(rewardReceiveRecordEvent.getReceiver());
//邀请红娘在有效期内才能拿到佣金+积分奖励
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) {
if (Objects.nonNull(rewardReceiveRecordEvent.getReceivedAmount()) && rewardReceiveRecordEvent.getReceivedAmount().compareTo(BigDecimal.ZERO) > 0) {
//处理积分奖励
//积分奖励
MarriageInformation marriageInformation = marriageInformationDao.selectById(marriageBountyOrder.getMiId());
PointRewardCreatedMQ mq = new PointRewardCreatedMQ();
mq.setOwnId(rewardReceiveRecordEvent.getReceiver());
mq.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
mq.setPointType(transformPointRewardConfigType(rewardReceiveRecordEvent.getRewardType()));
mq.setContent("完成榜单:" + marriageInformation.getNickName() + "榜单");
mq.setIsIncome(true);
mq.setAssociateId(event.getId());
mq.setAmount(rewardReceiveRecordEvent.getReceivedAmount());
// 发送mq事件
amqpTemplate.convertAndSend(MqExchange.POINT_REWARD_CREATED, null, mq);
}
} }
} }
} }
} catch (Exception e) { } catch (Exception e) {
log.error("悬赏招亲订单确认匹配事件处理异常", e); log.error("悬赏招亲订单确认匹配事件处理异常", e);

274
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

@ -48,10 +48,6 @@ public class RewardApplicationService {
@Resource @Resource
private WalletAccountQueryService walletAccountQueryService; private WalletAccountQueryService walletAccountQueryService;
@Resource @Resource
private WalletAccountAggregate walletAccountAggregate;
@Resource
private OrderQueryService orderQueryService;
@Resource
private MarriageInformationDao marriageInformationDao; private MarriageInformationDao marriageInformationDao;
@Resource @Resource
private OrderDao orderDao; private OrderDao orderDao;
@ -78,43 +74,47 @@ public class RewardApplicationService {
//推荐的红娘 //推荐的红娘
if (Objects.nonNull(dto.getInitiatorUserId())) { if (Objects.nonNull(dto.getInitiatorUserId())) {
synchronized (dto.getInitiatorUserId().toString().intern()) { 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);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE,
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));
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,
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);
//钱包信息
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);
//积分奖励
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);
//积分奖励
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);
}
} }
} }
} }
@ -181,60 +181,63 @@ public class RewardApplicationService {
BigDecimal serviceFee = BigDecimal.ZERO; BigDecimal serviceFee = BigDecimal.ZERO;
TradeTypeEnum tradeType = transform(dto.getRewardType()); TradeTypeEnum tradeType = transform(dto.getRewardType());
MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
synchronized (dto.getReceiver().toString().intern()) {
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(dto.getReceiver());
}
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
serviceFee = serviceFeeRewardConfig.calculateReward(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType,
revenue, BigDecimal.valueOf(100), new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount());
revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
associateOrderRecordList.add(associateOrderRecord);
Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver());
//邀请红娘在有效期内才能拿到佣金+积分奖励
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) {
synchronized (dto.getReceiver().toString().intern()) {
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(dto.getReceiver());
} }
revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList);
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
serviceFee = serviceFeeRewardConfig.calculateReward(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType,
revenue, BigDecimal.valueOf(100), new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount());
revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
associateOrderRecordList.add(associateOrderRecord);
}
revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList);
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
} }
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
} }
}
Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver());
if (Objects.nonNull(matchmaker) && Objects.nonNull(matchmaker.getStoreId())) {
//门店收益
Store store = storeQueryService.queryById(matchmaker.getStoreId());
handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, meetingMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
//门店升级收益
if (Objects.nonNull(store.getParentStoreId())) {
Store parentStore = storeQueryService.queryById(store.getParentStoreId());
handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, meetingMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
}
//运营中心
if (Objects.nonNull(store.getOperationCenterOrgId())) {
handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, meetingMi,
if (Objects.nonNull(matchmaker.getStoreId())) {
//门店收益
Store store = storeQueryService.queryById(matchmaker.getStoreId());
handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, meetingMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
//门店升级收益
if (Objects.nonNull(store.getParentStoreId())) {
Store parentStore = storeQueryService.queryById(store.getParentStoreId());
handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, meetingMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
}
//运营中心
if (Objects.nonNull(store.getOperationCenterOrgId())) {
handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, meetingMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
}
} }
} }
} }
@ -289,57 +292,60 @@ public class RewardApplicationService {
BigDecimal serviceFee = BigDecimal.ZERO; BigDecimal serviceFee = BigDecimal.ZERO;
MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
TradeTypeEnum tradeType = transform(dto.getRewardType()); TradeTypeEnum tradeType = transform(dto.getRewardType());
synchronized (dto.getReceiver().toString().intern()) {
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
serviceFee = serviceFeeRewardConfig.calculateReward(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, dto.getRevenuePct(),
new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount());
revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
associateOrderRecordList.add(associateOrderRecord);
Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver());
//邀请红娘在有效期内才能拿到佣金+积分奖励
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) {
synchronized (dto.getReceiver().toString().intern()) {
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
serviceFee = serviceFeeRewardConfig.calculateReward(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, dto.getRevenuePct(),
new BigDecimal(serviceFeeRewardConfig.getValue()), earnings, dto.getTotalAssociateOrderAmount());
revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
associateOrderRecordList.add(associateOrderRecord);
}
revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList);
} }
revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList);
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(tradeType, earnings, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
}
} }
}
Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver());
if (Objects.nonNull(matchmaker) && Objects.nonNull(matchmaker.getStoreId())) {
//门店收益
Store store = storeQueryService.queryById(matchmaker.getStoreId());
handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, associatedMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
//门店升级收益
if (Objects.nonNull(store.getParentStoreId())) {
Store parentStore = storeQueryService.queryById(store.getParentStoreId());
handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, associatedMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
}
//运营中心
if (Objects.nonNull(store.getOperationCenterOrgId())) {
handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, associatedMi,
if (Objects.nonNull(matchmaker.getStoreId())) {
//门店收益
Store store = storeQueryService.queryById(matchmaker.getStoreId());
handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, associatedMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
//门店升级收益
if (Objects.nonNull(store.getParentStoreId())) {
Store parentStore = storeQueryService.queryById(store.getParentStoreId());
handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, associatedMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
}
//运营中心
if (Objects.nonNull(store.getOperationCenterOrgId())) {
handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, associatedMi,
dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType);
}
} }
} }
} }

Loading…
Cancel
Save