From de6bb89270f0ba37b8c52d27cc5190ac88297ab1 Mon Sep 17 00:00:00 2001 From: Derran Date: Wed, 8 May 2024 10:35:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...riageBountyOrderConfirmedMeetingEvent.java | 25 +++++--- .../MarriageBountyOrderEventHandle.java | 24 ++++--- ...MarriageBountyOrderApplicationService.java | 62 +++++++++++++++++-- .../MarriageBountyOrderAggregate.java | 9 +-- 4 files changed, 90 insertions(+), 30 deletions(-) diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMeetingEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMeetingEvent.java index c3fd48a..d0dad5b 100644 --- a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMeetingEvent.java +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMeetingEvent.java @@ -17,18 +17,25 @@ public class MarriageBountyOrderConfirmedMeetingEvent extends BaseDomainEvent { @ApiModelProperty("悬赏招亲订单奖励标识") private Long marriageBountyOrderRewardId; - @ApiModelProperty("见面嘉宾标识") - private Long meetingMiId; + private List orderIdRelList; - @ApiModelProperty("奖励类型") - private RewardTypeEnum rewardType; + private List rewardReceiveRecordList; - @ApiModelProperty("领取人标识") - private Long receiver; - @ApiModelProperty("领取金额") - private BigDecimal receivedAmount; + @Data + public static class MarriageBountyOrderRewardReceiveRecordEvent { - private List orderIdRelList; + @ApiModelProperty("关联嘉宾") + private Long associatedMiId; + + @ApiModelProperty("奖励类型") + private RewardTypeEnum rewardType; + + @ApiModelProperty("领取人标识") + private Long receiver; + + @ApiModelProperty("领取金额") + private BigDecimal receivedAmount; + } } 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 f8d7913..60c2a58 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 @@ -55,9 +55,14 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService { public void handle(MarriageBountyOrderConfirmedMeetingEvent event) { try { //红娘获取奖励 - if (Objects.nonNull(event.getMarriageBountyOrderRewardId())) { - AcquireMatchmakerConfirmMeetingRewardDto confirmMeetingRewardDto = TypeConvertUtils.convert(event, AcquireMatchmakerConfirmMeetingRewardDto.class); - rewardApplicationService.acquireMatchmakerConfirmMeetingReward(confirmMeetingRewardDto); + if (Objects.nonNull(event.getMarriageBountyOrderRewardId()) && CollUtil.isNotEmpty(event.getRewardReceiveRecordList())) { + for (MarriageBountyOrderConfirmedMeetingEvent.MarriageBountyOrderRewardReceiveRecordEvent rewardReceiveRecordEvent : event.getRewardReceiveRecordList()) { + AcquireMatchmakerConfirmMeetingRewardDto confirmMeetingRewardDto = + TypeConvertUtils.convert(rewardReceiveRecordEvent, AcquireMatchmakerConfirmMeetingRewardDto.class); + rewardApplicationService.acquireMatchmakerConfirmMeetingReward(confirmMeetingRewardDto); + confirmMeetingRewardDto.setOrderIdRelList(event.getOrderIdRelList()); + rewardApplicationService.acquireMatchmakerConfirmMeetingReward(confirmMeetingRewardDto); + } } } catch (Exception e) { log.error("悬赏招亲订单确认见面事件处理异常", e); @@ -79,7 +84,7 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService { marriageBountyOrderApplicationService.refund(event.getId()); } } catch (Exception e) { - log.error("悬赏招亲订单确认pip事件处理异常", e); + log.error("悬赏招亲订单确认匹配事件处理异常", e); } } @@ -87,11 +92,12 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService { @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.REWARD_SELECTED_GUEST), exchange = @Exchange(value = MqExchange.REWARD_SELECTED_GUEST, type = ExchangeTypes.FANOUT))) - public void handle(RewardSelectedGuestEvent event) { + public void handleConfirmMeeting(MatchSuccessfullyEvent event) { try { //悬赏招亲确认见面 - marriageBountyOrderApplicationService.confirmMeeting(event.getMarriageBountyOrderId(), event.getMatchmakerUserId(), event.getMiId()); - log.error("接收到MQ事件:{}", event); + marriageBountyOrderApplicationService.confirmMeeting(event.getMarriageBountyOrderId(), event.getRewardInviteUserId(), event.getRewardPublishMatchmakerUserId(), + event.getGuestsInviteMiId(), event.getGuestsInviteUserId(), event.getGuestsMatchmakerUserId()); + log.error("接收到悬赏招亲确认见面事件:{}", event); } catch (Exception e) { log.error("悬赏招亲确认见面处理异常", e); } @@ -100,12 +106,12 @@ public class MarriageBountyOrderEventHandle extends BaseApplicationService { @RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.REWARD_MATCH_SUCCESSFULLY), exchange = @Exchange(value = MqExchange.REWARD_MATCH_SUCCESSFULLY, type = ExchangeTypes.FANOUT))) - public void handle(MatchSuccessfullyEvent event) { + public void handleConfirmMatch(MatchSuccessfullyEvent event) { try { //悬赏招亲匹配成功 marriageBountyOrderApplicationService.confirmMatch(event.getMarriageBountyOrderId(), event.getRewardInviteUserId(), event.getRewardPublishMatchmakerUserId(), event.getGuestsInviteMiId(), event.getGuestsInviteUserId(), event.getGuestsMatchmakerUserId()); - log.error("接收到MQ事件:{}", event); + log.error("接收到悬赏招亲匹配成功事件:{}", 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 4c22885..9a95d00 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 @@ -161,12 +161,23 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic /** * 悬赏招亲 确认见面 领取奖励 + * + * @param marriageBountyOrderId 悬赏招亲订单 + * @param rewardInviteUserId 榜单邀请用户的红娘用户 + * @param rewardPublishMatchmakerUserId 榜单发布红娘用户 + * @param guestsInviteUserId 嘉宾邀请用户的红娘用户 + * @param guestsMatchmakerUserId 嘉宾邀请用户匹配榜单的红娘用户 */ - public void confirmMeeting(Long marriageBountyOrderId, Long receiver, Long meetingMiId) { + public void confirmMeeting(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())) { if (CollUtil.isNotEmpty(existMarriageBountyOrder.getOrderRewardList()) && - existMarriageBountyOrder.getOrderRewardList().stream().noneMatch(orderReward -> meetingMiId.equals(orderReward.getMeetingMiId()))) { + existMarriageBountyOrder.getOrderRewardList().stream().noneMatch(orderReward -> guestsInviteMiId.equals(orderReward.getMeetingMiId()))) { MarriageBountyOrderReward marriageBountyOrderReward = null; for (MarriageBountyOrderReward orderReward : existMarriageBountyOrder.getOrderRewardList()) { if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(orderReward.getRewardCategory())) { @@ -180,10 +191,49 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic MarriageBountyOrder marriageBountyOrder = new MarriageBountyOrder(); marriageBountyOrder.setId(marriageBountyOrderId); marriageBountyOrderReward.setIsReceive(true); - marriageBountyOrderReward.setMeetingMiId(meetingMiId); - MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = MarriageBountyOrderRewardReceiveRecord.build( - RewardTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE, receiver, marriageBountyOrderReward.getRewardAmount()); - marriageBountyOrderReward.setRewardReceiveRecordList(Collections.singletonList(rewardReceiveRecord)); + marriageBountyOrderReward.setMeetingMiId(guestsInviteMiId); + 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.confirmMeeting(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList()); this.sendEvent(event); 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 11143ba..6999655 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 @@ -52,12 +52,9 @@ public class MarriageBountyOrderAggregate { MarriageBountyOrderConfirmedMeetingEvent event = new MarriageBountyOrderConfirmedMeetingEvent(); event.setId(marriageBountyOrder.getId()); MarriageBountyOrderReward marriageBountyOrderReward = marriageBountyOrder.getUpdateOrderRewardList().get(0); - MarriageBountyOrderRewardReceiveRecord rewardReceiveRecord = marriageBountyOrderReward.getRewardReceiveRecordList().get(0); - event.setMarriageBountyOrderRewardId(rewardReceiveRecord.getMarriageBountyOrderRewardId()); - event.setMeetingMiId(marriageBountyOrderReward.getMeetingMiId()); - event.setRewardType(rewardReceiveRecord.getRewardType()); - event.setReceiver(rewardReceiveRecord.getReceiver()); - event.setReceivedAmount(rewardReceiveRecord.getReceivedAmount()); + event.setMarriageBountyOrderRewardId(marriageBountyOrderReward.getId()); + event.setRewardReceiveRecordList(TypeConvertUtils.convert(marriageBountyOrderReward.getRewardReceiveRecordList(), + MarriageBountyOrderConfirmedMeetingEvent.MarriageBountyOrderRewardReceiveRecordEvent.class)); event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList())); return event; }