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)