633 lines
12 KiB
C#

using System.ComponentModel.DataAnnotations;
using YD_Event.Core.Enum;
namespace YD_Event.Application.Client.Dtos;
/// <summary>
/// 赛事列表项DTO
/// </summary>
public class EventListDto
{
/// <summary>
/// 赛事ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 封面图片
/// </summary>
public string CoverImage { get; set; }
/// <summary>
/// 赛事状态
/// </summary>
public EventStatus EventStatus { get; set; }
/// <summary>
/// 报名开始时间
/// </summary>
public DateTime RegistrationStartTime { get; set; }
/// <summary>
/// 报名结束时间
/// </summary>
public DateTime RegistrationEndTime { get; set; }
/// <summary>
/// 比赛开始时间
/// </summary>
public DateTime MatchStartTime { get; set; }
/// <summary>
/// 比赛结束时间
/// </summary>
public DateTime MatchEndTime { get; set; }
/// <summary>
/// 地址 (省市区+详细地址)
/// </summary>
public string Address { get; set; }
}
/// <summary>
/// 轮播图DTO
/// </summary>
public class BannerDto
{
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; }
/// <summary>
/// 图片地址
/// </summary>
public string ImageUrl { get; set; }
/// <summary>
/// 跳转链接类型
/// </summary>
public LinkType LinkType { get; set; }
/// <summary>
/// 跳转链接URL
/// </summary>
public string LinkUrl { get; set; }
/// <summary>
/// 关联赛事ID
/// </summary>
public long? EventId { get; set; }
}
/// <summary>
/// 赛事单位DTO
/// </summary>
public class EventUnitDto
{
/// <summary>
/// 单位类型
/// </summary>
public UnitType UnitType { get; set; }
/// <summary>
/// 单位名称
/// </summary>
public string UnitName { get; set; }
/// <summary>
/// Logo图片地址
/// </summary>
public string LogoUrl { get; set; }
}
/// <summary>
/// 赛事详情DTO
/// </summary>
public class EventDetailDto : EventListDto
{
/// <summary>
/// 宣传视频
/// </summary>
public string EventVideo { get; set; }
/// <summary>
/// 赛事类型
/// </summary>
public EventFormat EventType { get; set; }
/// <summary>
/// 收费模式
/// </summary>
public ChargeMode ChargeMode { get; set; }
/// <summary>
/// 报名类型
/// </summary>
public RegistrationType RegistrationType { get; set; }
/// <summary>
/// 赛事介绍
/// </summary>
public string EventIntroduction { get; set; }
/// <summary>
/// 资料备注
/// </summary>
public string MaterialRemark { get; set; }
/// <summary>
/// 资料上传开始时间
/// </summary>
public DateTime? MaterialUploadStartTime { get; set; }
/// <summary>
/// 资料上传结束时间
/// </summary>
public DateTime? MaterialUploadEndTime { get; set; }
/// <summary>
/// 退款规则文本
/// </summary>
public string RefundRule { get; set; }
/// <summary>
/// 积分规则文本
/// </summary>
public string PointsRule { get; set; }
/// <summary>
/// 个人项目限报数量
/// </summary>
public int IndividualProjectLimit { get; set; }
/// <summary>
/// 团队项目限报数量
/// </summary>
public int TeamProjectLimit { get; set; }
/// <summary>
/// 单位列表
/// </summary>
public List<EventUnitDto> Units { get; set; }
/// <summary>
/// 项目列表
/// </summary>
public List<EventProjectDto> Projects { get; set; }
/// <summary>
/// 上级项目类型名称
/// </summary>
public string? ParentProjectTypeName { get; set; }
}
/// <summary>
/// 赛事项目DTO
/// </summary>
public class EventProjectDto
{
/// <summary>
/// 项目ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 类型名称 (个人/团队)
/// </summary>
public string TypeName { get; set; }
/// <summary>
/// 报名费用
/// </summary>
public decimal Fee { get; set; }
/// <summary>
/// 组别列表
/// </summary>
public List<EventProjectGroupDto> Groups { get; set; }
}
/// <summary>
/// 项目组别DTO
/// </summary>
public class EventProjectGroupDto
{
/// <summary>
/// 组别ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 性别要求文本
/// </summary>
public string GenderRequirement { get; set; }
/// <summary>
/// 年龄要求文本
/// </summary>
public string AgeRequirement { get; set; }
}
/// <summary>
/// 赛事报名提交DTO
/// </summary>
public class SubmitRegistrationInput
{
/// <summary>
/// 赛事ID
/// </summary>
[Required]
public long EventId { get; set; }
/// <summary>
/// 报名模式 (1-个人 2-团队)
/// </summary>
[Required]
public int RegistrationMode { get; set; }
/// <summary>
/// 团队名称 (团队报名必填)
/// </summary>
public string? TeamName { get; set; }
/// <summary>
/// 联系人姓名
/// </summary>
[Required]
public string ContactName { get; set; }
/// <summary>
/// 联系人电话
/// </summary>
[Required]
public string ContactPhone { get; set; }
/// <summary>
/// 报名项目列表
/// </summary>
[Required]
public List<SubmitRegistrationItemInput> Items { get; set; }
}
/// <summary>
/// 报名项目输入
/// </summary>
public class SubmitRegistrationItemInput
{
/// <summary>
/// 项目ID
/// </summary>
public long ProjectId { get; set; }
/// <summary>
/// 组别名称 (冗余存储,也可传 GroupId)
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 组别ID (建议传ID)
/// </summary>
public long? GroupId { get; set; }
/// <summary>
/// 参赛人员列表
/// </summary>
public List<PersonInput> Persons { get; set; }
}
/// <summary>
/// 参赛人员输入
/// </summary>
public class PersonInput
{
/// <summary>
/// 姓名
/// </summary>
[Required]
public string Name { get; set; }
/// <summary>
/// 身份证号
/// </summary>
[Required]
public string IdCardNumber { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender Gender { get; set; }
/// <summary>
/// 电话
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime BirthDate { get; set; }
}
/// <summary>
/// 支付信息DTO
/// </summary>
public class PaymentInfoDto
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 金额
/// </summary>
public decimal Amount { get; set; }
/// <summary>
/// 支付方式 (1-线下 2-线上)
/// </summary>
public int PaymentMethod { get; set; }
/// <summary>
/// 银行账户名 (线下支付)
/// </summary>
public string? BankAccountName { get; set; }
/// <summary>
/// 银行账号 (线下支付)
/// </summary>
public string? BankAccountNo { get; set; }
/// <summary>
/// 开户行 (线下支付)
/// </summary>
public string? BankName { get; set; }
/// <summary>
/// 微信支付参数
/// </summary>
public object? WechatPayParams { get; set; }
}
/// <summary>
/// 上传凭证输入DTO
/// </summary>
public class UploadVoucherInput
{
/// <summary>
/// 凭证图片URL
/// </summary>
[Required]
public string VoucherUrl { get; set; }
}
/// <summary>
/// 更新参赛人输入DTO
/// </summary>
public class UpdatePlayerInput
{
/// <summary>
/// 参赛人员ID
/// </summary>
[Required]
public long PersonId { get; set; }
/// <summary>
/// 姓名
/// </summary>
[Required]
public string Name { get; set; }
/// <summary>
/// 身份证号
/// </summary>
[Required]
public string IdCardNumber { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender Gender { get; set; }
/// <summary>
/// 电话
/// </summary>
public string Mobile { get; set; }
}
/// <summary>
/// 已报赛事列表DTO
/// </summary>
public class MyEventListDto
{
/// <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 CoverImage { get; set; }
/// <summary>
/// 报名状态
/// </summary>
public int RegistrationStatus { get; set; }
/// <summary>
/// 支付状态
/// </summary>
public int PaymentStatus { get; set; }
/// <summary>
/// 报名时间
/// </summary>
public DateTime RegistrationTime { get; set; }
/// <summary>
/// 报名项目数
/// </summary>
public int ProjectCount { get; set; }
}
/// <summary>
/// 报名详情DTO
/// </summary>
public class RegistrationDetailDto
{
/// <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 CoverImage { get; set; }
/// <summary>
/// 赛事状态
/// </summary>
public EventStatus EventStatus { get; set; }
/// <summary>
/// 报名状态
/// </summary>
public int RegistrationStatus { get; set; }
/// <summary>
/// 支付状态
/// </summary>
public int PaymentStatus { get; set; }
/// <summary>
/// 总金额
/// </summary>
public decimal TotalAmount { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; }
/// <summary>
/// 报名时间
/// </summary>
public DateTime RegistrationTime { get; set; }
/// <summary>
/// 审核备注
/// </summary>
public string? ReviewRemark { get; set; }
/// <summary>
/// 报名项目及人员
/// </summary>
public List<RegistrationItemDto> Items { get; set; }
}
/// <summary>
/// 报名项目信息DTO
/// </summary>
public class RegistrationItemDto
{
/// <summary>
/// 报名项目ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 价格
/// </summary>
public decimal Price { get; set; }
/// <summary>
/// 参赛人员列表
/// </summary>
public List<RegistrationPersonDto> Persons { get; set; }
}
/// <summary>
/// 报名人员信息DTO
/// </summary>
public class RegistrationPersonDto
{
/// <summary>
/// 报名人员ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 身份证号
/// </summary>
public string IdCardNumber { get; set; }
/// <summary>
/// 性别
/// </summary>
public Gender Gender { get; set; }
/// <summary>
/// 电话
/// </summary>
public string Mobile { get; set; }
}
/// <summary>
/// 报名状态查询DTO
/// </summary>
public class RegistrationStatusDto
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 报名状态
/// </summary>
public int RegistrationStatus { get; set; }
/// <summary>
/// 支付状态
/// </summary>
public int PaymentStatus { get; set; }
/// <summary>
/// 拒绝/取消原因
/// </summary>
public string RejectReason { get; set; }
}