2026-04-28 08:58:54 +08:00

716 lines
16 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 List<EventRegistrationItemOutput> Items { get; set; } = new();
/// <summary>
/// 该赛事的所有报名记录ID列表
/// </summary>
public List<long> RegistrationIds { get; set; } = new();
}
/// <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; }
}
/// <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-定价(赛事),2-单价(赛事),3-单价(项目))
/// </summary>
public int ChargeMode { get; set; }
/// <summary>
/// 实际支付金额
/// </summary>
public decimal ActualPaidAmount { get; set; }
/// <summary>
/// 可退款金额(全部取消时)
/// </summary>
public decimal RefundableAmount { get; set; }
/// <summary>
/// 当前选择的退款金额(动态计算)
/// </summary>
public decimal CurrentRefundAmount { get; set; }
/// <summary>
/// 退款规则列表
/// </summary>
public List<RefundRuleDto> RefundRules { get; set; } = new();
/// <summary>
/// 当前适用的退款规则描述
/// </summary>
public string? ApplicableRefundRule { get; set; }
/// <summary>
/// 项目列表(包含组别和团队信息)
/// </summary>
public List<CancelPreviewProjectDetailDto> ProjectDetails { get; set; } = new();
/// <summary>
/// 项目列表(保持兼容旧版)
/// </summary>
public List<CancelPreviewProjectDto> Projects { get; set; } = new();
/// <summary>
/// 队员列表(保持兼容旧版)
/// </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; }
}
/// <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();
}
/// <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>
/// 要取消的团队列表(团队项目部分取消时使用)
/// 每个元素格式: {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>
/// 参赛记录详情(包含项目和队员)
/// </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; }
}