多参赛人员判断
This commit is contained in:
parent
dcd3414c54
commit
da8d63734f
@ -1119,6 +1119,11 @@ public class MemberValidateInput
|
||||
[Required]
|
||||
public long MemberId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前组内已选队员ID列表(用于年龄跨组等整组校验,兼容旧接口可不传)
|
||||
/// </summary>
|
||||
public List<long>? MemberIds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 组别ID
|
||||
/// </summary>
|
||||
|
||||
@ -889,15 +889,24 @@ public class UserEventRecordService : IDynamicApiController, ITransient
|
||||
Message = "验证通过"
|
||||
};
|
||||
|
||||
// 添加调试:查看接收的ID
|
||||
var memberId = input.MemberId;
|
||||
var member = await _userRepository.GetByIdAsync(memberId);
|
||||
var validationMemberIds = input.MemberIds?
|
||||
.Where(id => id > 0)
|
||||
.Distinct()
|
||||
.ToList() ?? new List<long>();
|
||||
|
||||
if (!validationMemberIds.Contains(input.MemberId))
|
||||
{
|
||||
validationMemberIds.Add(input.MemberId);
|
||||
}
|
||||
|
||||
var members = await _userRepository.GetListAsync(x => validationMemberIds.Contains(x.Id));
|
||||
var member = members.FirstOrDefault(x => x.Id == input.MemberId);
|
||||
|
||||
// 添加调试:如果找不到,尝试不删除标记查询
|
||||
if (member == null)
|
||||
{
|
||||
var memberWithoutDelete = await _db.Queryable<YD_Event.Core.Entities.AppUser>()
|
||||
.FirstAsync(m => m.Id == memberId);
|
||||
.FirstAsync(m => m.Id == input.MemberId);
|
||||
|
||||
if (memberWithoutDelete != null)
|
||||
{
|
||||
@ -928,19 +937,7 @@ public class UserEventRecordService : IDynamicApiController, ITransient
|
||||
var baseProject = eventProject != null ? await _projectRepository.GetByIdAsync(eventProject.ProjectId) : null;
|
||||
var isTeamProject = baseProject?.IsTeamProject() ?? false;
|
||||
|
||||
// 创建单个队员的验证输入
|
||||
var persons = new List<UnifiedPersonInput>
|
||||
{
|
||||
new UnifiedPersonInput
|
||||
{
|
||||
UserId = member.Id,
|
||||
Name = member.Name ?? "",
|
||||
IdCardNumber = member.IdCardNumber ?? "",
|
||||
Gender = member.Gender,
|
||||
Mobile = member.Mobile,
|
||||
BirthDate = member.BirthDate.Value
|
||||
}
|
||||
};
|
||||
var persons = BuildValidationPersons(members, input.MemberId);
|
||||
|
||||
// 使用统一的验证方法进行验证
|
||||
var validationResult = _unifiedRegistrationService.ValidatePersonQualifications(persons, eventProjectGroup, isTeamProject);
|
||||
@ -951,7 +948,10 @@ public class UserEventRecordService : IDynamicApiController, ITransient
|
||||
result.Message = validationResult.ErrorMessage ?? "验证失败";
|
||||
|
||||
// 根据验证详情设置具体的验证状态
|
||||
var ageDetail = validationResult.Details?.FirstOrDefault(d => d.ItemName == "年龄验证" || d.ItemName == "年龄跨组验证");
|
||||
var ageDetail = validationResult.Details?.FirstOrDefault(d =>
|
||||
d.ItemName == "年龄验证" ||
|
||||
d.ItemName == "年龄跨组" ||
|
||||
d.ItemName.StartsWith("年龄跨组验证"));
|
||||
var genderDetail = validationResult.Details?.FirstOrDefault(d => d.ItemName == "性别验证");
|
||||
|
||||
if (ageDetail != null && !ageDetail.IsPassed)
|
||||
@ -969,6 +969,23 @@ public class UserEventRecordService : IDynamicApiController, ITransient
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<UnifiedPersonInput> BuildValidationPersons(List<YD_Event.Core.Entities.AppUser> members, long currentMemberId)
|
||||
{
|
||||
var orderedMembers = members
|
||||
.OrderByDescending(x => x.Id == currentMemberId)
|
||||
.ToList();
|
||||
|
||||
return orderedMembers.Select(m => new UnifiedPersonInput
|
||||
{
|
||||
UserId = m.Id,
|
||||
Name = m.Name ?? "",
|
||||
IdCardNumber = m.IdCardNumber ?? "",
|
||||
Gender = m.Gender,
|
||||
Mobile = m.Mobile,
|
||||
BirthDate = m.BirthDate ?? DateTime.MinValue
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查报名限制
|
||||
/// </summary>
|
||||
|
||||
@ -1065,7 +1065,18 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
|
||||
Message = "验证通过"
|
||||
};
|
||||
|
||||
var member = await _userRepository.GetByIdAsync(input.MemberId);
|
||||
var validationMemberIds = input.MemberIds?
|
||||
.Where(id => id > 0)
|
||||
.Distinct()
|
||||
.ToList() ?? new List<long>();
|
||||
|
||||
if (!validationMemberIds.Contains(input.MemberId))
|
||||
{
|
||||
validationMemberIds.Add(input.MemberId);
|
||||
}
|
||||
|
||||
var members = await _userRepository.GetListAsync(x => validationMemberIds.Contains(x.Id));
|
||||
var member = members.FirstOrDefault(x => x.Id == input.MemberId);
|
||||
if (member == null)
|
||||
{
|
||||
result.IsValid = false;
|
||||
@ -1089,19 +1100,7 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
|
||||
var baseProject = eventProject != null ? await _projectRepository.GetByIdAsync(eventProject.ProjectId) : null;
|
||||
var isTeamProject = baseProject?.IsTeamProject() ?? false;
|
||||
|
||||
// 创建单个队员的验证输入
|
||||
var persons = new List<UnifiedPersonInput>
|
||||
{
|
||||
new UnifiedPersonInput
|
||||
{
|
||||
UserId = member.Id,
|
||||
Name = member.Name ?? "",
|
||||
IdCardNumber = member.IdCardNumber ?? "",
|
||||
Gender = member.Gender,
|
||||
Mobile = member.Mobile,
|
||||
BirthDate = member.BirthDate.Value
|
||||
}
|
||||
};
|
||||
var persons = BuildValidationPersons(members, input.MemberId);
|
||||
|
||||
// 使用统一的验证方法进行验证
|
||||
var validationResult = _unifiedRegistrationService.ValidatePersonQualifications(persons, eventProjectGroup, isTeamProject);
|
||||
@ -1112,7 +1111,10 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
|
||||
result.Message = validationResult.ErrorMessage ?? "验证失败";
|
||||
|
||||
// 根据验证详情设置具体的验证状态
|
||||
var ageDetail = validationResult.Details?.FirstOrDefault(d => d.ItemName == "年龄验证" || d.ItemName == "年龄跨组验证");
|
||||
var ageDetail = validationResult.Details?.FirstOrDefault(d =>
|
||||
d.ItemName == "年龄验证" ||
|
||||
d.ItemName == "年龄跨组" ||
|
||||
d.ItemName.StartsWith("年龄跨组验证"));
|
||||
var genderDetail = validationResult.Details?.FirstOrDefault(d => d.ItemName == "性别验证");
|
||||
|
||||
if (ageDetail != null && !ageDetail.IsPassed)
|
||||
@ -1130,6 +1132,23 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
|
||||
return result;
|
||||
}
|
||||
|
||||
private static List<UnifiedPersonInput> BuildValidationPersons(List<YD_Event.Core.Entities.AppUser> members, long currentMemberId)
|
||||
{
|
||||
var orderedMembers = members
|
||||
.OrderByDescending(x => x.Id == currentMemberId)
|
||||
.ToList();
|
||||
|
||||
return orderedMembers.Select(m => new UnifiedPersonInput
|
||||
{
|
||||
UserId = m.Id,
|
||||
Name = m.Name ?? "",
|
||||
IdCardNumber = m.IdCardNumber ?? "",
|
||||
Gender = m.Gender,
|
||||
Mobile = m.Mobile,
|
||||
BirthDate = m.BirthDate ?? DateTime.MinValue
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检查报名限制
|
||||
/// </summary>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user