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