2026-02-08 18:09:05 +08:00
|
|
|
|
using System.ComponentModel.DataAnnotations;
|
|
|
|
|
|
using YD_Event.Core.Enum;
|
|
|
|
|
|
using MiniExcelLibs.Attributes;
|
|
|
|
|
|
|
2026-03-08 15:46:19 +08:00
|
|
|
|
namespace YD_Event.Application.Event.Dtos;
|
2026-02-08 18:09:05 +08:00
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩查询输入
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public class ScoreQueryInput : Pagination
|
|
|
|
|
|
{
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 赛事ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long EventId { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 项目ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long? ProjectId { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-04-15 14:28:22 +08:00
|
|
|
|
/// 赛事项目组别ID (优先使用)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public long? EventProjectGroupId { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 组别名称 (备用,当没有EventProjectGroupId时使用)
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string? GroupName { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 姓名
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string? Name { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 单位名称
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string? UnitName { get; set; }
|
2026-04-03 09:42:10 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 性别
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public Gender? Gender { get; set; }
|
2026-02-08 18:09:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩列表输出
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public class ScoreListOutput
|
|
|
|
|
|
{
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 报名人员ID
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public long Id { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 姓名
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string Name { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string Score { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 单位名称
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string UnitName { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-04-14 15:11:41 +08:00
|
|
|
|
/// 名次(数字)
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public int Rank { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
2026-04-14 15:11:41 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 名次(汉字)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string RankText { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 性别
|
|
|
|
|
|
/// </summary>
|
2026-04-15 15:16:36 +08:00
|
|
|
|
public int Gender { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long ResultId { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 证书ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long CertificateId { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 教练/领队查询输入
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public class CoachLeaderQueryInput : Pagination
|
|
|
|
|
|
{
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 赛事ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long EventId { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 人员类型 (2-教练, 3-领队)
|
|
|
|
|
|
/// </summary>
|
2026-03-20 02:00:34 +08:00
|
|
|
|
public PersonType PersonType { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 姓名
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string? Name { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 电话
|
|
|
|
|
|
/// </summary>
|
2026-03-25 09:09:45 +08:00
|
|
|
|
public string? Mobile { get; set; }
|
2026-04-03 09:42:10 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 性别
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public Gender? Gender { get; set; }
|
2026-02-08 18:09:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 教练/领队列表输出
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public class CoachLeaderListOutput
|
|
|
|
|
|
{
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
2026-04-27 13:22:59 +08:00
|
|
|
|
/// 报名人员ID (0 表示没有 EventRegistrationPerson 记录,只有 TeamMember 记录)
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public long Id { get; set; }
|
|
|
|
|
|
|
2026-04-27 13:22:59 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 用户ID (对应 AppUser.Id)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public long UserId { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 姓名
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public string Name { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 年龄
|
|
|
|
|
|
/// </summary>
|
2026-04-14 15:20:12 +08:00
|
|
|
|
public int? Age { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 性别
|
|
|
|
|
|
/// </summary>
|
2026-04-17 12:47:13 +08:00
|
|
|
|
public int Gender { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
2026-04-14 15:20:12 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 出生日期
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public DateTime? BirthDate { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 身份证号
|
|
|
|
|
|
/// </summary>
|
2026-04-17 12:47:13 +08:00
|
|
|
|
public string? IdCardNumber { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 身份证正面图片URL
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string? IdCardImageUrl { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 身份证背面图片URL
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string? IdCardBackImageUrl { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 电话
|
|
|
|
|
|
/// </summary>
|
2026-03-25 09:09:45 +08:00
|
|
|
|
public string Mobile { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 证书ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long CertificateId { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 发放证书输入
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public class IssueCertificateInput
|
|
|
|
|
|
{
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 人员ID列表
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public List<long> PersonIds { get; set; }
|
2026-03-18 13:47:34 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 赛事ID
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public long EventId { get; set; }
|
2026-04-14 10:17:28 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-04-15 14:28:22 +08:00
|
|
|
|
/// 证书ID(必选)
|
2026-04-14 10:17:28 +08:00
|
|
|
|
/// </summary>
|
2026-04-15 14:28:22 +08:00
|
|
|
|
[Required(ErrorMessage = "请选择证书")]
|
|
|
|
|
|
public long CertificateId { get; set; }
|
2026-04-16 15:42:29 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 页面类型:1-运动员页面,2-教练页面,3-领队页面
|
|
|
|
|
|
/// 用于明确区分不同角色页面的证书生成逻辑
|
|
|
|
|
|
/// </summary>
|
2026-04-17 09:19:21 +08:00
|
|
|
|
public int PageType { get; set; }
|
2026-04-14 10:17:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 发放证书结果
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class IssueCertificateResult
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成功数量
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int SuccessCount { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 失败数量
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public int FailCount { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 失败详情
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public List<string> FailDetails { get; set; } = new List<string>();
|
2026-02-08 18:09:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩导入DTO
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
public class ScoreImportDto
|
|
|
|
|
|
{
|
2026-04-21 23:56:08 +08:00
|
|
|
|
/// <summary>
|
2026-04-22 14:47:50 +08:00
|
|
|
|
/// 报名ID(唯一标识符)
|
2026-04-21 23:56:08 +08:00
|
|
|
|
/// </summary>
|
2026-04-22 14:47:50 +08:00
|
|
|
|
[ExcelColumnName("报名ID")]
|
2026-04-21 23:56:08 +08:00
|
|
|
|
public long? RegistrationItemId { get; set; }
|
|
|
|
|
|
|
2026-03-19 23:36:06 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 赛事地址
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[ExcelColumnName("赛事地址")]
|
|
|
|
|
|
public string EventAddress { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 项目名称
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
[ExcelColumnName("项目")]
|
|
|
|
|
|
public string ProjectName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 组别名称
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
[ExcelColumnName("组别")]
|
|
|
|
|
|
public string GroupName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 姓名
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
[ExcelColumnName("姓名")]
|
|
|
|
|
|
public string Name { get; set; }
|
2026-03-19 23:36:06 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 联系方式
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[ExcelColumnName("联系方式")]
|
|
|
|
|
|
public string Contact { get; set; }
|
2026-02-08 18:09:05 +08:00
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 单位名称
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
[ExcelColumnName("单位")]
|
|
|
|
|
|
public string UnitName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩
|
|
|
|
|
|
/// </summary>
|
2026-02-08 18:09:05 +08:00
|
|
|
|
[ExcelColumnName("成绩")]
|
|
|
|
|
|
public string Score { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
2026-04-14 10:17:28 +08:00
|
|
|
|
/// 名次(数字)
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// </summary>
|
2026-04-14 15:11:41 +08:00
|
|
|
|
[ExcelColumnName("名次(数字)")]
|
2026-04-14 10:17:28 +08:00
|
|
|
|
public int Rank { get; set; }
|
2026-03-19 23:36:06 +08:00
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
2026-04-14 15:11:41 +08:00
|
|
|
|
/// 名次(汉字)
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// </summary>
|
2026-04-14 15:11:41 +08:00
|
|
|
|
[ExcelColumnName("名次(汉字)")]
|
2026-04-14 10:17:28 +08:00
|
|
|
|
public string RankText { get; set; }
|
2026-02-08 18:09:05 +08:00
|
|
|
|
}
|
2026-03-08 15:46:19 +08:00
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 证书导出DTO
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
public class CertificateExportDto
|
|
|
|
|
|
{
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 证书编号
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("证书编号")]
|
|
|
|
|
|
public string CertificateNo { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 姓名
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("姓名")]
|
|
|
|
|
|
public string ParticipantName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 项目名称
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("项目")]
|
|
|
|
|
|
public string ProjectName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 组别名称
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("组别")]
|
|
|
|
|
|
public string GroupName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 单位名称
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("单位")]
|
|
|
|
|
|
public string UnitName { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 成绩
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("成绩")]
|
|
|
|
|
|
public string Score { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 名次
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("名次")]
|
|
|
|
|
|
public int Rank { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 证书类型
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("证书类型")]
|
|
|
|
|
|
public string CertificateType { get; set; }
|
|
|
|
|
|
|
2026-03-18 13:47:34 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 发放时间
|
|
|
|
|
|
/// </summary>
|
2026-03-08 15:46:19 +08:00
|
|
|
|
[ExcelColumnName("发放时间")]
|
|
|
|
|
|
public DateTime? IssuedTime { get; set; }
|
|
|
|
|
|
}
|