diff --git a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/RocketEnergyAggregator.java b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/RocketEnergyAggregator.java index 107bb838..77c4f0c5 100644 --- a/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/RocketEnergyAggregator.java +++ b/rc-service/rc-service-other/other-application/src/main/java/com/red/circle/other/app/manager/RocketEnergyAggregator.java @@ -311,7 +311,12 @@ public class RocketEnergyAggregator { if (rocketStatus.isFullEnergy() && rocketStatus.getStatus() == RocketStatusEnum.CHARGING) { log.info("火箭能量已满, 准备发射, roomId={}, level={}, 触发用户={}", roomId, rocketStatus.getLevel().getLevel(), triggerUserId); - + // triggerUserId 为 null 时,取 batch 最后一条作为兜底 + if (triggerUserId == null) { + triggerUserId = batch.isEmpty() ? null : batch.get(batch.size() - 1).getUserId(); + log.warn("triggerUserId 未找到(能量进入批次前已满?),使用兜底用户: roomId={}, userId={}", + roomId, triggerUserId); + } // 异步触发发射 rocketLaunchManager.launchAsync(roomId, triggerUserId); }