2026-04-20 13:01:39 +08:00

501 lines
10 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace YD_Event.Application.Event.Dtos;
/// <summary>
/// 赛事记录分页查询输入
/// </summary>
public class EventRecordPageInput : Pagination
{
/// <summary>
/// 普通用户ID
/// </summary>
public long? AppUserId { get; set; }
/// <summary>
/// 系统用户ID
/// </summary>
public long? SysUserId { get; set; }
/// <summary>
/// 商户ID
/// </summary>
public long? MerchantId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string? EventName { get; set; }
/// <summary>
/// 支付状态
/// </summary>
public int? PaymentStatus { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime? EndTime { get; set; }
}
/// <summary>
/// 赛事记录输出
/// </summary>
public class EventRecordOutput
{
/// <summary>
/// 报名ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 赛事类型
/// </summary>
public string EventType { get; set; }
/// <summary>
/// 比赛开始时间
/// </summary>
public DateTime StartTime { get; set; }
/// <summary>
/// 比赛结束时间
/// </summary>
public DateTime EndTime { get; set; }
/// <summary>
/// 支付状态
/// </summary>
public int PaymentStatus { get; set; }
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 联系人姓名
/// </summary>
public string ContactName { get; set; }
/// <summary>
/// 联系人电话
/// </summary>
public string ContactPhone { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string TeamName { get; set; }
}
/// <summary>
/// 证书信息输出
/// </summary>
public class CertificateOutput
{
/// <summary>
/// 证书ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 证书名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 获奖等级
/// </summary>
public string AwardLevel { get; set; }
/// <summary>
/// 证书类型
/// </summary>
public string CertificateType { get; set; }
/// <summary>
/// 图片URL
/// </summary>
public string ImageUrl { get; set; }
}
/// <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>
/// 收费模式(0-免费,1-收费)
/// </summary>
public int ChargeMode { get; set; }
/// <summary>
/// 实际支付金额
/// </summary>
public decimal ActualPaidAmount { get; set; }
/// <summary>
/// 可退款金额
/// </summary>
public decimal RefundableAmount { get; set; }
/// <summary>
/// 退款规则列表
/// </summary>
public List<RefundRuleDto> RefundRules { get; set; } = new();
/// <summary>
/// 当前适用的退款规则描述
/// </summary>
public string? ApplicableRefundRule { get; set; }
/// <summary>
/// 项目列表
/// </summary>
public List<CancelPreviewProjectDto> Projects { get; set; } = new();
/// <summary>
/// 队员列表
/// </summary>
public List<CancelPreviewMemberDto> Members { get; set; } = new();
}
/// <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; }
}
/// <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>
/// 参赛记录详情(包含项目和队员)
/// </summary>
public class RegistrationDetailWithItemsDto
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string TeamName { 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; }
/// <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; }
}