fix: 添加报名性别限制校验

- 单人报名时校验选手性别是否符合项目要求
- 集体报名时校验队伍成员性别是否符合项目要求
- category=1 男子组只允许男性报名
- category=2 女子组只允许女性报名

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
2026-01-22 12:18:30 +08:00
co-authored by factory-droid[bot]
parent a7b2f9bb5d
commit 5b25f53b0d
@@ -300,6 +300,66 @@ public class MartialRegistrationOrderController extends BladeController {
List<Long> teamIds = Func.toLongList(dto.getTeamIds()); List<Long> teamIds = Func.toLongList(dto.getTeamIds());
List<Long> projectIds = Func.toLongList(dto.getProjectIds()); List<Long> 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<MartialTeamMember> memberWrapper = new LambdaQueryWrapper<>();
memberWrapper.eq(MartialTeamMember::getTeamId, teamId)
.eq(MartialTeamMember::getIsDeleted, 0);
List<MartialTeamMember> 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 // Determine if this is a team registration
boolean isTeamRegistration = !teamIds.isEmpty(); boolean isTeamRegistration = !teamIds.isEmpty();