From 45758108a86f0719d32517146245140b3966b3a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E6=88=BF?= Date: Wed, 31 Dec 2025 11:37:37 +0800 Subject: [PATCH] =?UTF-8?q?fix(team):=20=E4=BF=AE=E5=A4=8D=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E9=80=89=E6=89=8B=E5=90=8E=E9=9B=86=E4=BD=93=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=9C=AA=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除选手时级联删除集体成员关系 - 集体列表动态计算有效成员数(排除已删除选手) - 集体详情过滤已删除的选手 --- .../impl/MartialAthleteServiceImpl.java | 25 +++++++++++++++ .../service/impl/MartialTeamServiceImpl.java | 31 ++++++++++++++++++- 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialAthleteServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialAthleteServiceImpl.java index 8c50c4d..3d287e2 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialAthleteServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialAthleteServiceImpl.java @@ -12,7 +12,9 @@ import org.springblade.modules.martial.mapper.MartialAthleteMapper; import org.springblade.modules.martial.pojo.entity.MartialJudgeInvite; import org.springblade.modules.martial.pojo.entity.MartialScheduleAthlete; import org.springblade.modules.martial.pojo.entity.MartialScore; +import org.springblade.modules.martial.pojo.entity.MartialTeamMember; import org.springblade.modules.martial.pojo.vo.MartialAthleteVO; +import org.springblade.modules.martial.mapper.MartialTeamMemberMapper; import org.springblade.modules.martial.pojo.vo.MiniAthleteAdminVO; import org.springblade.modules.martial.pojo.vo.MiniAthleteScoreVO; import org.springblade.modules.martial.service.IMartialAthleteService; @@ -24,6 +26,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.io.Serializable; +import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @@ -45,6 +49,9 @@ public class MartialAthleteServiceImpl extends ServiceImpl idList) { + if (idList != null && !idList.isEmpty()) { + // Delete team member relations for these athletes + for (Object id : idList) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(MartialTeamMember::getAthleteId, id); + teamMemberMapper.delete(wrapper); + log.info("Deleted team member relations for athlete: {}", id); + } + } + return super.removeByIds(idList); + } + /** * Task 2.1: 运动员签到检录 * diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialTeamServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialTeamServiceImpl.java index e1ffd56..06c64e4 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialTeamServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialTeamServiceImpl.java @@ -73,6 +73,9 @@ public class MartialTeamServiceImpl extends ServiceImpl { MartialTeamVO vo = new MartialTeamVO(); BeanUtils.copyProperties(team, vo); + // Calculate actual member count (excluding deleted athletes) + int actualMemberCount = getActualMemberCount(team.getId()); + vo.setMemberCount(actualMemberCount); return vo; }) .collect(Collectors.toList()); @@ -81,6 +84,29 @@ public class MartialTeamServiceImpl extends ServiceImpl memberWrapper = new LambdaQueryWrapper<>(); + memberWrapper.eq(MartialTeamMember::getTeamId, teamId); + memberWrapper.eq(MartialTeamMember::getIsDeleted, 0); + List members = teamMemberMapper.selectList(memberWrapper); + + if (members.isEmpty()) { + return 0; + } + + List athleteIds = members.stream() + .map(MartialTeamMember::getAthleteId) + .collect(Collectors.toList()); + + LambdaQueryWrapper athleteWrapper = new LambdaQueryWrapper<>(); + athleteWrapper.in(MartialAthlete::getId, athleteIds); + athleteWrapper.eq(MartialAthlete::getIsDeleted, 0); + return (int) athleteService.count(athleteWrapper); + } + @Override public MartialTeamVO getTeamDetail(Long id) { MartialTeam team = this.getById(id); @@ -102,7 +128,10 @@ public class MartialTeamServiceImpl extends ServiceImpl athletes = athleteService.listByIds(athleteIds); + LambdaQueryWrapper athleteWrapper = new LambdaQueryWrapper<>(); + athleteWrapper.in(MartialAthlete::getId, athleteIds); + athleteWrapper.eq(MartialAthlete::getIsDeleted, 0); + List athletes = athleteService.list(athleteWrapper); Map athleteMap = athletes.stream() .collect(Collectors.toMap(MartialAthlete::getId, a -> a));