497 lines
11 KiB
C#
497 lines
11 KiB
C#
using System.ComponentModel.DataAnnotations;
|
||
using YD_Event.Core.Enum;
|
||
using YD_Event.Application.Project.Dtos;
|
||
|
||
namespace YD_Event.Application.Event.Dtos;
|
||
|
||
/// <summary>
|
||
/// 赛事查询输入
|
||
/// </summary>
|
||
public class EventQueryInput : Pagination
|
||
{
|
||
/// <summary>
|
||
/// 赛事名称
|
||
/// </summary>
|
||
public string? EventName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事类型
|
||
/// </summary>
|
||
public EventFormat? EventType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 收费模式
|
||
/// </summary>
|
||
public ChargeMode? ChargeMode { 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 class EventExportInput : EventQueryInput
|
||
{
|
||
/// <summary>
|
||
/// 导出字段列表(如:赛事名称,赛事类型...)
|
||
/// </summary>
|
||
public List<string>? ExportFields { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 赛事列表输出
|
||
/// </summary>
|
||
public class EventListOutput
|
||
{
|
||
/// <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 EventFormat EventType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报名方式
|
||
/// </summary>
|
||
public RegistrationType RegistrationType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 收费模式
|
||
/// </summary>
|
||
public ChargeMode ChargeMode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 收款商户名称
|
||
/// </summary>
|
||
public string? MerchantName { 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>
|
||
/// 二维码URL
|
||
/// </summary>
|
||
public string? QrCodeUrl { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 参与单位输入/输出
|
||
/// </summary>
|
||
public class EventUnitDto
|
||
{
|
||
/// <summary>
|
||
/// 单位类型
|
||
/// </summary>
|
||
public UnitType UnitType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 单位名称
|
||
/// </summary>
|
||
public string UnitName { get; set; }
|
||
|
||
/// <summary>
|
||
/// Logo URL
|
||
/// </summary>
|
||
public string? LogoUrl { get; set; }
|
||
|
||
/// <summary>
|
||
/// 排序
|
||
/// </summary>
|
||
public int Sort { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 添加赛事输入
|
||
/// </summary>
|
||
public class AddEventInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事名称
|
||
/// </summary>
|
||
[Required(ErrorMessage = "赛事名称不能为空")]
|
||
[MaxLength(128, ErrorMessage = "赛事名称限制128字符")]
|
||
public string EventName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 封面
|
||
/// </summary>
|
||
[Required(ErrorMessage = "封面不能为空")]
|
||
public string CoverImage { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事视频
|
||
/// </summary>
|
||
public string? EventVideo { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事类型
|
||
/// </summary>
|
||
[Required(ErrorMessage = "赛事类型不能为空")]
|
||
public EventFormat EventType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报名方式
|
||
/// </summary>
|
||
[Required(ErrorMessage = "报名方式不能为空")]
|
||
public RegistrationType RegistrationType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 积分规则ID
|
||
/// </summary>
|
||
[Required(ErrorMessage = "积分规则不能为空")]
|
||
public long PointsRuleId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报名开始时间
|
||
/// </summary>
|
||
[Required(ErrorMessage = "报名起止时间不能为空")]
|
||
public DateTime RegistrationStartTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报名结束时间
|
||
/// </summary>
|
||
[Required(ErrorMessage = "报名起止时间不能为空")]
|
||
public DateTime RegistrationEndTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否上传素材
|
||
/// </summary>
|
||
public bool IsNeedMaterial { 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>
|
||
[Required(ErrorMessage = "比赛起止时间不能为空")]
|
||
public DateTime MatchStartTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 比赛结束时间
|
||
/// </summary>
|
||
[Required(ErrorMessage = "比赛起止时间不能为空")]
|
||
public DateTime MatchEndTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 省份ID
|
||
/// </summary>
|
||
public int ProvinceId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 城市ID
|
||
/// </summary>
|
||
public int CityId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 区县ID
|
||
/// </summary>
|
||
public int DistrictId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 详细地址
|
||
/// </summary>
|
||
public string? DetailAddress { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事简介
|
||
/// </summary>
|
||
public string? EventIntroduction { get; set; }
|
||
|
||
/// <summary>
|
||
/// 自定义字段配置(JSON)
|
||
/// </summary>
|
||
public string? CustomConfigJson { get; set; }
|
||
|
||
/// <summary>
|
||
/// 参与单位列表
|
||
/// </summary>
|
||
public List<EventUnitDto>? Units { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目列表(Step 3)
|
||
/// </summary>
|
||
public List<EventProjectInput>? Projects { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报名限制(Step 3)
|
||
/// </summary>
|
||
public EventRegistrationLimitInput? RegistrationLimit { get; set; }
|
||
|
||
/// <summary>
|
||
/// 费用配置(Step 4)
|
||
/// </summary>
|
||
public EventFeeConfigInput? FeeConfig { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 赛事项目输入
|
||
/// </summary>
|
||
public class EventProjectInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事项目ID (更新时使用)
|
||
/// </summary>
|
||
public long? Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目ID
|
||
/// </summary>
|
||
[Required(ErrorMessage = "项目ID不能为空")]
|
||
public long ProjectId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目名称 (显示用)
|
||
/// </summary>
|
||
public string? Name { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目类型ID (显示用)
|
||
/// </summary>
|
||
public long? ProjectTypeId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目类型名称 (显示用)
|
||
/// </summary>
|
||
public string? ProjectTypeName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 性别要求
|
||
/// </summary>
|
||
public Gender GenderType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 比赛时长(分) (显示用)
|
||
/// </summary>
|
||
public int? DurationMinutes { get; set; }
|
||
|
||
/// <summary>
|
||
/// 比赛时长(秒) (显示用)
|
||
/// </summary>
|
||
public int? DurationSeconds { get; set; }
|
||
|
||
/// <summary>
|
||
/// 项目费用(Step 4)
|
||
/// </summary>
|
||
public decimal Fee { get; set; }
|
||
|
||
/// <summary>
|
||
/// 报名限制数量(Step 3)
|
||
/// </summary>
|
||
public int? LimitCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 组别列表
|
||
/// </summary>
|
||
public List<EventProjectGroupInput> Groups { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 赛事项目组别输入
|
||
/// </summary>
|
||
public class EventProjectGroupInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事项目组别ID (更新时使用)
|
||
/// </summary>
|
||
public long? Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 关联的项目组别ID
|
||
/// </summary>
|
||
[Required(ErrorMessage = "项目组别ID不能为空")]
|
||
public long ProjectGroupId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 组别名称 (显示用)
|
||
/// </summary>
|
||
public string? GroupName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 出生日期起始日期 (显示用)
|
||
/// </summary>
|
||
public DateTime? BirthDateStart { get; set; }
|
||
|
||
/// <summary>
|
||
/// 出生日期结束日期 (显示用)
|
||
/// </summary>
|
||
public DateTime? BirthDateEnd { get; set; }
|
||
|
||
/// <summary>
|
||
/// 性别要求 (显示用)
|
||
/// </summary>
|
||
public Gender? Gender { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 报名限制输入
|
||
/// </summary>
|
||
public class EventRegistrationLimitInput
|
||
{
|
||
/// <summary>
|
||
/// 个人项目限报数量
|
||
/// </summary>
|
||
public int IndividualProjectLimit { get; set; }
|
||
|
||
/// <summary>
|
||
/// 团队项目限报数量
|
||
/// </summary>
|
||
public int TeamProjectLimit { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 费用配置输入
|
||
/// </summary>
|
||
public class EventFeeConfigInput
|
||
{
|
||
/// <summary>
|
||
/// 收费模式
|
||
/// </summary>
|
||
public ChargeMode ChargeMode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 统一价格
|
||
/// </summary>
|
||
public decimal Price { get; set; }
|
||
|
||
/// <summary>
|
||
/// 商户ID
|
||
/// </summary>
|
||
public long MerchantId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 商户名称 (显示字段)
|
||
/// </summary>
|
||
public string? MerchantName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 信用代码 (显示字段)
|
||
/// </summary>
|
||
public string? CreditCode { get; set; }
|
||
|
||
/// <summary>
|
||
/// 银行名称 (显示字段)
|
||
/// </summary>
|
||
public string? BankName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 银行账号 (显示字段)
|
||
/// </summary>
|
||
public string? AccountNumber { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新赛事输入
|
||
/// </summary>
|
||
public class UpdateEventInput : AddEventInput
|
||
{
|
||
[Required(ErrorMessage = "ID不能为空")]
|
||
public long Id { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 赛事详情输出
|
||
/// </summary>
|
||
public class EventDetailOutput : AddEventInput
|
||
{
|
||
/// <summary>
|
||
/// 赛事ID
|
||
/// </summary>
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 省份名称
|
||
/// </summary>
|
||
public string? ProvinceName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 城市名称
|
||
/// </summary>
|
||
public string? CityName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 区县名称
|
||
/// </summary>
|
||
public string? DistrictName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 赛事状态
|
||
/// </summary>
|
||
public EventStatus EventStatus { get; set; }
|
||
|
||
/// <summary>
|
||
/// 二维码URL
|
||
/// </summary>
|
||
public string? QrCodeUrl { get; set; }
|
||
}
|