2026-04-10 14:29:41 +08:00

219 lines
5.2 KiB
C#
Raw Permalink 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.

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