From 5b25f53b0dcbd925b04ed30be14c31d3cb578fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E6=88=BF?= Date: Thu, 22 Jan 2026 12:18:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=BB=E5=8A=A0=E6=8A=A5=E5=90=8D?= =?UTF-8?q?=E6=80=A7=E5=88=AB=E9=99=90=E5=88=B6=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 单人报名时校验选手性别是否符合项目要求 - 集体报名时校验队伍成员性别是否符合项目要求 - category=1 男子组只允许男性报名 - category=2 女子组只允许女性报名 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .../MartialRegistrationOrderController.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) 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();