红包事件监听器

This commit is contained in:
wells
2026-08-05 17:26:11 +08:00
parent 16242b97de
commit d6b3b1f733
2 changed files with 61 additions and 0 deletions
@@ -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;
}
}
@@ -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);
}
}
}