From 90dd0c691107be2dcd122101e02137f8f59e78fe Mon Sep 17 00:00:00 2001 From: Derran Date: Wed, 29 Apr 2026 17:52:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=A8=98=E7=9B=B4=E6=92=AD=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gmpi/entity/GuildMemberProfitItem.java | 16 ++++++ .../GuildMemberProfitItemCreatedEvent.java | 13 +++++ .../GuildMemberProfitItemEventHandler.java | 49 +++++++++++++++++++ .../gmpi/GuildMemberProfitItemAggregate.java | 5 +- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/gmpi/event/GuildMemberProfitItemCreatedEvent.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/gmpi/GuildMemberProfitItemEventHandler.java diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java index 7ddfc0e..15c7545 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/gmpi/entity/GuildMemberProfitItem.java @@ -38,4 +38,20 @@ public class GuildMemberProfitItem extends Entity { @ApiModelProperty("收益记录ID") private Long revenueRewardRecordId; + public static GuildMemberProfitItem build(Long guildId, + Long userId, + LiveMatchmakerTypeEnum matchmakerType, + TradeTypeEnum tradeType, + BigDecimal earnings, + Long revenueRewardRecordId) { + GuildMemberProfitItem entity = new GuildMemberProfitItem(); + entity.setGuildId(guildId); + entity.setUserId(userId); + entity.setMatchmakerType(matchmakerType); + entity.setTradeType(tradeType); + entity.setEarnings(earnings); + entity.setRevenueRewardRecordId(revenueRewardRecordId); + return entity; + } + } diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/gmpi/event/GuildMemberProfitItemCreatedEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/gmpi/event/GuildMemberProfitItemCreatedEvent.java new file mode 100644 index 0000000..fe27763 --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/gmpi/event/GuildMemberProfitItemCreatedEvent.java @@ -0,0 +1,13 @@ +package com.qniao.dam.domian.aggregate.gmpi.event; + +import com.qniao.domain.BaseDomainEvent; +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class GuildMemberProfitItemCreatedEvent extends BaseDomainEvent { + + private Long id; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/gmpi/GuildMemberProfitItemEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/gmpi/GuildMemberProfitItemEventHandler.java new file mode 100644 index 0000000..e4e69d3 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/gmpi/GuildMemberProfitItemEventHandler.java @@ -0,0 +1,49 @@ +package com.qniao.dam.application.handler.gmpi; + +import com.google.common.eventbus.Subscribe; +import com.qniao.dam.domain.aggregate.gmpi.GuildMemberProfitItemAggregate; +import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem; +import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; +import com.qniao.dam.domian.aggregate.revenuereward.event.RevenueRewardRecordCreatedEvent; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao; +import com.qniao.dam.query.livematchmaker.LiveMatchmakerQueryService; +import com.qniao.dau.domain.aggregate.livematchmaker.entity.LiveMatchmaker; +import com.qniao.domain.BaseApplicationService; +import com.qniao.domain.BaseDomainEvent; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Objects; + +@Component +@Slf4j +public class GuildMemberProfitItemEventHandler extends BaseApplicationService { + + @Resource + private RevenueRewardDao revenueRewardDao; + @Resource + private LiveMatchmakerQueryService liveMatchmakerQueryService; + @Resource + private GuildMemberProfitItemAggregate guildMemberProfitItemAggregate; + + @Subscribe + private void handle(RevenueRewardRecordCreatedEvent event) { + try { + RevenueReward revenueReward = revenueRewardDao.selectById(event.getRevenueRewardId()); + if (IdentityTypeEnum.INDIVIDUAL.equals(revenueReward.getIdentityType())) { + LiveMatchmaker liveMatchmaker = liveMatchmakerQueryService.queryByUserId(revenueReward.getUserId()); + if (Objects.nonNull(liveMatchmaker) && Objects.nonNull(liveMatchmaker.getGuildId())) { + GuildMemberProfitItem item = GuildMemberProfitItem.build(liveMatchmaker.getGuildId(), liveMatchmaker.getUserId(), + liveMatchmaker.getType(), event.getTradeType(), event.getRevenue(), event.getId()); + BaseDomainEvent guildMemberProfitItemEvent = guildMemberProfitItemAggregate.create(item); + this.sendEvent(guildMemberProfitItemEvent); + } + } + } catch (Exception e) { + log.error("收益明细记录已创建事件处理异常", e); + } + } + +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java index e4d0858..59f117d 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/gmpi/GuildMemberProfitItemAggregate.java @@ -2,6 +2,8 @@ package com.qniao.dam.domain.aggregate.gmpi; import com.qniao.dam.domain.aggregate.gmpi.entity.GuildMemberProfitItem; import com.qniao.dam.domain.aggregate.gmpi.repository.GuildMemberProfitItemRepository; +import com.qniao.dam.domian.aggregate.gmpi.event.GuildMemberProfitItemCreatedEvent; +import com.qniao.domain.BaseDomainEvent; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -17,8 +19,9 @@ public class GuildMemberProfitItemAggregate { @Resource private GuildMemberProfitItemRepository repository; - public void create(GuildMemberProfitItem entity) { + public BaseDomainEvent create(GuildMemberProfitItem entity) { repository.save(entity); + return new GuildMemberProfitItemCreatedEvent(entity.getId()); } public void edit(GuildMemberProfitItem entity) {