完善人员认证的处理

This commit is contained in:
马梓彭 2026-06-28 18:04:46 +08:00
parent fbb4d9f750
commit 570a17ea10
4 changed files with 61 additions and 15 deletions

View File

@ -143,11 +143,20 @@ public class UnifiedPersonInput
public string Name { get; set; } = string.Empty;
/// <summary>
/// 身份证号
/// 身份证号(身份证/户口本认证时使用)
/// </summary>
[Required(ErrorMessage = "身份证号不能为空")]
[RegularExpression(@"^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$", ErrorMessage = "请输入正确的身份证号格式")]
public string IdCardNumber { get; set; } = string.Empty;
public string? IdCardNumber { get; set; }
/// <summary>
/// 护照号码(护照认证时使用)
/// </summary>
public string? PassportNumber { get; set; }
/// <summary>
/// 认证类型:0-未认证,1-身份证,2-护照,3-户口本
/// </summary>
public int AuthType { get; set; } = 1;
/// <summary>
/// 性别
@ -156,7 +165,7 @@ public class UnifiedPersonInput
public Gender Gender { get; set; }
/// <summary>
/// 电话
/// 电话(非必填)
/// </summary>
[RegularExpression(@"^1[3-9]\d{9}$", ErrorMessage = "请输入正确的手机号格式")]
public string? Mobile { get; set; }

View File

@ -642,6 +642,14 @@ public class UnifiedRegistrationService : ITransient
return persons;
}
/// <summary>
/// 获取人员证件号码(根据认证类型返回身份证号或护照号)
/// </summary>
private static string GetPersonCertNumber(UnifiedPersonInput person)
{
return person.AuthType == 2 ? (person.PassportNumber ?? "") : (person.IdCardNumber ?? "");
}
/// <summary>
/// 验证队员资质(年龄和性别)
/// </summary>
@ -828,9 +836,9 @@ public class UnifiedRegistrationService : ITransient
ProjectName = baseProject?.Name ?? "",
Name = pInput.Name,
Gender = pInput.Gender,
IdCard = pInput.IdCardNumber,
IdCard = (pInput.AuthType == 2 ? pInput.PassportNumber : pInput.IdCardNumber) ?? "",
BirthDate = pInput.BirthDate,
Phone = pInput.Mobile,
Phone = pInput.Mobile ?? "",
Age = CalculateAge(pInput.BirthDate),
PersonType = PersonType.Athlete,
UserId = pInput.UserId ?? 0,
@ -1783,7 +1791,8 @@ public class UnifiedRegistrationService : ITransient
foreach (var person in allPersonsInItem)
{
var key = person.UserId.HasValue ? person.UserId.Value.ToString() : person.IdCardNumber;
var certNumber = GetPersonCertNumber(person);
var key = person.UserId.HasValue ? person.UserId.Value.ToString() : certNumber;
if (string.IsNullOrEmpty(key)) continue;
if (!personProjectGroupMap.ContainsKey(key))
@ -1812,7 +1821,7 @@ public class UnifiedRegistrationService : ITransient
var groupInfo = duplicate.First();
var person = input.Items.SelectMany(i => i.Persons).FirstOrDefault(p =>
(p.UserId.HasValue && p.UserId.Value.ToString() == key) ||
(!p.UserId.HasValue && p.IdCardNumber == key));
(!p.UserId.HasValue && GetPersonCertNumber(p) == key));
var personName = person?.Name ?? "未知人员";
_logger.LogWarning("人员项目组别重复,人员: {PersonName}, 项目: {ProjectName}, 组别: {GroupName}",

View File

@ -383,11 +383,13 @@ public class UserEventRecordService : IDynamicApiController, ITransient
if (newUser == null) throw Oops.Bah("新队员不存在");
long oldUserId = person.Id;
var newCertNumber = newUser.AuthType == 2 ? newUser.PassportNumber : newUser.IdCardNumber;
// 更新信息
person.Name = newUser.Name;
person.IdCard = newUser.IdCardNumber;
person.Phone = newUser.Mobile;
person.IdCard = newCertNumber ?? "";
person.Phone = newUser.Mobile ?? "";
person.UpdatedTime = DateTime.Now;
await _registrationPersonRepository.UpdateAsync(person);
@ -811,13 +813,21 @@ public class UserEventRecordService : IDynamicApiController, ITransient
var name = member.Name ?? user?.Name;
var gender = member.Gender ?? user?.Gender ?? Gender.Male;
var idCardNumber = member.IdCardNumber ?? user?.IdCardNumber;
var passportNumber = user?.PassportNumber;
var authType = user?.AuthType ?? 1;
var birthDate = member.BirthDate ?? user?.BirthDate ?? DateTime.Now.AddYears(-20);
var mobile = member.Mobile ?? user?.Mobile;
// 验证必填字段
var certNumber = authType == 2 ? passportNumber : idCardNumber;
var certName = authType switch
{
2 => "护照号码",
3 => "身份证号(户口本认证)",
_ => "身份证号"
};
if (string.IsNullOrWhiteSpace(name)) throw Oops.Bah("队员姓名不能为空");
if (string.IsNullOrWhiteSpace(idCardNumber)) throw Oops.Bah("队员身份证号不能为空");
if (string.IsNullOrWhiteSpace(mobile)) throw Oops.Bah("队员手机号不能为空");
if (string.IsNullOrWhiteSpace(certNumber)) throw Oops.Bah($"队员{certName}不能为空");
newPersons.Add(new EventRegistrationPerson
{
@ -830,9 +840,9 @@ public class UserEventRecordService : IDynamicApiController, ITransient
ProjectName = regItem.ProjectName,
Name = name,
Gender = gender,
IdCard = idCardNumber,
IdCard = certNumber ?? "",
BirthDate = birthDate,
Phone = mobile,
Phone = mobile ?? "",
Age = CalculateAge(birthDate),
PersonType = PersonType.Athlete,
UserId = member.UserId ?? 0,
@ -980,6 +990,8 @@ public class UserEventRecordService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -1100,6 +1112,8 @@ public class UserEventRecordService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -1116,6 +1130,8 @@ public class UserEventRecordService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue

View File

@ -640,6 +640,8 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -658,6 +660,8 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -1143,6 +1147,8 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -1263,6 +1269,8 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -1279,6 +1287,8 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue
@ -1311,6 +1321,8 @@ public class UserEventRegistrationService : IDynamicApiController, ITransient
UserId = m.Id,
Name = m.Name ?? "",
IdCardNumber = m.IdCardNumber ?? "",
PassportNumber = m.PassportNumber,
AuthType = m.AuthType,
Gender = m.Gender,
Mobile = m.Mobile,
BirthDate = m.BirthDate ?? DateTime.MinValue