From daf573b94dba04fa2d7caac6c5d7cfe97d47669a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E6=A2=93=E5=BD=AD?= Date: Tue, 28 Apr 2026 09:13:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8A=A5=E5=90=8D=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Event/UnifiedRegistrationService.cs | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/YD_Event.Application/Event/UnifiedRegistrationService.cs b/YD_Event.Application/Event/UnifiedRegistrationService.cs index 4c8856c..3187add 100644 --- a/YD_Event.Application/Event/UnifiedRegistrationService.cs +++ b/YD_Event.Application/Event/UnifiedRegistrationService.cs @@ -2877,8 +2877,19 @@ public class UnifiedRegistrationService : ITransient await _registrationPersonRepository.DeleteAsync(x => allCancelMemberIds.Contains(x.Id)); _logger.LogInformation("已删除队员:报名ID={RegistrationId}, 队员ID列表={PersonIds}", registration.Id, string.Join(", ", allCancelMemberIds)); + + // 检查并删除空的 RegistrationItem(所有成员都被删除的项) + var remainingPersons = await _registrationPersonRepository.GetListAsync(x => x.RegistrationId == registration.Id); + var remainingRegistrationItemIds = new HashSet(remainingPersons.Select(p => p.RegistrationItemId)); + var itemsToDelete = items.Where(item => !remainingRegistrationItemIds.Contains(item.Id)).ToList(); + if (itemsToDelete.Count > 0) + { + await _registrationItemRepository.DeleteAsync(itemsToDelete); + _logger.LogInformation("已删除空团队:报名ID={RegistrationId}, 团队ID列表={ItemIds}", + registration.Id, string.Join(", ", itemsToDelete.Select(i => i.Id))); + } - var remainingPersonsCount = await _registrationPersonRepository.CountAsync(x => x.RegistrationId == registration.Id); + var remainingPersonsCount = remainingPersons.Count; registration.TotalPersonCount = remainingPersonsCount; if (remainingPersonsCount > 0) @@ -2935,8 +2946,19 @@ public class UnifiedRegistrationService : ITransient await _registrationPersonRepository.DeleteAsync(x => allCancelMemberIds.Contains(x.Id)); _logger.LogInformation("已删除队员:报名ID={RegistrationId}, 队员ID列表={PersonIds}", registration.Id, string.Join(", ", allCancelMemberIds)); + + // 检查并删除空的 RegistrationItem(所有成员都被删除的项) + var remainingPersons = await _registrationPersonRepository.GetListAsync(x => x.RegistrationId == registration.Id); + var remainingRegistrationItemIds = new HashSet(remainingPersons.Select(p => p.RegistrationItemId)); + var itemsToDelete = items.Where(item => !remainingRegistrationItemIds.Contains(item.Id)).ToList(); + if (itemsToDelete.Count > 0) + { + await _registrationItemRepository.DeleteAsync(itemsToDelete); + _logger.LogInformation("已删除空团队:报名ID={RegistrationId}, 团队ID列表={ItemIds}", + registration.Id, string.Join(", ", itemsToDelete.Select(i => i.Id))); + } - var remainingPersonsCount = await _registrationPersonRepository.CountAsync(x => x.RegistrationId == registration.Id); + var remainingPersonsCount = remainingPersons.Count; registration.TotalPersonCount = remainingPersonsCount; if (remainingPersonsCount > 0)