Browse Source

玫瑰

release
张彭杰 4 months ago
parent
commit
fba929c9c0
10 changed files with 197 additions and 24 deletions
  1. 9
      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. 20
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/event/VirtualAccountCostGiftEvent.java
  4. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/walletaccount/user/WalletAccountUserCommandController.java
  5. 106
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java
  6. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java
  7. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  8. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java
  9. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java
  10. 57
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/virtualaccount/CostGiftRewardDomainService.java

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

@ -136,6 +136,8 @@ public enum RewardTypeEnum {
NON_OPERATING_MANAGEMENT_FEE_35(511, "非经营性质服务商管理费-35%"), NON_OPERATING_MANAGEMENT_FEE_35(511, "非经营性质服务商管理费-35%"),
//聊天收益 //聊天收益
VIRTUAL_ACCOUNT_WORTH(600, "玫瑰价值"),
CHAT_PROFIT_BY_CHAT_CARD(601, "聊天收益-聊天卡"), CHAT_PROFIT_BY_CHAT_CARD(601, "聊天收益-聊天卡"),
CHAT_PROFIT_BY_VIRTUAL_ACCOUNT(602, "聊天收益-玫瑰"), CHAT_PROFIT_BY_VIRTUAL_ACCOUNT(602, "聊天收益-玫瑰"),
@ -157,7 +159,12 @@ public enum RewardTypeEnum {
MATCHMAKER_FREE_GIFT_MAX_PCT(706, "免费红娘礼物收益最高百分比"), MATCHMAKER_FREE_GIFT_MAX_PCT(706, "免费红娘礼物收益最高百分比"),
MATCHMAKER_GIFT_LADDER_PCT(707, "红娘礼物收益阶梯百分比");
MATCHMAKER_GIFT_LADDER_PCT(707, "红娘礼物收益阶梯百分比"),
MATCHMAKER_PARTNER_RECOMMEND_COST_PCT(708, "高级红娘推荐消费收益百分比"),
MATCHMAKER_ONLINE_RECOMMEND_COST_PCT(709, "签约红娘推荐消费收益百分比"),
MATCHMAKER_TRAINEE_RECOMMEND_COST_PCT(710, "线上红娘推荐消费收益百分比"),
MATCHMAKER_FREE_RECOMMEND_COST_PCT(711, "实习红娘推荐消费收益百分比");
@EnumValue @EnumValue
@JsonValue @JsonValue

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

@ -34,6 +34,8 @@ public enum TradeTypeEnum {
GIFT_REWARD(112, "礼物收益"), GIFT_REWARD(112, "礼物收益"),
RECOMMEND_GIFT_REWARD(113, "邀请分成"),
PLATFORM_SERVICE_FEE(201, "平台服务费"), PLATFORM_SERVICE_FEE(201, "平台服务费"),
WITHDRAW(202, "提现"); WITHDRAW(202, "提现");

20
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/virtualaccount/event/VirtualAccountCostGiftEvent.java

@ -0,0 +1,20 @@
package com.qniao.dam.domian.aggregate.virtualaccount.event;
import com.qniao.domain.BaseDomainEvent;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class VirtualAccountCostGiftEvent extends BaseDomainEvent {
private Long id;
private Long userId;
private Integer costBalance;
private Long orderId;
}

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/walletaccount/user/WalletAccountUserCommandController.java

@ -1,7 +1,7 @@
package com.qniao.dam.api.command.walletaccount.user; package com.qniao.dam.api.command.walletaccount.user;
import com.qniao.dam.api.command.walletaccount.user.request.UserAcquireRewardAmountDto; import com.qniao.dam.api.command.walletaccount.user.request.UserAcquireRewardAmountDto;
import com.qniao.dam.application.handler.walletaccount.WalletAccountApplicationService;
import com.qniao.dam.application.service.walletaccount.WalletAccountApplicationService;
import com.qniao.framework.annotation.IgnoreResponseAdvice; import com.qniao.framework.annotation.IgnoreResponseAdvice;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;

106
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java

@ -0,0 +1,106 @@
package com.qniao.dam.application.handler.virtualaccount;
import com.google.common.eventbus.Subscribe;
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.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.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.virtualaccount.event.VirtualAccountCostGiftEvent;
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.persistent.dao.domain.MatchmakerDao;
import com.qniao.dam.query.matchmakermarriage.MatchmakerMarriageInformationQueryService;
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.matchmakermarriage.MatchmakerMarriageInformation;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collections;
import java.util.Objects;
@Component
@Slf4j
public class VirtualAccountEventHandler extends BaseApplicationService {
@Resource
private MatchmakerMarriageInformationQueryService matchmakerMarriageInformationQueryService;
@Resource
private MatchmakerDao matchmakerDao;
@Resource
private RewardConfigQueryService rewardConfigQueryService;
@Resource
private RevenueRewardQueryService revenueRewardQueryService;
@Resource
private WalletAccountQueryService walletAccountQueryService;
@Resource
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService;
@Subscribe
private void handle(VirtualAccountCostGiftEvent event) {
try {
MatchmakerMarriageInformation marriageInformation = matchmakerMarriageInformationQueryService.queryByRecommend(event.getUserId());
if (Objects.nonNull(marriageInformation)) {
BigDecimal pct = null;
Matchmaker matchmaker = matchmakerDao.selectById(marriageInformation.getMatchmakerId());
if (ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE.equals(matchmaker.getType())) {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_PARTNER_RECOMMEND_COST_PCT);
pct = new BigDecimal(rewardConfig.getValue());
} else if (ProductSubCategoryEnum.MATCHMAKER_ONLINE_FEE.equals(matchmaker.getType())) {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_ONLINE_RECOMMEND_COST_PCT);
pct = new BigDecimal(rewardConfig.getValue());
} else if (ProductSubCategoryEnum.MATCHMAKER_TRAINEE_FEE.equals(matchmaker.getType())) {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_TRAINEE_RECOMMEND_COST_PCT);
pct = new BigDecimal(rewardConfig.getValue());
} else if (ProductSubCategoryEnum.MATCHMAKER_FREE_FEE.equals(matchmaker.getType())) {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_FREE_RECOMMEND_COST_PCT);
pct = new BigDecimal(rewardConfig.getValue());
}
if (Objects.nonNull(pct)) {
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(matchmaker.getUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(matchmaker.getUserId());
}
//营收额
BigDecimal revenue = new BigDecimal(worthRewardConfig.getValue()).multiply(BigDecimal.valueOf(event.getCostBalance()))
.multiply(pct).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.RECOMMEND_GIFT_REWARD, TradeSceneEnum.ONLINE,
revenue, BigDecimal.valueOf(100), BigDecimal.ZERO, revenue, BigDecimal.valueOf(event.getCostBalance()));
//todo
revenueRewardRecord.setContent("邀请分成");
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(event.getOrderId(), BigDecimal.valueOf(event.getCostBalance()));
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 walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.RECOMMEND_GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
}
}
} catch (Exception e) {
log.error("花费送礼事件处理异常", e);
}
}
}

