Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
5a599998c1
9 changed files with 283 additions and 16 deletions
  1. 4
      dating-agency-mall-entity/pom.xml
  2. 3
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java
  3. 18
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java
  4. 40
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMatchEvent.java
  5. 27
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMatchRewardDto.java
  6. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java
  7. 86
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java
  8. 68
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  9. 14
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java

4
dating-agency-mall-entity/pom.xml

@ -27,5 +27,9 @@
<artifactId>dating-agency-mall-constant</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
</dependencies>
</project>

3
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java

@ -26,6 +26,9 @@ public class MarriageBountyOrderRewardReceiveRecord extends ValueObject<Marriage
@ApiModelProperty("领取金额")
private BigDecimal receivedAmount;
@ApiModelProperty("关联嘉宾")
private transient Long associatedMiId;
public static MarriageBountyOrderRewardReceiveRecord build(RewardTypeEnum rewardType, Long receiver, BigDecimal receivedAmount) {
MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = new MarriageBountyOrderRewardReceiveRecord();
rewardReceiveRecord.setRewardType(rewardType);

18
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java

@ -1,5 +1,6 @@
package com.qniao.dam.domain.aggregate.walletaccount.valueobj;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.domain.ValueObject;
@ -9,6 +10,7 @@ import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
@Data
@EqualsAndHashCode(callSuper = true)
@ -38,14 +40,26 @@ public class WalletAccountRecord extends ValueObject<WalletAccountRecord> {
public static WalletAccountRecord build(TradeTypeEnum tradeType,
BigDecimal tradeAmount,
Boolean isIncome,
String content,
String remark) {
WalletAccountRecord record = new WalletAccountRecord();
record.setTradeType(tradeType);
record.setTradeAmount(tradeAmount);
record.setIsIncome(isIncome);
record.setContent(content);
record.setRemark(remark);
return record;
}
public void handleContent(List<String> elements) {
if (TradeTypeEnum.GUEST_CERTIFICATION_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,认证嘉宾{}", elements.toArray());
} else if (TradeTypeEnum.PUBLISH_MARRIAGE_BOUNTY_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,嘉宾{}发布悬赏", elements.toArray());
} else if (TradeTypeEnum.MATCH_MARRIAGE_BOUNTY_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,匹配嘉宾{}", elements.toArray());
} else if (TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.equals(tradeType)) {
content = StrUtil.format("推荐红娘{}入驻平台", elements.toArray());
} else if (TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(tradeType)) {
content = StrUtil.format("推荐嘉宾{}见面", elements.toArray());
}
}
}

40
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMatchEvent.java

@ -0,0 +1,40 @@
package com.qniao.dam.domian.aggregate.marriagebounty.event;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.domain.BaseDomainEvent;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class MarriageBountyOrderConfirmedMatchEvent extends BaseDomainEvent {
@ApiModelProperty("悬赏招亲订单标识")
private Long id;
@ApiModelProperty("悬赏招亲订单奖励标识")
private Long marriageBountyOrderRewardId;
private List<Long> orderIdRelList;
private List<MarriageBountyOrderRewardReceiveRecordEvent> rewardReceiveRecordList;
@Data
public static class MarriageBountyOrderRewardReceiveRecordEvent {
@ApiModelProperty("关联嘉宾")
private Long associatedMiId;
@ApiModelProperty("奖励类型")
private RewardTypeEnum rewardType;
@ApiModelProperty("领取人标识")
private Long receiver;
@ApiModelProperty("领取金额")
private BigDecimal receivedAmount;
}
}

27
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMatchRewardDto.java

@ -0,0 +1,27 @@
package com.qniao.dam.api.command.reward.user.request;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class AcquireMatchmakerConfirmMatchRewardDto {
@ApiModelProperty("关联嘉宾")
private Long associatedMiId;
@ApiModelProperty("奖励类型")
private RewardTypeEnum rewardType;
@ApiModelProperty("领取人标识")
private Long receiver;
@ApiModelProperty("领取金额")
private BigDecimal receivedAmount;
private List<Long> orderIdRelList;
}

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

@ -1,14 +1,18 @@
package com.qniao.dam.application.handler.marriagebounty;
import cn.hutool.core.collection.CollUtil;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMatchRewardDto;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMeetingRewardDto;
import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService;
import com.qniao.dam.application.service.reward.RewardApplicationService;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMatchEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMeetingEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedMQ;
import com.qniao.dam.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.constant.MqQueue;
import com.qniao.das.domian.aggregate.marriageseekingreward.event.MatchSuccessfullyEvent;
import com.qniao.das.domian.aggregate.marriageseekingreward.event.RewardSelectedGuestEvent;
import com.qniao.domain.BaseApplicationService;
import com.qniao.framework.utils.TypeConvertUtils;
@ -60,17 +64,48 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService {
}
}
@Subscribe
public void handle(MarriageBountyOrderConfirmedMatchEvent event) {
try {
//红娘获取奖励
if (Objects.nonNull(event.getMarriageBountyOrderRewardId()) && CollUtil.isNotEmpty(event.getRewardReceiveRecordList())) {
for (MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent rewardReceiveRecordEvent : event.getRewardReceiveRecordList()) {
AcquireMatchmakerConfirmMatchRewardDto confirmMatchRewardDto =
TypeConvertUtils.convert(rewardReceiveRecordEvent, AcquireMatchmakerConfirmMatchRewardDto.class);
confirmMatchRewardDto.setOrderIdRelList(event.getOrderIdRelList());
rewardApplicationService.acquireMatchmakerConfirmMatchReward(confirmMatchRewardDto);
}
}
} catch (Exception e) {
log.error("悬赏招亲订单确认pip事件处理异常", e);
}
}
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.REWARD_SELECTED_GUEST),
exchange = @Exchange(value = MqExchange.REWARD_SELECTED_GUEST,
type = ExchangeTypes.FANOUT)))
public void handle(RewardSelectedGuestEvent event) {
try {
//创建榜单
marriageBountyOrderApplicationService.confirmMeeting(event.getMarriageBountyOrderId(),event.getMatchmakerUserId(),event.getMiId());
//悬赏招亲确认见面
marriageBountyOrderApplicationService.confirmMeeting(event.getMarriageBountyOrderId(), event.getMatchmakerUserId(), event.getMiId());
log.error("接收到MQ事件:{}", event);
} catch (Exception e) {
log.error("悬赏招亲确认见面处理异常", e);
}
}
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.REWARD_MATCH_SUCCESSFULLY),
exchange = @Exchange(value = MqExchange.REWARD_MATCH_SUCCESSFULLY,
type = ExchangeTypes.FANOUT)))
public void handle(MatchSuccessfullyEvent event) {
try {
//悬赏招亲匹配成功
marriageBountyOrderApplicationService.confirmMatch(event.getMarriageBountyOrderId(), event.getRewardInviteUserId(), event.getRewardPublishMatchmakerUserId(),
event.getGuestsInviteMiId(), event.getGuestsInviteUserId(), event.getGuestsMatchmakerUserId());
log.error("接收到MQ事件:{}", event);
} catch (Exception e) {
log.error("悬赏招亲匹配成功处理异常", e);
}
}
}

