YD_Event.Admin/YD_Event.Application/Client/Dtos/CompetitionClientDtos.cs
ltx 25830581d2 feat(api): 完善小程序赛事角色与秩序册检录接口
新增成绩查询、裁判认证及检录员账号管理接口,并统一小程序角色登录与个人中心数据。

检录任务绑定赛事秩序册场次,按项目、组别、场地和场次顺序执行;支持最多三名检录员、分配检录轮次及前序检录校验。

补充检录任务、检录记录、裁判申请实体及四份数据库迁移,包含表字段备注、秩序册绑定和检录序号。
2026-08-07 14:59:15 +08:00

146 lines
5.5 KiB
C#

namespace YD_Event.Application.Client.Dtos;
public class ScoreEventDto
{
public long Id { get; set; }
public string Name { get; set; } = string.Empty;
}
public class ScoreQueryInput
{
public long? EventId { get; set; }
public string? Keyword { get; set; }
}
public class JudgeScoreDto
{
public string Label { get; set; } = string.Empty;
public string Score { get; set; } = string.Empty;
}
public class ClientScoreDto
{
public long Id { get; set; }
public long EventId { get; set; }
public string EventName { get; set; } = string.Empty;
public string AthleteName { get; set; } = string.Empty;
public string AthleteNo { get; set; } = string.Empty;
public string Category { get; set; } = string.Empty;
public string GroupName { get; set; } = string.Empty;
public string RoundName { get; set; } = "正式成绩";
public int Rank { get; set; }
public string TotalScore { get; set; } = string.Empty;
public string? DifficultyScore { get; set; }
public string? ExecutionScore { get; set; }
public string? CreativityScore { get; set; }
public string Status { get; set; } = "成绩有效";
public List<JudgeScoreDto> JudgeScores { get; set; } = new();
}
public class ScoreQueryOutput
{
public List<ClientScoreDto> Rows { get; set; } = new();
public int Total { get; set; }
}
public class RefereeApplyInput
{
[Required(ErrorMessage = "赛事ID不能为空")]
public long EventId { get; set; }
}
public class RefereeApplicationDto
{
public long Id { get; set; }
public long ApplicationId { get; set; }
public long EventId { get; set; }
public string EventName { get; set; } = string.Empty;
public string? CoverImage { get; set; }
public string? Address { get; set; }
public int EventStatus { get; set; }
public int ApplicationStatus { get; set; }
public string ApplicationStatusText { get; set; } = string.Empty;
public DateTime AppliedAt { get; set; }
public DateTime MatchStartTime { get; set; }
public DateTime MatchEndTime { get; set; }
public string MatchStartText => MatchStartTime.ToString("yyyy-MM-dd HH:mm");
public string MatchEndText => MatchEndTime.ToString("yyyy-MM-dd HH:mm");
}
public class RefereeApplicationListOutput
{
public List<RefereeApplicationDto> Rows { get; set; } = new();
public int Total { get; set; }
}
public class CheckinAthleteDto
{
public long Id { get; set; }
public long UserId { get; set; }
public string BibNo { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string TeamName { get; set; } = string.Empty;
public bool Checked { get; set; }
public bool PreviousPassed { get; set; } = true;
public bool CanCheck { get; set; } = true;
public string LockReason { get; set; } = string.Empty;
public string OrderBookSessionName { get; set; } = string.Empty;
}
public class CheckinContextDto
{
public long TaskId { get; set; }
public long EventId { get; set; }
public string EventName { get; set; } = string.Empty;
public string Venue { get; set; } = string.Empty;
public int TotalCheckins { get; set; }
public int CurrentCheckinNo { get; set; }
public string CurrentCheckinName { get; set; } = string.Empty;
public int TotalSessions { get; set; }
public int CurrentSessionOrder { get; set; }
public string CurrentSessionKey { get; set; } = string.Empty;
public string CurrentSessionName { get; set; } = string.Empty;
public string CurrentSessionVenue { get; set; } = string.Empty;
public string? NextSessionName { get; set; }
public List<CheckinSessionOptionDto> Sessions { get; set; } = new();
public long SelectedEventProjectId { get; set; }
public long SelectedGroupId { get; set; }
public List<CheckinProjectOptionDto> Projects { get; set; } = new();
public List<CheckinOrderBookUnitStatusDto> Units { get; set; } = new();
public List<CheckinOrderBookUnitStatusDto> PendingUnits { get; set; } = new();
public List<CheckinOrderBookUnitStatusDto> CheckedUnits { get; set; } = new();
public List<CheckinOrderBookUnitStatusDto> LockedUnits { get; set; } = new();
// 以下字段保留给旧版小程序兼容,值映射自秩序册场次。
public int TotalRounds { get; set; }
public int CurrentRound { get; set; }
public string RoundName { get; set; } = string.Empty;
public long? CurrentGroupId { get; set; }
public string CurrentGroupName { get; set; } = string.Empty;
public int GroupOrder { get; set; }
public int TotalGroups { get; set; }
public string? NextGroupName { get; set; }
public List<CheckinRoundOptionDto> Rounds { get; set; } = new();
public List<CheckinAthleteDto> Athletes { get; set; } = new();
public List<CheckinAthleteDto> PendingAthletes { get; set; } = new();
public List<CheckinAthleteDto> CheckedAthletes { get; set; } = new();
public List<CheckinAthleteDto> LockedAthletes { get; set; } = new();
}
public class UpdateCheckinStatusInput
{
[Required(ErrorMessage = "秩序册列标识不能为空")]
public string UnitKey { get; set; } = string.Empty;
public long EventProjectId { get; set; }
public long GroupId { get; set; }
public bool Checked { get; set; }
}
public class CheckinOrderBookUnitStatusDto : CheckinOrderBookUnitDto
{
public bool Checked { get; set; }
public bool PreviousPassed { get; set; } = true;
public bool CanCheck { get; set; } = true;
public string LockReason { get; set; } = string.Empty;
}