短信通知组别字段去掉

This commit is contained in:
马梓彭 2026-09-21 14:15:52 +08:00
parent 2727033872
commit 8a9905cdb2

View File

@ -60,7 +60,7 @@ public partial class CheckinController : IDynamicApiController
{ {
var userId = await EnsureCheckerAsync(); var userId = await EnsureCheckerAsync();
var task = await GetCurrentTaskAsync(userId); var task = await GetCurrentTaskAsync(userId);
return task == null ? null : await BuildContextAsync(task, eventProjectId, groupId); return task == null ? null : await BuildContextAsync(task, eventProjectId);
} }
[HttpPost("status")] [HttpPost("status")]
@ -131,7 +131,7 @@ public partial class CheckinController : IDynamicApiController
} }
// 保持页面当前项目筛选;UnitKey 已独立校验检录项归属。 // 保持页面当前项目筛选;UnitKey 已独立校验检录项归属。
return await BuildContextAsync(task, input.EventProjectId, null); return await BuildContextAsync(task, input.EventProjectId);
} }
[HttpPost("start")] [HttpPost("start")]
@ -181,7 +181,7 @@ public partial class CheckinController : IDynamicApiController
units, projectEntity.ProjectType, options.EventName, noticeName); units, projectEntity.ProjectType, options.EventName, noticeName);
} }
var context = await BuildContextAsync(task, input.EventProjectId, null); var context = await BuildContextAsync(task, input.EventProjectId);
return new StartCheckinOutput return new StartCheckinOutput
{ {
TaskId = task.Id, TaskId = task.Id,
@ -223,7 +223,7 @@ public partial class CheckinController : IDynamicApiController
await EnsurePreviousPassedAsync(task, unit.UnitKey); await EnsurePreviousPassedAsync(task, unit.UnitKey);
await UpsertRecordAsync(task, unit, checkerUserId, true); await UpsertRecordAsync(task, unit, checkerUserId, true);
var context = await BuildContextAsync(task, input.EventProjectId ?? unit.EventProjectId, null); var context = await BuildContextAsync(task, input.EventProjectId ?? unit.EventProjectId);
return new ScanCheckinOutput return new ScanCheckinOutput
{ {
Success = true, Success = true,
@ -270,7 +270,7 @@ public partial class CheckinController : IDynamicApiController
task.UpdatedTime = DateTime.Now; task.UpdatedTime = DateTime.Now;
await _taskRepository.UpdateAsync(task); await _taskRepository.UpdateAsync(task);
return await BuildContextAsync(task, input.EventProjectId, null); return await BuildContextAsync(task, input.EventProjectId);
} }
/// <summary>按扫码内容定位秩序册列;支持号码布、报名人员ID和姓名。</summary> /// <summary>按扫码内容定位秩序册列;支持号码布、报名人员ID和姓名。</summary>
@ -340,16 +340,16 @@ public partial class CheckinController : IDynamicApiController
} }
/// <summary> /// <summary>
/// 对报名了所选项目组别的人员发送检录通知;单人失败不影响整体流程。 /// 对报名了所选项目的人员发送检录通知;单人失败不影响整体流程。
/// 个人项目:通知运动员本人(从 EventRegistrationPerson 取)。 /// 个人项目:通知运动员本人(从 EventRegistrationPerson 取)。
/// 团队项目:通知教练和领队(从 TeamMember 取,因为报名表中不存储教练/领队的 RegistrationItemId)。 /// 团队项目:通知教练和领队(从 TeamMember 取,因为报名表中不存储教练/领队的 RegistrationItemId)。
/// 短信内容:您报名的{赛事名称}正在检录,当前检录至{项目-组别第1场次},您所在第{x场次},请提前前往检录区做好准备。 /// 短信内容:您报名的{赛事名称}正在检录,当前检录至第{x}场次,您所在第{y}场次,请提前前往检录区做好准备。
/// </summary> /// </summary>
private async Task<(int Total, int Success, int Failed)> NotifyUnitsAsync( private async Task<(int Total, int Success, int Failed)> NotifyUnitsAsync(
List<CheckinOrderBookUnitDto> units, List<CheckinOrderBookUnitDto> units,
ProjectTypeEnum projectType, ProjectTypeEnum projectType,
string eventName, string eventName,
string projectGroupName) string projectName)
{ {
var isIndividualProject = projectType is ProjectTypeEnum.PersonalSpeed or ProjectTypeEnum.PersonalFreestyle; var isIndividualProject = projectType is ProjectTypeEnum.PersonalSpeed or ProjectTypeEnum.PersonalFreestyle;
var isTeamProject = projectType is ProjectTypeEnum.TeamSpeed or ProjectTypeEnum.TeamFreestyle; var isTeamProject = projectType is ProjectTypeEnum.TeamSpeed or ProjectTypeEnum.TeamFreestyle;
@ -376,10 +376,10 @@ public partial class CheckinController : IDynamicApiController
.Select(g => g.OrderBy(x => x.SessionOrder).First()) .Select(g => g.OrderBy(x => x.SessionOrder).First())
.ToList(); .ToList();
// 当前检录进度:获取该项目组别在秩序册中的起始场次 // 当前检录进度:获取该项目在秩序册中的起始场次
var firstSessionIndex = units.Select(x => x.SessionIndex).FirstOrDefault(x => x > 0); var firstSessionIndex = units.Select(x => x.SessionIndex).FirstOrDefault(x => x > 0);
if (firstSessionIndex <= 0) firstSessionIndex = 1; if (firstSessionIndex <= 0) firstSessionIndex = 1;
var currentSession = $"{projectGroupName}第{firstSessionIndex}场次"; var currentSession = $"第{firstSessionIndex}场次";
var success = 0; var success = 0;
var failed = missingPhoneCount; var failed = missingPhoneCount;
@ -396,7 +396,7 @@ public partial class CheckinController : IDynamicApiController
{ {
failed++; failed++;
_logger.LogWarning(ex, "检录通知发送失败:{EventName} {Project} {Phone}", _logger.LogWarning(ex, "检录通知发送失败:{EventName} {Project} {Phone}",
eventName, projectGroupName, recipient.Phone); eventName, projectName, recipient.Phone);
} }
} }
@ -573,7 +573,7 @@ public partial class CheckinController : IDynamicApiController
return users.ToDictionary(x => x.Id); return users.ToDictionary(x => x.Id);
} }
private async Task<CheckinContextDto> BuildContextAsync(CheckinTask task, long? eventProjectId, long? groupId) private async Task<CheckinContextDto> BuildContextAsync(CheckinTask task, long? eventProjectId)
{ {
var evt = await _eventRepository.GetFirstAsync(x => x.Id == task.EventId && !x.DeleteMark); var evt = await _eventRepository.GetFirstAsync(x => x.Id == task.EventId && !x.DeleteMark);
var eventLockReason = "赛事未开始,不允许检录"; var eventLockReason = "赛事未开始,不允许检录";