609 lines
14 KiB
C#
Raw 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>
/// 赛事查询输入
/// </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 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; }
}
/// <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>
/// 单位类型(枚举:0=主办,1=承办,2=协办,3=赞助)
/// </summary>
public UnitType UnitType { get; set; }
/// <summary>
/// 自定义单位类型(当需要自定义时使用,优先显示此字段)
/// </summary>
public string? CustomUnitType { 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 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)
/// </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>
/// 营业执照图片URL (显示字段)
/// </summary>
public string? BusinessLicenseUrl { get; set; }
/// <summary>
/// 项目价格字典 (key: 项目ID, value: 价格)
/// </summary>
public Dictionary<long, decimal>? ProjectPrices { 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>
/// 省份Code
/// </summary>
public string? ProvinceCode { get; set; }
/// <summary>
/// 城市Code
/// </summary>
public string? CityCode { get; set; }
/// <summary>
/// 区县Code
/// </summary>
public string? DistrictCode { 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; }
/// <summary>
/// 积分规则详情
/// </summary>
public PointsRuleDto? PointsRuleDetail { get; set; }
/// <summary>
/// 退款规则详情列表
/// </summary>
public List<RefundRuleDto>? RefundRules { get; set; }
/// <summary>
/// 是否可以编辑项目信息(有报名记录时不能编辑项目和组别
/// </summary>
public bool CanEditProject { get; set; }
}
/// <summary>
/// 积分规则明细DTO
/// </summary>
public class PointsRuleDetailDto
{
/// <summary>
/// 起始名次
/// </summary>
public int StartRank { get; set; }
/// <summary>
/// 截止名次
/// </summary>
public int EndRank { get; set; }
/// <summary>
/// 发放积分个数
/// </summary>
public int Points { get; set; }
}
/// <summary>
/// 积分规则DTO
/// </summary>
public class PointsRuleDto
{
/// <summary>
/// 积分规则名称
/// </summary>
public string RuleName { get; set; }
/// <summary>
/// 参与积分(发放积分个数)
/// </summary>
public int? ParticipationPoints { get; set; }
/// <summary>
/// 备注
/// </summary>
public string? Remark { get; set; }
/// <summary>
/// 名次积分规则明细
/// </summary>
public List<PointsRuleDetailDto>? Details { get; set; }
}