diff --git a/dating-agency-mall-entity/pom.xml b/dating-agency-mall-entity/pom.xml
index 3bc4cec..0014c77 100644
--- a/dating-agency-mall-entity/pom.xml
+++ b/dating-agency-mall-entity/pom.xml
@@ -27,5 +27,9 @@
dating-agency-mall-constant
0.0.1-SNAPSHOT
+
+ cn.hutool
+ hutool-all
+
\ No newline at end of file
diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java
index db35643..b996eac 100644
--- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRewardReceiveRecord.java
+++ b/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 {
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 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());
+ }
+ }
}
diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMatchEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMatchEvent.java
new file mode 100644
index 0000000..5d3d5b3
--- /dev/null
+++ b/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 orderIdRelList;
+
+ private List rewardReceiveRecordList;
+
+ @Data
+ public static class MarriageBountyOrderRewardReceiveRecordEvent {
+
+ @ApiModelProperty("关联嘉宾")
+ private Long associatedMiId;
+
+ @ApiModelProperty("奖励类型")
+ private RewardTypeEnum rewardType;
+
+ @ApiModelProperty("领取人标识")
+ private Long receiver;
+
+ @ApiModelProperty("领取金额")
+ private BigDecimal receivedAmount;
+ }
+}
\ No newline at end of file
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMatchRewardDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMatchRewardDto.java
new file mode 100644
index 0000000..e029651
--- /dev/null
+++ b/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 orderIdRelList;
+
+}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java
index 99a4e00..3778211 100644
--- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java
+++ b/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);
+ }
+ }
}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java
index b6dc078..e185302 100644
--- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java
+++ b/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 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);
+ }
+ }
+ }
}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
index 5461c90..4c0b320 100644
--- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
+++ b/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 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 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;
+ }
+ }
}
diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java
index fe72658..11143ba 100644
--- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java
+++ b/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 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;
+ }
}