|
|
|
@ -6,12 +6,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.google.common.eventbus.Subscribe; |
|
|
|
import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService; |
|
|
|
import com.qniao.dam.application.service.order.OrderApplicationService; |
|
|
|
import com.qniao.dam.application.service.reward.RewardApplicationService; |
|
|
|
import com.qniao.dam.application.service.right.RightApplicationService; |
|
|
|
import com.qniao.dam.application.service.virtualaccount.VirtualAccountApplicationService; |
|
|
|
import com.qniao.dam.domain.aggregate.activity.entity.Activity; |
|
|
|
import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; |
|
|
|
import com.qniao.dam.domain.aggregate.externalorder.ExternalOrderRelAggregate; |
|
|
|
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; |
|
|
|
import com.qniao.dam.domain.aggregate.ffpm.entity.FranchiseFeeProfitManagement; |
|
|
|
import com.qniao.dam.domain.aggregate.order.OrderAggregate; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.Order; |
|
|
|
import com.qniao.dam.domain.aggregate.order.entity.OrderItem; |
|
|
|
@ -42,6 +44,7 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; |
|
|
|
import com.qniao.dam.domian.aggregate.revenuereward.event.RevenueRewardUpdatedEvent; |
|
|
|
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.TradeSceneEnum; |
|
|
|
@ -54,6 +57,7 @@ import com.qniao.dam.query.matchmakermarriage.MatchmakerMarriageInformationQuery |
|
|
|
import com.qniao.dam.query.product.ProductQueryService; |
|
|
|
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; |
|
|
|
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; |
|
|
|
import com.qniao.dam.query.store.StoreQueryService; |
|
|
|
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; |
|
|
|
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; |
|
|
|
import com.qniao.das.domian.aggregate.matchmakermarriage.MatchmakerMarriageInformation; |
|
|
|
@ -61,6 +65,7 @@ import com.qniao.das.domian.aggregate.siteactivity.SiteActivity; |
|
|
|
import com.qniao.dau.application.UecServerApplicationService; |
|
|
|
import com.qniao.dau.application.request.PaidMatchmakerFeeBySdkDto; |
|
|
|
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; |
|
|
|
import com.qniao.dau.domain.aggregate.store.entity.Store; |
|
|
|
import com.qniao.dau.domian.aggregate.matchmakingcorner.event.MatchmakingCornerPaidMQ; |
|
|
|
import com.qniao.domain.BaseApplicationService; |
|
|
|
import com.qniao.domain.BaseDomainEvent; |
|
|
|
@ -124,6 +129,10 @@ public class OrderEventHandler extends BaseApplicationService { |
|
|
|
@Resource |
|
|
|
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService; |
|
|
|
@Resource |
|
|
|
private StoreQueryService storeQueryService; |
|
|
|
@Resource |
|
|
|
private OrderDao orderDao; |
|
|
|
@Resource |
|
|
|
private SnowFlakeUtil snowFlakeUtil; |
|
|
|
@Resource |
|
|
|
private AmqpTemplate amqpTemplate; |
|
|
|
@ -231,9 +240,9 @@ public class OrderEventHandler extends BaseApplicationService { |
|
|
|
BigDecimal revenue = rewardConfig.calculateReward(totalAmount); |
|
|
|
if (revenue.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.QZQ_RECOMMEND_GIFT_REWARD, TradeSceneEnum.ONLINE, |
|
|
|
revenue, new BigDecimal(rewardConfig.getValue()), BigDecimal.ZERO, revenue, order.getSettlementAmount()); |
|
|
|
revenueRewardRecord.setContent(order.getOrderBelongName() + "消费分成"); |
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount()); |
|
|
|
revenue, new BigDecimal(rewardConfig.getValue()), BigDecimal.ZERO, revenue, totalAmount); |
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(order.getOrderBelongName())); |
|
|
|
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), totalAmount); |
|
|
|
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); |
|
|
|
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); |
|
|
|
|
|
|
|
@ -247,15 +256,74 @@ public class OrderEventHandler extends BaseApplicationService { |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//门店区域分润 |
|
|
|
//站点分佣金 |
|
|
|
if (Objects.nonNull(matchmaker.getStoreId())) { |
|
|
|
TradeTypeEnum tradeType = TradeTypeEnum.QZQ_RECOMMEND_GIFT_REWARD; |
|
|
|
//门店收益 |
|
|
|
Store store = storeQueryService.queryById(matchmaker.getStoreId()); |
|
|
|
handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, totalAmount, order.getOrderBelongName(), |
|
|
|
order.getSettlementAmount(), Collections.singletonList(order.getId()), tradeType); |
|
|
|
//运营中心 |
|
|
|
if (Objects.nonNull(store.getOperationCenterOrgId())) { |
|
|
|
handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, totalAmount, order.getOrderBelongName(), |
|
|
|
order.getSettlementAmount(), Collections.singletonList(order.getId()), tradeType); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
} catch ( |
|
|
|
Exception e) { |
|
|
|
log.error("订单已完成事件处理异常", e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void handleAcquireReward(Long identityId, |
|
|
|
IdentityTypeEnum identityType, |
|
|
|
RewardTypeEnum rewardType, |
|
|
|
BigDecimal amount, |
|
|
|
String orderBelongName, |
|
|
|
BigDecimal totalAssociateOrderAmount, |
|
|
|
List<Long> orderIdRekList, |
|
|
|
TradeTypeEnum tradeType) { |
|
|
|
if (Objects.nonNull(identityId)) { |
|
|
|
synchronized (identityId.toString().intern()) { |
|
|
|
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(rewardType); |
|
|
|
if (Objects.nonNull(recommendRewardConfig)) { |
|
|
|
//收益信息 |
|
|
|
RevenueReward revenueReward = revenueRewardQueryService.queryByType(identityId, identityType); |
|
|
|
//营收额 |
|
|
|
BigDecimal revenue = recommendRewardConfig.calculateReward(amount); |
|
|
|
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, TradeSceneEnum.ONLINE, |
|
|
|
revenue, new BigDecimal(recommendRewardConfig.getValue()), BigDecimal.ZERO, revenue, totalAssociateOrderAmount); |
|
|
|
revenueRewardRecord.handleContent(Collections.singletonList(orderBelongName)); |
|
|
|
if (CollUtil.isNotEmpty(orderIdRekList)) { |
|
|
|
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>(); |
|
|
|
for (Long associateOrderId : orderIdRekList) { |
|
|
|
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(identityId, identityType); |
|
|
|
BigDecimal originalBalance = walletAccount.getTotalBalance(); |
|
|
|
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); |
|
|
|
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); |
|
|
|
WalletAccountRecord record = WalletAccountRecord.build(tradeType, revenue, true, originalBalance, walletAccount.getTotalBalance()); |
|
|
|
walletAccount.setRecordList(Collections.singletonList(record)); |
|
|
|
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private void giftSiteActivityOrder(Long externalId, Long userId, Long miId) { |
|
|
|
SiteActivity siteActivity = siteActivityDao.selectById(externalId); |
|
|
|
MarriageInformation marriageInformation = marriageInformationDao.selectById(miId); |
|
|
|
|