using System.ComponentModel.DataAnnotations; using YD_Event.Core.Enum; using YD_Event.Application.Project.Dtos; namespace YD_Event.Application.Event.Dtos; /// /// 阶段1:基本信息输入 /// public class SaveBasicInfoInput { /// /// 赛事ID (如果已存在则更新,否则新增) /// public long? EventId { get; set; } /// /// 赛事名称 /// [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数组对象 [{key:"",value:""},...]) /// public string? CustomConfigJson { get; set; } } /// /// 阶段2:参与单位输入 /// public class SaveUnitsInput { [Required(ErrorMessage = "赛事ID不能为空")] public long EventId { get; set; } /// /// 参与单位列表 /// public List Units { get; set; } } /// /// 阶段3:项目与限报配置输入 /// public class SaveProjectsInput { [Required(ErrorMessage = "赛事ID不能为空")] public long EventId { get; set; } /// /// 项目列表 /// public List Projects { get; set; } /// /// 报名限制 /// public EventRegistrationLimitInput? RegistrationLimit { get; set; } } /// /// 阶段4:费用与账户配置输入 /// public class SaveFeeConfigInput { [Required(ErrorMessage = "赛事ID不能为空")] public long EventId { get; set; } /// /// 费用配置 /// public EventFeeConfigInput FeeConfig { get; set; } /// /// 项目单价列表(当收费模式为“单价(项目)”时填写) /// public List? ProjectFees { get; set; } } /// /// 项目费用输入 /// public class ProjectFeeInput { /// /// 项目ID /// [Required(ErrorMessage = "项目ID不能为空")] public long ProjectId { get; set; } /// /// 项目单价 /// [Required(ErrorMessage = "项目单价不能为空")] [Range(0.01, (double)decimal.MaxValue, ErrorMessage = "项目单价必须大于0")] public decimal Fee { get; set; } } /// /// 赛事进度输出 /// public class EventProgressOutput { /// /// 赛事ID /// public long EventId { get; set; } /// /// 流程状态 /// public ProcessStatus ProcessStatus { get; set; } /// /// 已完成阶段列表 /// public List CompletedStages { get; set; } }