86
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java

@ -18,6 +18,7 @@ import com.qniao.dam.domain.aggregate.paymentchannelorder.entity.PaymentChannelO
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder;
import com.qniao.dam.domain.aggregate.paymentorderrefund.entity.PaymentOrderRefund;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum;
import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum;
@ -27,6 +28,7 @@ import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService;
import com.qniao.dam.query.paymentchannelorder.PaymentChannelOrderQueryService;
import com.qniao.dam.query.paymentorder.PaymentOrderQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import com.qniao.framework.exception.BizException;
@ -55,6 +57,8 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
private PaymentChannelOrderQueryService paymentChannelOrderQueryService;
@Resource
private PaymentOrderRefundApplicationService paymentOrderRefundApplicationService;
@Resource
private RewardConfigQueryService rewardConfigQueryService;
public void save(Long orderId) {
Order order = orderRepository.load(orderId);
@ -159,8 +163,8 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
public void confirmMeeting(Long marriageBountyOrderId, Long receiver, Long meetingMiId) {
MarriageBountyOrder existMarriageBountyOrder = marriageBountyOrderRepository.load(marriageBountyOrderId);
if (Objects.nonNull(existMarriageBountyOrder) && MarriageBountyOrderStatusEnum.MATCHMAKING.equals(existMarriageBountyOrder.getStatus())) {
if (CollUtil.isNotEmpty(existMarriageBountyOrder.getOrderRewardList())&&
existMarriageBountyOrder.getOrderRewardList().stream().noneMatch(orderReward->meetingMiId.equals(orderReward.getMeetingMiId()))) {
if (CollUtil.isNotEmpty(existMarriageBountyOrder.getOrderRewardList()) &&
existMarriageBountyOrder.getOrderRewardList().stream().noneMatch(orderReward -> meetingMiId.equals(orderReward.getMeetingMiId()))) {
MarriageBountyOrderReward marriageBountyOrderReward = null;
for (MarriageBountyOrderReward orderReward : existMarriageBountyOrder.getOrderRewardList()) {
if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(orderReward.getRewardCategory())) {
@ -186,4 +190,82 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
}
}
/**
* 确认匹配
*
* @param marriageBountyOrderId 悬赏招亲订单
* @param rewardInviteUserId 榜单邀请用户的红娘用户
* @param rewardPublishMatchmakerUserId 榜单发布红娘用户
* @param guestsInviteUserId 嘉宾邀请用户的红娘用户
* @param guestsMatchmakerUserId 嘉宾邀请用户匹配榜单的红娘用户
*/
public void confirmMatch(Long marriageBountyOrderId,
Long rewardInviteUserId,
Long rewardPublishMatchmakerUserId,
Long guestsInviteMiId,
Long guestsInviteUserId,
Long guestsMatchmakerUserId) {
MarriageBountyOrder existMarriageBountyOrder = marriageBountyOrderRepository.load(marriageBountyOrderId);
if (Objects.nonNull(existMarriageBountyOrder) && MarriageBountyOrderStatusEnum.MATCHMAKING.equals(existMarriageBountyOrder.getStatus())) {
MarriageBountyOrderReward marriageBountyOrderReward = null;
for (MarriageBountyOrderReward orderReward : existMarriageBountyOrder.getOrderRewardList()) {
if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_RESULT_GIFT.equals(orderReward.getRewardCategory())) {
if (!orderReward.getIsReceive()) {
marriageBountyOrderReward = orderReward;
break;
}
}
}
if (Objects.nonNull(marriageBountyOrderReward)) {
MarriageBountyOrder marriageBountyOrder = new MarriageBountyOrder();
marriageBountyOrder.setId(marriageBountyOrderId);
marriageBountyOrderReward.setIsReceive(true);
List<MarriageBountyOrderRewardReceiveRecord> rewardReceiveRecordList = new ArrayList<>();
//分润 嘉宾实名认证
RewardConfig guestCertificationReward = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.GUEST_CERTIFICATION);
if (Objects.nonNull(guestCertificationReward)) {
if (Objects.nonNull(rewardInviteUserId)) {
BigDecimal receivedAmount = guestCertificationReward.calculate(marriageBountyOrderReward.getRewardAmount());
MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = MarriageBountyOrderRewardReceiveRecord.build(
RewardTypeEnum.GUEST_CERTIFICATION, rewardInviteUserId, receivedAmount);
rewardReceiveRecord.setAssociatedMiId(existMarriageBountyOrder.getMiId());
rewardReceiveRecordList.add(rewardReceiveRecord);
}
if (Objects.nonNull(guestsInviteUserId)) {
BigDecimal receivedAmount = guestCertificationReward.calculate(marriageBountyOrderReward.getRewardAmount());
MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = MarriageBountyOrderRewardReceiveRecord.build(
RewardTypeEnum.GUEST_CERTIFICATION, guestsInviteUserId, receivedAmount);
rewardReceiveRecord.setAssociatedMiId(guestsInviteMiId);
rewardReceiveRecordList.add(rewardReceiveRecord);
}
}
//分润 发布悬赏招亲
RewardConfig publishMarriageBountyReward = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY);
if (Objects.nonNull(publishMarriageBountyReward)) {
if (Objects.nonNull(rewardPublishMatchmakerUserId)) {
BigDecimal receivedAmount = guestCertificationReward.calculate(marriageBountyOrderReward.getRewardAmount());
MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = MarriageBountyOrderRewardReceiveRecord.build(
RewardTypeEnum.PUBLISH_MARRIAGE_BOUNTY, rewardPublishMatchmakerUserId, receivedAmount);
rewardReceiveRecord.setAssociatedMiId(existMarriageBountyOrder.getMiId());
rewardReceiveRecordList.add(rewardReceiveRecord);
}
}
//分润 发布悬赏招亲
RewardConfig matchMarriageBountyReward = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCH_MARRIAGE_BOUNTY);
if (Objects.nonNull(matchMarriageBountyReward)) {
if (Objects.nonNull(guestsMatchmakerUserId)) {
BigDecimal receivedAmount = guestCertificationReward.calculate(marriageBountyOrderReward.getRewardAmount());
MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = MarriageBountyOrderRewardReceiveRecord.build(
RewardTypeEnum.MATCH_MARRIAGE_BOUNTY, guestsMatchmakerUserId, receivedAmount);
rewardReceiveRecord.setAssociatedMiId(guestsInviteMiId);
rewardReceiveRecordList.add(rewardReceiveRecord);
}
}
marriageBountyOrderReward.setRewardReceiveRecordList(rewardReceiveRecordList);
marriageBountyOrder.setUpdateOrderRewardList(Collections.singletonList(marriageBountyOrderReward));
BaseDomainEvent event = marriageBountyOrderAggregate.confirmMatch(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList());
this.sendEvent(event);
}
}
}
}

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

