962 lines
21 KiB
C#
Raw Normal View History

2026-03-08 15:46:19 +08:00
namespace YD_Event.Application.Event.Dtos;
2026-03-06 12:10:09 +08:00
2026-03-18 13:47:34 +08:00
/// <summary>
/// 赛事记录分页查询输入
/// </summary>
2026-03-06 12:10:09 +08:00
public class EventRecordPageInput : Pagination
{
2026-03-06 12:29:07 +08:00
/// <summary>
/// 普通用户ID
/// </summary>
public long? AppUserId { get; set; }
2026-04-13 06:58:21 +08:00
/// <summary>
/// 系统用户ID
/// </summary>
public long? SysUserId { get; set; }
2026-03-06 12:29:07 +08:00
/// <summary>
/// 商户ID
/// </summary>
public long? MerchantId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
2026-03-06 12:10:09 +08:00
public string? EventName { get; set; }
2026-03-06 12:29:07 +08:00
/// <summary>
2026-04-09 23:12:51 +08:00
/// 支付状态
2026-03-06 12:29:07 +08:00
/// </summary>
2026-04-09 23:12:51 +08:00
public int? PaymentStatus { get; set; }
2026-03-06 12:29:07 +08:00
2026-03-18 13:47:34 +08:00
/// <summary>
/// 开始时间
/// </summary>
2026-03-06 12:10:09 +08:00
public DateTime? StartTime { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 结束时间
/// </summary>
2026-03-06 12:10:09 +08:00
public DateTime? EndTime { get; set; }
}
2026-03-18 13:47:34 +08:00
/// <summary>
/// 赛事记录输出
/// </summary>
2026-03-06 12:10:09 +08:00
public class EventRecordOutput
{
2026-03-18 13:47:34 +08:00
/// <summary>
/// 报名ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
2026-03-06 12:10:09 +08:00
public string EventName { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 赛事类型
/// </summary>
public string EventType { get; set; }
/// <summary>
/// 比赛开始时间
/// </summary>
2026-03-06 12:10:09 +08:00
public DateTime StartTime { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 比赛结束时间
/// </summary>
2026-03-06 12:10:09 +08:00
public DateTime EndTime { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
2026-04-09 23:12:51 +08:00
/// 支付状态
2026-03-18 13:47:34 +08:00
/// </summary>
2026-04-09 23:12:51 +08:00
public int PaymentStatus { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 赛事ID
/// </summary>
2026-03-06 12:10:09 +08:00
public long EventId { get; set; }
2026-03-06 12:29:07 +08:00
2026-03-18 13:47:34 +08:00
/// <summary>
/// 联系人姓名
/// </summary>
2026-03-06 12:29:07 +08:00
public string ContactName { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 联系人电话
/// </summary>
2026-03-06 12:29:07 +08:00
public string ContactPhone { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 团队名称
/// </summary>
2026-03-06 12:29:07 +08:00
public string TeamName { get; set; }
2026-04-27 13:22:59 +08:00
/// <summary>
2026-05-09 14:37:27 +08:00
/// 证书列表(二级列表)
2026-04-27 13:22:59 +08:00
/// </summary>
2026-05-09 14:37:27 +08:00
public List<EventCertificateItemOutput> Items { get; set; } = new();
2026-04-27 13:22:59 +08:00
/// <summary>
/// 该赛事的所有报名记录ID列表
/// </summary>
public List<long> RegistrationIds { get; set; } = new();
2026-05-07 08:33:53 +08:00
/// <summary>
/// 赛事创建时间(用于排序)
/// </summary>
public DateTime EventCreatedTime { get; set; }
2026-04-27 13:22:59 +08:00
}
2026-05-09 14:37:27 +08:00
/// <summary>
/// 证书项输出(二级列表)
/// </summary>
public class EventCertificateItemOutput
{
/// <summary>
/// 证书ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 参赛人员姓名
/// </summary>
public string ParticipantName { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 角色(运动员/教练/领队)
/// </summary>
public string Role { get; set; }
/// <summary>
/// 证书URL(直接点击查看)
/// </summary>
public string CertificateUrl { get; set; }
/// <summary>
/// 证书编号
/// </summary>
public string CertificateNo { get; set; }
/// <summary>
/// 证书类型
/// </summary>
public int CertificateType { get; set; }
/// <summary>
/// 颁发时间
/// </summary>
public DateTime IssuedTime { get; set; }
/// <summary>
/// 成绩
/// </summary>
public string? Score { get; set; }
/// <summary>
/// 名次
/// </summary>
public int? Rank { get; set; }
}
2026-04-27 13:22:59 +08:00
/// <summary>
/// 报名项目输出
/// </summary>
public class EventRegistrationItemOutput
{
/// <summary>
/// 报名项目ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 项目类型名称
/// </summary>
public string ProjectTypeName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 报名人数
/// </summary>
public int PersonCount { get; set; }
/// <summary>
/// 成绩
/// </summary>
public string? Score { get; set; }
/// <summary>
/// 名次
/// </summary>
public string? Rank { get; set; }
2026-05-07 08:33:53 +08:00
/// <summary>
/// 队员姓名列表(逗号分隔)
/// </summary>
public string? MemberNames { get; set; }
/// <summary>
/// 队员ID列表
/// </summary>
public List<long>? MemberIds { get; set; }
/// <summary>
/// 队员详细信息列表
/// </summary>
public List<MemberInfo>? Members { get; set; }
/// <summary>
/// 是否为个人项目
/// </summary>
public bool IsIndividualProject { get; set; }
/// <summary>
/// 项目类型枚举值
/// </summary>
public int ProjectType { get; set; }
}
/// <summary>
/// 队员信息
/// </summary>
public class MemberInfo
{
/// <summary>
/// 队员ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 人员类型:1-运动员,2-教练,3-领队
/// </summary>
public int PersonType { get; set; }
2026-03-06 12:10:09 +08:00
}
2026-03-18 13:47:34 +08:00
/// <summary>
/// 证书信息输出
/// </summary>
2026-03-06 12:10:09 +08:00
public class CertificateOutput
{
2026-03-18 13:47:34 +08:00
/// <summary>
/// 证书ID
/// </summary>
2026-03-06 12:10:09 +08:00
public long Id { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 证书名称
/// </summary>
2026-03-06 12:10:09 +08:00
public string Name { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 获奖等级
/// </summary>
2026-03-06 12:10:09 +08:00
public string AwardLevel { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 证书类型
/// </summary>
2026-03-06 12:10:09 +08:00
public string CertificateType { get; set; }
2026-03-18 13:47:34 +08:00
/// <summary>
/// 图片URL
/// </summary>
2026-03-06 12:10:09 +08:00
public string ImageUrl { get; set; }
}
2026-05-07 14:43:03 +08:00
/// <summary>
/// 证书列表项输出
/// </summary>
public class CertificateListItemDTO
{
/// <summary>
/// 证书ID
/// </summary>
public long CertificateId { get; set; }
/// <summary>
/// 证书URL
/// </summary>
public string CertificateUrl { get; set; }
/// <summary>
/// 证书编号
/// </summary>
public string CertificateNo { get; set; }
/// <summary>
/// 参赛人员姓名
/// </summary>
public string ParticipantName { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 报名项目ID
/// </summary>
public long RegistrationItemId { get; set; }
/// <summary>
/// 角色(运动员/教练/领队)
/// </summary>
public string Role { get; set; }
/// <summary>
/// 证书类型
/// </summary>
public int CertificateType { get; set; }
/// <summary>
/// 颁发时间
/// </summary>
public DateTime IssuedTime { get; set; }
2026-05-08 18:02:40 +08:00
/// <summary>
/// 成绩
/// </summary>
public string? Score { get; set; }
/// <summary>
/// 名次
/// </summary>
public int? Rank { get; set; }
2026-05-07 14:43:03 +08:00
}
/// <summary>
/// 取消报名预览输入
/// </summary>
public class CancelPreviewInput
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
}
/// <summary>
/// 取消报名预览输出
/// </summary>
public class CancelPreviewOutput
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string TeamName { get; set; }
/// <summary>
2026-04-28 08:58:54 +08:00
/// 收费模式(0-免费,1-定价(赛事),2-单价(赛事),3-单价(项目))
/// </summary>
public int ChargeMode { get; set; }
/// <summary>
/// 实际支付金额
/// </summary>
public decimal ActualPaidAmount { get; set; }
/// <summary>
2026-04-28 08:58:54 +08:00
/// 可退款金额(全部取消时)
/// </summary>
public decimal RefundableAmount { get; set; }
2026-04-28 08:58:54 +08:00
2026-04-29 09:33:33 +08:00
/// <summary>
/// 历史已退款金额
/// </summary>
public decimal RefundedAmount { get; set; }
2026-04-28 08:58:54 +08:00
/// <summary>
/// 当前选择的退款金额(动态计算)
/// </summary>
public decimal CurrentRefundAmount { get; set; }
2026-04-17 12:47:13 +08:00
/// <summary>
/// 退款规则列表
/// </summary>
public List<RefundRuleDto> RefundRules { get; set; } = new();
/// <summary>
/// 当前适用的退款规则描述
/// </summary>
public string? ApplicableRefundRule { get; set; }
/// <summary>
2026-04-28 08:58:54 +08:00
/// 项目列表(包含组别和团队信息)
/// </summary>
public List<CancelPreviewProjectDetailDto> ProjectDetails { get; set; } = new();
/// <summary>
/// 项目列表(保持兼容旧版)
/// </summary>
public List<CancelPreviewProjectDto> Projects { get; set; } = new();
/// <summary>
2026-04-28 08:58:54 +08:00
/// 队员列表(保持兼容旧版)
/// </summary>
public List<CancelPreviewMemberDto> Members { get; set; } = new();
/// <summary>
/// 支付方式(1-线下 2-线上)
/// </summary>
public int PaymentMethod { get; set; }
/// <summary>
/// 支付状态(0-未支付 1-已支付 2-支付中 3-退款中 4-已取消)
/// </summary>
public int PaymentStatus { get; set; }
/// <summary>
/// 是否需要填写收款人信息(线下支付且已支付时需要)
/// </summary>
public bool NeedPayeeInfo { get; set; }
}
2026-04-28 08:58:54 +08:00
/// <summary>
/// 取消报名项目详情DTO(包含组别和团队信息)
/// </summary>
public class CancelPreviewProjectDetailDto
{
/// <summary>
/// 项目ID
/// </summary>
public long ProjectId { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 项目类型(个人/团队)
/// </summary>
public string ProjectType { get; set; }
/// <summary>
/// 人数
/// </summary>
public int PersonCount { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal UnitPrice { get; set; }
/// <summary>
/// 组别列表
/// </summary>
public List<CancelPreviewGroupDto> Groups { get; set; } = new();
}
/// <summary>
/// 取消报名组别DTO
/// </summary>
public class CancelPreviewGroupDto
{
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 报名项目ID
/// </summary>
public long RegistrationItemId { get; set; }
/// <summary>
/// 项目类型名称
/// </summary>
public string ProjectTypeName { get; set; }
/// <summary>
/// 人数
/// </summary>
public int PersonCount { get; set; }
/// <summary>
/// 该报名项目的单价
/// </summary>
public decimal UnitPrice { get; set; }
/// <summary>
/// 出生日期起始日期(年龄限制)
/// </summary>
public DateTime? BirthDateStart { get; set; }
/// <summary>
/// 出生日期结束日期(年龄限制)
/// </summary>
public DateTime? BirthDateEnd { get; set; }
/// <summary>
/// 性别要求
/// </summary>
public Gender? GenderRequirement { get; set; }
/// <summary>
/// 团队列表(个人项目只有一个"无团队"条目)
/// </summary>
public List<CancelPreviewTeamDto> Teams { get; set; } = new();
}
/// <summary>
/// 取消报名团队DTO
/// </summary>
public class CancelPreviewTeamDto
{
/// <summary>
/// 团队名称
/// </summary>
public string TeamName { get; set; }
/// <summary>
/// 团队索引(用于标识不同的团队)
/// </summary>
public int TeamIndex { get; set; }
/// <summary>
/// 所属的报名项目ID
/// </summary>
public long RegistrationItemId { get; set; }
/// <summary>
/// 队员列表
/// </summary>
public List<CancelPreviewMemberDto> Members { get; set; } = new();
}
2026-04-17 12:47:13 +08:00
/// <summary>
/// 退款规则DTO
/// </summary>
public class RefundRuleDto
{
/// <summary>
/// 距离比赛开始天数(起)
/// </summary>
public int DayStart { get; set; }
/// <summary>
/// 距离比赛开始天数(止)
/// </summary>
public int DayEnd { get; set; }
/// <summary>
/// 扣除比例(%)
/// </summary>
public decimal DeductPercentage { get; set; }
/// <summary>
/// 退款备注
/// </summary>
public string? Remark { get; set; }
}
/// <summary>
/// 取消报名项目DTO
/// </summary>
public class CancelPreviewProjectDto
{
/// <summary>
/// 项目ID
/// </summary>
public long ProjectId { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 项目类型(个人/团队)
/// </summary>
public string ProjectType { get; set; }
/// <summary>
/// 人数
/// </summary>
public int PersonCount { get; set; }
/// <summary>
/// 单价
/// </summary>
public decimal UnitPrice { get; set; }
}
/// <summary>
/// 取消报名队员DTO
/// </summary>
public class CancelPreviewMemberDto
{
/// <summary>
/// 队员ID
/// </summary>
public long MemberId { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 是否为队长
/// </summary>
public bool IsLeader { get; set; }
}
/// <summary>
/// 取消报名执行输入
/// </summary>
public class CancelExecuteInput
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 取消类型(0-全部取消,1-部分取消)
/// </summary>
public int CancelType { get; set; }
/// <summary>
/// 取消原因
/// </summary>
public string CancelReason { get; set; }
/// <summary>
/// 要取消的队员ID列表(部分取消时使用)
/// </summary>
public List<long>? PersonIds { get; set; }
2026-04-28 08:58:54 +08:00
/// <summary>
/// 要取消的团队列表(团队项目部分取消时使用)
/// 每个元素格式: {RegistrationItemId}_{TeamIndex}
/// </summary>
public List<string>? CancelTeams { get; set; }
/// <summary>
/// 当前计算的退款金额
/// </summary>
public decimal CalculatedRefundAmount { get; set; }
/// <summary>
/// 收款人姓名(线下支付且已支付时必填)
/// </summary>
public string? PayeeName { get; set; }
/// <summary>
/// 收款人开户行(线下支付且已支付时必填)
/// </summary>
public string? PayeeBankName { get; set; }
/// <summary>
/// 收款人银行卡号(线下支付且已支付时必填)
/// </summary>
public string? PayeeBankAccount { get; set; }
}
/// <summary>
/// 取消报名执行输出
/// </summary>
public class CancelExecuteOutput
{
/// <summary>
/// 是否成功
/// </summary>
public bool Success { get; set; }
/// <summary>
/// 消息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 退款金额
/// </summary>
public decimal RefundAmount { get; set; }
/// <summary>
/// 退款单号
/// </summary>
public string? RefundNo { get; set; }
/// <summary>
/// 取消时间
/// </summary>
public DateTime CancelTime { get; set; }
}
/// <summary>
2026-04-30 09:28:50 +08:00
/// 计算退款金额请求
/// </summary>
public class CalculateRefundAmountInput
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 取消类型(0-全部取消,1-部分取消)
/// </summary>
public int CancelType { get; set; }
/// <summary>
/// 要取消的队员ID列表(部分取消时使用)
/// </summary>
public List<long>? PersonIds { get; set; }
/// <summary>
/// 要取消的团队列表(团队项目部分取消时使用)
/// 每个元素格式: {RegistrationItemId}_{TeamIndex}
/// </summary>
public List<string>? CancelTeams { get; set; }
}
/// <summary>
/// 计算退款金额输出
/// </summary>
public class CalculateRefundAmountOutput
{
/// <summary>
/// 计算后的退款金额
/// </summary>
public decimal refundAmount { get; set; }
/// <summary>
/// 剩余可退款金额
/// </summary>
public decimal refundableAmount { get; set; }
/// <summary>
/// 历史已退款金额
/// </summary>
public decimal refundedAmount { get; set; }
/// <summary>
/// 实际支付金额
/// </summary>
public decimal actualPaidAmount { get; set; }
}
/// <summary>
/// 参赛记录详情(包含项目和队员)
/// </summary>
public class RegistrationDetailWithItemsDto
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
2026-04-20 13:01:39 +08:00
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string TeamName { get; set; }
2026-05-06 22:20:16 +08:00
/// <summary>
/// 报名结束时间
/// </summary>
public DateTime RegistrationEndTime { get; set; }
/// <summary>
/// 赛事状态
/// </summary>
public int EventStatus { get; set; }
/// <summary>
/// 项目列表
/// </summary>
public List<RegistrationItemWithMembersDto> Items { get; set; } = new();
}
/// <summary>
/// 报名项目(包含队员)
/// </summary>
public class RegistrationItemWithMembersDto
{
/// <summary>
/// 报名项目ID
/// </summary>
public long RegistrationItemId { get; set; }
/// <summary>
/// 项目ID
/// </summary>
public long ProjectId { get; set; }
2026-04-20 13:01:39 +08:00
/// <summary>
/// 赛事项目组别ID(用于验证)
/// </summary>
public long EventProjectGroupId { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 项目类型
/// </summary>
public string ProjectTypeName { get; set; }
/// <summary>
/// 人数
/// </summary>
public int PersonCount { get; set; }
/// <summary>
/// 项目完成人数(从Project表读取)
/// </summary>
public int ProjectCompletionCount { get; set; }
/// <summary>
/// 出生日期起始日期(年龄限制)
/// </summary>
public DateTime? BirthDateStart { get; set; }
/// <summary>
/// 出生日期结束日期(年龄限制)
/// </summary>
public DateTime? BirthDateEnd { get; set; }
/// <summary>
/// 性别要求
/// </summary>
public Gender? GenderRequirement { get; set; }
/// <summary>
/// 队员列表
/// </summary>
public List<RegistrationPersonDto> Members { get; set; } = new();
}
/// <summary>
/// 更新参赛队员输入
/// </summary>
public class UpdateRegistrationMembersInput
{
/// <summary>
/// 报名ID
/// </summary>
[Required(ErrorMessage = "报名ID不能为空")]
public long RegistrationId { get; set; }
/// <summary>
/// 项目队员更新列表
/// </summary>
[Required(ErrorMessage = "项目队员列表不能为空")]
public List<UpdateItemMembersInput> Items { get; set; } = new();
}
/// <summary>
/// 项目队员更新
/// </summary>
public class UpdateItemMembersInput
{
/// <summary>
/// 报名项目ID
/// </summary>
[Required(ErrorMessage = "报名项目ID不能为空")]
public long RegistrationItemId { get; set; }
/// <summary>
/// 队员列表
/// </summary>
[Required(ErrorMessage = "队员列表不能为空")]
public List<UpdatePersonInput> Members { get; set; } = new();
}
/// <summary>
/// 更新队员信息
/// </summary>
public class UpdatePersonInput
{
/// <summary>
/// 用户ID(新队员)
/// </summary>
public long? UserId { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string? Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender? Gender { get; set; }
/// <summary>
/// 身份证号
/// </summary>
public string? IdCardNumber { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? BirthDate { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string? Mobile { get; set; }
}