Browse Source

用户使用联系卡

master
张彭杰 1 month ago
parent
commit
4e029bd4e1
3 changed files with 93 additions and 3 deletions
  1. 2
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java
  2. 2
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java
  3. 92
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java

2
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java

@ -29,6 +29,8 @@ public enum RewardTypeEnum {
MATCHMAKER_RENEW_DISCOUNT(108, "红娘续费折扣"),
MATCHMAKER_RECOMMEND_COST_PCT(109, "红娘推荐消费收益百分比-趣招亲"),
/**
* 线上红娘
*/

2
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/walletaccount/constant/TradeTypeEnum.java

@ -46,6 +46,8 @@ public enum TradeTypeEnum {
CHANNEL_GIFT_REWARD(118, "直播礼物收益"),
QZQ_RECOMMEND_GIFT_REWARD(119, "邀请分成"),
PLATFORM_SERVICE_FEE(201, "平台服务费"),
WITHDRAW(202, "提现");

92
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java

@ -1,6 +1,7 @@
package com.qniao.dam.application.handler.order;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService;
@ -21,8 +22,15 @@ import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.repository.ProductSpecRepository;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domain.aggregate.purchaseproductrecord.vobj.PurchaseProductRecord;
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.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domain.aggregate.right.RightAggregate;
import com.qniao.dam.domain.aggregate.right.entity.Right;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderRelStatus;
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum;
import com.qniao.dam.domian.aggregate.order.constant.MatchmakerOrderTypeEnum;
@ -30,20 +38,29 @@ import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum;
import com.qniao.dam.domian.aggregate.order.event.ExternalOrderCompletedMQEvent;
import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent;
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.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dam.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.SiteActivityDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.*;
import com.qniao.dam.infrastructure.persistent.dao.purchaseproductrecord.PurchaseProductRecordDao;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
import com.qniao.dam.query.matchmakermarriage.MatchmakerMarriageInformationQueryService;
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.walletaccount.WalletAccountQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.das.domian.aggregate.matchmakermarriage.MatchmakerMarriageInformation;
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.domian.aggregate.matchmakingcorner.event.MatchmakingCornerPaidMQ;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
@ -95,6 +112,18 @@ public class OrderEventHandler extends BaseApplicationService {
@Resource
private PurchaseProductRecordDao purchaseProductRecordDao;
@Resource
private MatchmakerMarriageInformationQueryService marriageInformationQueryService;
@Resource
private MatchmakerDao matchmakerDao;
@Resource
private RewardConfigQueryService rewardConfigQueryService;
@Resource
private RevenueRewardQueryService revenueRewardQueryService;
@Resource
private WalletAccountQueryService walletAccountQueryService;
@Resource
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService;
@Resource
private SnowFlakeUtil snowFlakeUtil;
@Resource
private AmqpTemplate amqpTemplate;
@ -168,6 +197,63 @@ public class OrderEventHandler extends BaseApplicationService {
}
}
/**
* 订单分润处理
*/
@Subscribe
public void handle2(OrderCompletedEvent event) {
try {
Order order = orderRepository.load(event.getId());
//权益处理
if (CollUtil.isNotEmpty(order.getOrderItemList())) {
BigDecimal totalAmount = BigDecimal.ZERO;
for (OrderItem orderItem : order.getOrderItemList()) {
if (ProductMainCategoryEnum.CHAT_CARD.equals(orderItem.getMainCategory()) ||
ProductMainCategoryEnum.VIP.equals(orderItem.getMainCategory())) {
totalAmount = totalAmount.add(orderItem.getSettlementAmount());
}
}
if (totalAmount.compareTo(BigDecimal.ZERO) > 0) {
//推荐红娘分润
MatchmakerMarriageInformation matchmakerMarriageInformation = marriageInformationQueryService.queryByRecommend(order.getUserId());
if (Objects.nonNull(matchmakerMarriageInformation)) {
Matchmaker matchmaker = matchmakerDao.selectById(matchmakerMarriageInformation.getMatchmakerId());
if (Objects.nonNull(matchmaker) && matchmaker.checkEnable()) {
synchronized (matchmaker.getUserId().toString().intern()) {
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmaker.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(matchmaker.getUserId());
}
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_RECOMMEND_COST_PCT);
//营收额
BigDecimal revenue = rewardConfig.calculateReward(totalAmount);
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());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.QZQ_RECOMMEND_GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
}
}
}
}
}
} catch (Exception e) {
log.error("订单已完成事件处理异常", e);
}
}
private void giftSiteActivityOrder(Long externalId, Long userId, Long miId) {
SiteActivity siteActivity = siteActivityDao.selectById(externalId);
MarriageInformation marriageInformation = marriageInformationDao.selectById(miId);

Loading…
Cancel
Save