@ -2,8 +2,10 @@ package com.qniao.dam.application.service.reward;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMatchRewardDto;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMeetingRewardDto;
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto;
import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
@ -25,10 +27,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;
@Service
public class RewardApplicationService {
@ -59,11 +58,11 @@ public class RewardApplicationService {
walletAccount = WalletAccount.init(dto.getInitiatorUserId());
}
BigDecimal rewardAmount = rewardConfig.calculate(associateOrder.getSettlementAmount());
String content = "推荐红娘" + (StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : "") + "入驻平台";
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardAmount));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE,
rewardAmount, true, content, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc());
rewardAmount, true, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc());
record.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : ""));
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
record.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
walletAccount.setRecordList(Collections.singletonList(record));
@ -83,13 +82,43 @@ public class RewardApplicationService {
}
BigDecimal rewardAmount = dto.getReceivedAmount();
MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getMeetingMiId());
String content = "推荐嘉宾" + meetingMi.getNickName() + StrUtil.SPACE + meetingMi.getGenderValue() + "见面";
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardAmount));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE,
rewardAmount, true, content, TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE.getDesc());
rewardAmount, true, TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE.getDesc());
record.handleContent(Collections.singletonList(meetingMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<WalletAccountAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
associateOrderRecordList.add(associateOrderRecord);
}
record.setAssociateOrderRecordList(associateOrderRecordList);
}
walletAccount.setRecordList(Collections.singletonList(record));
walletAccountAggregate.save(walletAccount);
}
}
/**
* 确认匹配
*/
public void acquireMatchmakerConfirmMatchReward(AcquireMatchmakerConfirmMatchRewardDto dto) {
synchronized (dto.getReceiver().toString().intern()) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
}
BigDecimal rewardAmount = dto.getReceivedAmount();
MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardAmount));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
TradeTypeEnum tradeType = transform(dto.getRewardType());
WalletAccountRecord record = WalletAccountRecord.build(tradeType,
rewardAmount, true, Objects.nonNull(tradeType) ? tradeType.getDesc() : null);
record.handleContent(Collections.singletonList(associatedMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<WalletAccountAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
@ -104,4 +133,23 @@ public class RewardApplicationService {
walletAccountAggregate.save(walletAccount);
}
}
private TradeTypeEnum transform(RewardTypeEnum rewardType) {
switch (rewardType) {
case GUEST_CERTIFICATION:
return TradeTypeEnum.GUEST_CERTIFICATION_FEE;
case PUBLISH_MARRIAGE_BOUNTY:
return TradeTypeEnum.PUBLISH_MARRIAGE_BOUNTY_FEE;
case MATCH_MARRIAGE_BOUNTY:
return TradeTypeEnum.MATCH_MARRIAGE_BOUNTY_FEE;
case MATCHMAKER_JOIN_RECOMMEND:
return TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE;
case MARRIAGE_BOUNTY_MEETING_FEE:
return TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE;
case PLATFORM_SERVICE_FEE:
return TradeTypeEnum.PLATFORM_SERVICE_FEE;
default:
return null;
}
}
}

14
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java

@ -8,6 +8,7 @@ import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrde
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRewardReceiveRecord;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMatchEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMeetingEvent;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedEvent;
import com.qniao.domain.BaseDomainEvent;
@ -60,4 +61,17 @@ public class MarriageBountyOrderAggregate {
event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList()));
return event;
}
public BaseDomainEvent confirmMatch(MarriageBountyOrder marriageBountyOrder, List<MarriageBountyOrderRel> orderRelList) {
marriageBountyOrder.setStatus(MarriageBountyOrderStatusEnum.MATCH_SUCCESS);
marriageBountyOrderRepository.save(marriageBountyOrder);
MarriageBountyOrderConfirmedMatchEvent event = new MarriageBountyOrderConfirmedMatchEvent();
event.setId(marriageBountyOrder.getId());
MarriageBountyOrderReward marriageBountyOrderReward = marriageBountyOrder.getUpdateOrderRewardList().get(0);
event.setMarriageBountyOrderRewardId(marriageBountyOrderReward.getId());
event.setRewardReceiveRecordList(TypeConvertUtils.convert(marriageBountyOrderReward.getRewardReceiveRecordList(),
MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent.class));
event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList()));
return event;
}
}
Loading…
Cancel
Save