From 41e55bc94eb4d1363c716512d60567aaba5b20a0 Mon Sep 17 00:00:00 2001 From: wells <123456@qq.com> Date: Sun, 9 Aug 2026 08:52:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=81=87=E4=BA=BA=E6=89=98=E9=A2=86=E5=8F=96?= =?UTF-8?q?=E5=89=A9=E4=BD=99=E4=BB=BD=E9=A2=9D=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/tailbet/job/GameJob.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/tailbet/job/GameJob.java b/src/main/java/com/tailbet/job/GameJob.java index d0fa0c1..8eabe19 100644 --- a/src/main/java/com/tailbet/job/GameJob.java +++ b/src/main/java/com/tailbet/job/GameJob.java @@ -229,8 +229,29 @@ public class GameJob { * 假人托领取剩余份额(循环领取直到红包领完) */ private void fakeUserReceiveRemaining(RedPacket rp) { - List fakes = fakeUserService.getFakeUsers(); + if (rp.getGroupId() == null) { + log.warn("红包未关联群组,托跳过领取: rpId={}", rp.getId()); + return; + } + + // 仅允许群内假人领取,避免跨群领取红包 + List groupMemberIds = groupMemberMapper.selectList( + new LambdaQueryWrapper() + .eq(GroupMember::getGroupId, rp.getGroupId()) + .select(GroupMember::getUserId)) + .stream() + .map(GroupMember::getUserId) + .collect(Collectors.toList()); + if (groupMemberIds.isEmpty()) { + log.warn("红包所属群组无成员,托跳过领取: rpId={}, groupId={}", rp.getId(), rp.getGroupId()); + return; + } + + List fakes = fakeUserService.getFakeUsers().stream() + .filter(fake -> groupMemberIds.contains(fake.getId())) + .toList(); if (fakes.isEmpty()) { + log.info("红包所属群组无可用假人,托跳过领取: rpId={}, groupId={}", rp.getId(), rp.getGroupId()); return; }