From d6b3b1f733eb43bc854534254863fdf73a73247a Mon Sep 17 00:00:00 2001 From: wells <123456@qq.com> Date: Wed, 5 Aug 2026 17:26:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=8C=85=E4=BA=8B=E4=BB=B6=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tailbet/event/RedPacketFinishedEvent.java | 24 ++++++++++++ .../listener/RedPacketEventListener.java | 37 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/main/java/com/tailbet/event/RedPacketFinishedEvent.java create mode 100644 src/main/java/com/tailbet/listener/RedPacketEventListener.java diff --git a/src/main/java/com/tailbet/event/RedPacketFinishedEvent.java b/src/main/java/com/tailbet/event/RedPacketFinishedEvent.java new file mode 100644 index 0000000..f4361d0 --- /dev/null +++ b/src/main/java/com/tailbet/event/RedPacketFinishedEvent.java @@ -0,0 +1,24 @@ +package com.tailbet.event; + +import lombok.Getter; +import org.springframework.context.ApplicationEvent; + +/** + * 红包领完事件,触发开奖结算 + */ +@Getter +public class RedPacketFinishedEvent extends ApplicationEvent { + + private final Long roundId; + private final Long groupId; + private final Long rpId; + private final Integer luckyDigit; + + public RedPacketFinishedEvent(Object source, Long roundId, Long groupId, Long rpId, Integer luckyDigit) { + super(source); + this.roundId = roundId; + this.groupId = groupId; + this.rpId = rpId; + this.luckyDigit = luckyDigit; + } +} diff --git a/src/main/java/com/tailbet/listener/RedPacketEventListener.java b/src/main/java/com/tailbet/listener/RedPacketEventListener.java new file mode 100644 index 0000000..c4737ae --- /dev/null +++ b/src/main/java/com/tailbet/listener/RedPacketEventListener.java @@ -0,0 +1,37 @@ +package com.tailbet.listener; + +import com.tailbet.event.RedPacketFinishedEvent; +import com.tailbet.job.GameJob; +import com.tailbet.service.IGameService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +/** + * 红包事件监听器 + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class RedPacketEventListener { + + private final IGameService gameService; + private final GameJob gameJob; + + /** + * 监听红包领完事件,触发开奖结算 + */ + @EventListener + public void onRedPacketFinished(RedPacketFinishedEvent event) { + log.info("收到红包领完事件: roundId={}, groupId={}, rpId={}, luckyDigit={}", + event.getRoundId(), event.getGroupId(), event.getRpId(), event.getLuckyDigit()); + + try { + // 调用 GameJob.onSettle 进行开奖结算和广播 + gameJob.onSettle(event.getRoundId(), event.getGroupId(), event.getLuckyDigit()); + } catch (Exception e) { + log.error("开奖结算失败: roundId={}, error={}", event.getRoundId(), e.getMessage(), e); + } + } +}