fix: 添加报名性别限制校验
- 单人报名时校验选手性别是否符合项目要求 - 集体报名时校验队伍成员性别是否符合项目要求 - category=1 男子组只允许男性报名 - category=2 女子组只允许女性报名 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
+60
@@ -300,6 +300,66 @@ public class MartialRegistrationOrderController extends BladeController {
|
||||
List<Long> teamIds = Func.toLongList(dto.getTeamIds());
|
||||
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
|
||||
boolean isTeamRegistration = !teamIds.isEmpty();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user