diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialJudgeInviteServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialJudgeInviteServiceImpl.java index 7bcac4c..281387a 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialJudgeInviteServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialJudgeInviteServiceImpl.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.stream.Collectors; /** * JudgeInvite 服务实现类 @@ -160,10 +161,15 @@ public class MartialJudgeInviteServiceImpl extends ServiceImpl invites = new ArrayList<>(); List failedJudges = new ArrayList<>(); + // Batch query all judges to avoid N+1 query problem + List judges = martialJudgeService.listByIds(dto.getJudgeIds()); + Map judgeMap = judges.stream() + .collect(Collectors.toMap(MartialJudge::getId, j -> j)); + for (Long judgeId : dto.getJudgeIds()) { try { - // 查询裁判信息,根据refereeType自动设置角色 - MartialJudge judge = martialJudgeService.getById(judgeId); + // Get judge from map instead of querying database + MartialJudge judge = judgeMap.get(judgeId); String role = dto.getRole(); // 默认使用传入的角色 if (judge != null && judge.getRefereeType() != null) { // refereeType=1 为主裁判,设置为chief_judge @@ -183,13 +189,13 @@ public class MartialJudgeInviteServiceImpl extends ServiceImpl