编辑赛事项目判断是否已报名

This commit is contained in:
马梓彭 2026-06-08 17:35:35 +08:00
parent 05ae51a276
commit d735f898dc
3 changed files with 19 additions and 5 deletions

View File

@ -553,6 +553,11 @@ public class EventDetailOutput : AddEventInput
/// 退款规则详情列表
/// </summary>
public List<RefundRuleDto>? RefundRules { get; set; }
/// <summary>
/// 是否可以编辑项目信息(有报名记录时不能编辑项目和组别
/// </summary>
public bool CanEditProject { get; set; }
}
/// <summary>

View File

@ -150,6 +150,10 @@ public class EventService : BaseService<EventInfo>, ITransient
var output = eventInfo.Adapt<EventDetailOutput>();
// 检查是否有报名记录,决定是否可以编辑项目(有报名记录时不能编辑项目和组别
var hasRegistration = await _registrationRepository.IsAnyAsync(x => x.EventId == id && !x.DeleteMark);
output.CanEditProject = !hasRegistration;
// 1. 获取参与单位
var units = await _unitRepository.GetListAsync(x => x.EventId == id);
if (units.Any())
@ -525,8 +529,8 @@ public class EventService : BaseService<EventInfo>, ITransient
var eventInfo = await _repository.GetByIdAsync(input.Id);
if (eventInfo == null) throw new InvalidOperationException("赛事不存在");
// 检查是否有报名记录:如果有人报名,检查是否修改了项目和组别
var hasRegistration = await _registrationRepository.IsAnyAsync(x => x.EventId == input.Id);
// 检查是否有报名记录:如果有人报名,检查是否修改了项目和组别(软删除的不算)
var hasRegistration = await _registrationRepository.IsAnyAsync(x => x.EventId == input.Id && !x.DeleteMark);
if (hasRegistration)
{
var hasProjectOrGroupChange = await CheckIfProjectsOrGroupsChanged(input, eventInfo.Id);
@ -1067,7 +1071,7 @@ public class EventService : BaseService<EventInfo>, ITransient
[DisplayName("删除赛事")]
public override async Task Delete(KeyDto dto)
{
if (await _registrationRepository.IsAnyAsync(x => x.EventId == dto.Id))
if (await _registrationRepository.IsAnyAsync(x => x.EventId == dto.Id && !x.DeleteMark))
{
throw new InvalidOperationException("已有人员报名此赛事,暂不支持删除");
}
@ -1188,8 +1192,8 @@ public class EventService : BaseService<EventInfo>, ITransient
throw new InvalidOperationException("请先完成参与单位配置");
}
// 检查是否有报名记录:如果有人报名,检查是否修改了项目和组别
var hasRegistration = await _registrationRepository.IsAnyAsync(x => x.EventId == input.EventId);
// 检查是否有报名记录:如果有人报名,检查是否修改了项目和组别(软删除的不算)
var hasRegistration = await _registrationRepository.IsAnyAsync(x => x.EventId == input.EventId && !x.DeleteMark);
if (hasRegistration)
{
var oldEventProjects = await _eventProjectRepository.GetListAsync(x => x.EventId == input.EventId && !x.DeleteMark);

View File

@ -4975,6 +4975,11 @@
退款规则详情列表
</summary>
</member>
<member name="P:YD_Event.Application.Event.Dtos.EventDetailOutput.CanEditProject">
<summary>
是否可以编辑项目信息(有报名记录时不能编辑项目和组别
</summary>
</member>
<member name="T:YD_Event.Application.Event.Dtos.PointsRuleDetailDto">
<summary>
积分规则明细DTO