3
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/withdrawaudit/WithdrawAuditEventHandler.java

@ -1,8 +1,7 @@
package com.qniao.dam.application.handler.withdrawaudit; package com.qniao.dam.application.handler.withdrawaudit;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.qniao.dam.application.handler.walletaccount.WalletAccountApplicationService;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.application.service.walletaccount.WalletAccountApplicationService;
import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit; import com.qniao.dam.domain.aggregate.withdrawaudit.entity.WithdrawAudit;
import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus; import com.qniao.dam.domian.aggregate.withdrawaudit.constant.WithdrawAuditStatus;
import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditAuditedEvent; import com.qniao.dam.domian.aggregate.withdrawaudit.event.WithdrawAuditAuditedEvent;

13
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java

@ -34,6 +34,8 @@ import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService; import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -42,10 +44,11 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Service @Service
public class VirtualAccountApplicationService {
public class VirtualAccountApplicationService extends BaseApplicationService {
@Resource @Resource
private VirtualAccountAggregate virtualAccountAggregate; private VirtualAccountAggregate virtualAccountAggregate;
@ -189,7 +192,7 @@ public class VirtualAccountApplicationService {
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
costGiftRewardDomainService.handle(order, virtualAccount, revenueReward, walletAccount);
costGiftRewardDomainService.handle(order, virtualAccount, costBalance, revenueReward, walletAccount);
vo.setSuccess(true); vo.setSuccess(true);
return vo; return vo;
} }
@ -274,8 +277,9 @@ public class VirtualAccountApplicationService {
WalletAccountRecord anchorWalletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, anchorRevenue, true, anchorOriginalBalance, anchorWalletAccount.getTotalBalance()); WalletAccountRecord anchorWalletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, anchorRevenue, true, anchorOriginalBalance, anchorWalletAccount.getTotalBalance());
anchorWalletAccount.setRecordList(Collections.singletonList(anchorWalletAccountRecord)); anchorWalletAccount.setRecordList(Collections.singletonList(anchorWalletAccountRecord));
costGiftRewardDomainService.handle(order, virtualAccount, toRevenueReward, toWalletAccount, anchorRevenueReward, anchorWalletAccount);
List<BaseDomainEvent> eventList = costGiftRewardDomainService.handle(order, virtualAccount, costBalance, toRevenueReward, toWalletAccount, anchorRevenueReward, anchorWalletAccount);
vo.setSuccess(true); vo.setSuccess(true);
this.sendEvent(eventList);
return vo; return vo;
} }
@ -320,8 +324,9 @@ public class VirtualAccountApplicationService {
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance()); WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.GIFT_REWARD, revenue, true, originalBalance, walletAccount.getTotalBalance());
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord)); walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
costGiftRewardDomainService.handle(order, virtualAccount, revenueReward, walletAccount);
List<BaseDomainEvent> eventList = costGiftRewardDomainService.handle(order, virtualAccount, costBalance, revenueReward, walletAccount);
vo.setSuccess(true); vo.setSuccess(true);
this.sendEvent(eventList);
return vo; return vo;
} }

dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/walletaccount/WalletAccountApplicationService.java → dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java

@ -1,4 +1,4 @@
package com.qniao.dam.application.handler.walletaccount;
package com.qniao.dam.application.service.walletaccount;
import com.qniao.dam.api.command.walletaccount.user.request.UserAcquireRewardAmountDto; import com.qniao.dam.api.command.walletaccount.user.request.UserAcquireRewardAmountDto;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java

@ -4,6 +4,8 @@ import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.domain.aggregate.virtualaccount.repository.VirtualAccountRepository; import com.qniao.dam.domain.aggregate.virtualaccount.repository.VirtualAccountRepository;
import com.qniao.dam.domain.aggregate.virtualaccount.valobj.VirtualAccountRecord; import com.qniao.dam.domain.aggregate.virtualaccount.valobj.VirtualAccountRecord;
import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum; import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum;
import com.qniao.dam.domian.aggregate.virtualaccount.event.VirtualAccountCostGiftEvent;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -28,6 +30,11 @@ public class VirtualAccountAggregate {
repository.save(entity); repository.save(entity);
} }
public BaseDomainEvent costGift(VirtualAccount entity, Integer costBalance, Long orderId) {
repository.save(entity);
return new VirtualAccountCostGiftEvent(entity.getId(), entity.getUserId(), costBalance, orderId);
}
public void delete(Long id) { public void delete(Long id) {
repository.delete(id); repository.delete(id);
} }

57
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/virtualaccount/CostGiftRewardDomainService.java

