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));