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

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> /// </summary>
public List<RefundRuleDto>? RefundRules { get; set; } public List<RefundRuleDto>? RefundRules { get; set; }
/// <summary>
/// 是否可以编辑项目信息(有报名记录时不能编辑项目和组别
/// </summary>
public bool CanEditProject { get; set; }
} }
/// <summary> /// <summary>

View File

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

View File

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