@ -9,11 +9,15 @@ import com.qniao.dam.domain.aggregate.virtualaccount.VirtualAccountAggregate;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount; import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.Objects;
@Service @Service
public class CostGiftRewardDomainService { public class CostGiftRewardDomainService {
@ -28,42 +32,65 @@ public class CostGiftRewardDomainService {
private WalletAccountAggregate walletAccountAggregate; private WalletAccountAggregate walletAccountAggregate;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void handle(Order order,
VirtualAccount virtualAccount,
RevenueReward revenueReward,
WalletAccount walletAccount) {
public List<BaseDomainEvent> handle(Order order,
VirtualAccount virtualAccount,
Integer costBalance,
RevenueReward revenueReward,
WalletAccount walletAccount) {
List<BaseDomainEvent> eventList = new ArrayList<>();
orderAggregate.complete(order); orderAggregate.complete(order);
virtualAccountAggregate.edit(virtualAccount);
eventList.add(virtualAccountAggregate.costGift(virtualAccount, costBalance,order.getId()));
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount()); RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount());
revenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); revenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
revenueRewardAggregate.save(revenueReward); revenueRewardAggregate.save(revenueReward);
walletAccountAggregate.save(walletAccount);
if(Objects.nonNull(walletAccount)) {
walletAccount.getRecordList().forEach(record -> {
record.setAssociateId(revenueReward.getRecordList().get(0).getId());
});
walletAccountAggregate.save(walletAccount);
}
return eventList;
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void handle(Order order,
VirtualAccount virtualAccount,
RevenueReward toRevenueReward,
WalletAccount toWalletAccount,
RevenueReward anchorRevenueReward,
WalletAccount anchorWalletAccount) {
public List<BaseDomainEvent> handle(Order order,
VirtualAccount virtualAccount,
Integer costBalance,
RevenueReward toRevenueReward,
WalletAccount toWalletAccount,
RevenueReward anchorRevenueReward,
WalletAccount anchorWalletAccount) {
List<BaseDomainEvent> eventList = new ArrayList<>();
orderAggregate.complete(order); orderAggregate.complete(order);
virtualAccountAggregate.edit(virtualAccount);
eventList.add(virtualAccountAggregate.costGift(virtualAccount, costBalance, order.getId()));
RevenueRewardAssociateOrderRecord toAssociateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount()); RevenueRewardAssociateOrderRecord toAssociateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount());
toRevenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(toAssociateOrderRecord)); toRevenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(toAssociateOrderRecord));
revenueRewardAggregate.save(toRevenueReward); revenueRewardAggregate.save(toRevenueReward);
walletAccountAggregate.save(toWalletAccount);
if(Objects.nonNull(toWalletAccount)) {
toWalletAccount.getRecordList().forEach(record -> {
record.setAssociateId(toRevenueReward.getRecordList().get(0).getId());
});
walletAccountAggregate.save(toWalletAccount);
}
RevenueRewardAssociateOrderRecord anchorAssociateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount()); RevenueRewardAssociateOrderRecord anchorAssociateOrderRecord = RevenueRewardAssociateOrderRecord.build(order.getId(), order.getSettlementAmount());
anchorRevenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(anchorAssociateOrderRecord)); anchorRevenueReward.getRecordList().get(0).setAssociateOrderRecordList(Collections.singletonList(anchorAssociateOrderRecord));
revenueRewardAggregate.save(anchorRevenueReward); revenueRewardAggregate.save(anchorRevenueReward);
walletAccountAggregate.save(anchorWalletAccount);
if(Objects.nonNull(anchorWalletAccount)) {
anchorWalletAccount.getRecordList().forEach(record -> {
record.setAssociateId(anchorRevenueReward.getRecordList().get(0).getId());
});
walletAccountAggregate.save(anchorWalletAccount);
}
return eventList;
} }
} }
Loading…
Cancel
Save