diff --git a/src/main/java/org/springblade/modules/martial/controller/MartialRegistrationOrderController.java b/src/main/java/org/springblade/modules/martial/controller/MartialRegistrationOrderController.java index 51868bc..df01c2a 100644 --- a/src/main/java/org/springblade/modules/martial/controller/MartialRegistrationOrderController.java +++ b/src/main/java/org/springblade/modules/martial/controller/MartialRegistrationOrderController.java @@ -300,6 +300,66 @@ public class MartialRegistrationOrderController extends BladeController { List teamIds = Func.toLongList(dto.getTeamIds()); List projectIds = Func.toLongList(dto.getProjectIds()); + // Validate gender restriction for each project + for (Long projectId : projectIds) { + MartialProject project = projectService.getById(projectId); + if (project == null) { + continue; + } + + String category = project.getCategory(); + if (category == null) { + continue; + } + + // For individual registration, check athlete gender + if (teamIds.isEmpty() && !athleteIds.isEmpty()) { + for (Long athleteId : athleteIds) { + MartialAthlete athlete = athleteService.getById(athleteId); + if (athlete == null) { + continue; + } + + Integer gender = athlete.getGender(); + if ("1".equals(category) && gender != null && gender != 1) { + return R.fail("项目【" + project.getProjectName() + "】为男子组,不允许女性选手报名"); + } else if ("2".equals(category) && gender != null && gender != 2) { + return R.fail("项目【" + project.getProjectName() + "】为女子组,不允许男性选手报名"); + } + } + } + + // For team registration, check team members gender + if (!teamIds.isEmpty()) { + for (Long teamId : teamIds) { + MartialTeam team = teamService.getById(teamId); + if (team == null) { + continue; + } + + // Query team members + LambdaQueryWrapper memberWrapper = new LambdaQueryWrapper<>(); + memberWrapper.eq(MartialTeamMember::getTeamId, teamId) + .eq(MartialTeamMember::getIsDeleted, 0); + List members = teamMemberMapper.selectList(memberWrapper); + + for (MartialTeamMember member : members) { + MartialAthlete memberAthlete = athleteService.getById(member.getAthleteId()); + if (memberAthlete == null) { + continue; + } + + Integer gender = memberAthlete.getGender(); + if ("1".equals(category) && gender != null && gender != 1) { + return R.fail("项目【" + project.getProjectName() + "】为男子组,队伍【" + team.getTeamName() + "】中存在女性成员,不允许报名"); + } else if ("2".equals(category) && gender != null && gender != 2) { + return R.fail("项目【" + project.getProjectName() + "】为女子组,队伍【" + team.getTeamName() + "】中存在男性成员,不允许报名"); + } + } + } + } + } + // Determine if this is a team registration boolean isTeamRegistration = !teamIds.isEmpty();