1374 lines
28 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.Application.Event.Dtos;
using YD_Event.Core.Entities;
using YD_Event.Core.Enum;
using Microsoft.AspNetCore.Http;
namespace YD_Event.Application.Event.Dtos;
/// <summary>
/// 用户端赛事查询输入
/// </summary>
public class UserEventQueryInput : Pagination
{
/// <summary>
/// 赛事状态 (0-全部, 1-报名中, 2-比赛中, 3-已结束)
/// </summary>
public EventStatus? Status { get; set; }
/// <summary>
/// 赛事类型
/// </summary>
public EventFormat? Type { get; set; }
/// <summary>
/// 时间范围开始
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 时间范围结束
/// </summary>
public DateTime? EndTime { get; set; }
/// <summary>
/// 关键字搜索(赛事名称)
/// </summary>
public string? Keyword { get; set; }
}
/// <summary>
/// 用户端赛事列表输出
/// </summary>
public class UserEventListOutput
{
/// <summary>
/// 赛事ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 封面图片
/// </summary>
public string CoverImage { get; set; }
/// <summary>
/// 赛事状态 (报名中/比赛中/已结束)
/// </summary>
public string Status { get; set; }
/// <summary>
/// 赛事类型 (线上/线下)
/// </summary>
public string Type { get; set; }
/// <summary>
/// 报名方式
/// </summary>
public string RegistrationType { get; set; }
/// <summary>
/// 收费模式
/// </summary>
public string ChargeMode { 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 bool CanRegister { get; set; }
}
/// <summary>
/// 用户端赛事详情输出
/// </summary>
public class UserEventDetailOutput
{
/// <summary>
/// 赛事ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 封面图片
/// </summary>
public string CoverImage { get; set; }
/// <summary>
/// 赛事视频
/// </summary>
public string? EventVideo { get; set; }
/// <summary>
/// 赛事状态
/// </summary>
public string Status { get; set; }
/// <summary>
/// 赛事类型
/// </summary>
public string Type { get; set; }
/// <summary>
/// 报名方式
/// </summary>
public string RegistrationType { get; set; }
/// <summary>
/// 积分规则名称
/// </summary>
public string PointsRuleName { get; set; }
/// <summary>
/// 报名开始时间
/// </summary>
public DateTime RegistrationStartTime { get; set; }
/// <summary>
/// 报名结束时间
/// </summary>
public DateTime RegistrationEndTime { get; set; }
/// <summary>
/// 是否需要上传素材
/// </summary>
public bool IsNeedMaterial { get; set; }
/// <summary>
/// 素材备注
/// </summary>
public string? MaterialRemark { get; set; }
/// <summary>
/// 素材上传截止时间
/// </summary>
public DateTime? MaterialUploadEndTime { get; set; }
/// <summary>
/// 比赛开始时间
/// </summary>
public DateTime MatchStartTime { get; set; }
/// <summary>
/// 比赛结束时间
/// </summary>
public DateTime MatchEndTime { get; set; }
/// <summary>
/// 赛事简介/规则
/// </summary>
public string Description { get; set; }
/// <summary>
/// 地址
/// </summary>
public string Address { get; set; }
/// <summary>
/// 备注
/// </summary>
public string? Remark { get; set; }
/// <summary>
/// 主办/承办单位
/// </summary>
public List<EventUnitDto> Units { get; set; }
/// <summary>
/// 报名限制配置
/// </summary>
public UserEventLimitOutput? LimitConfig { get; set; }
/// <summary>
/// 费用配置
/// </summary>
public UserEventFeeOutput? FeeConfig { get; set; }
/// <summary>
/// 项目列表
/// </summary>
public List<UserEventProjectListOutput>? Projects { get; set; }
/// <summary>
/// 当前用户报名状态 (未报名/已报名/审核中)
/// </summary>
public string UserRegistrationStatus { get; set; }
/// <summary>
/// 报名ID (如果已报名)
/// </summary>
public long? RegistrationId { get; set; }
}
/// <summary>
/// 用户端赛事限制输出
/// </summary>
public class UserEventLimitOutput
{
/// <summary>
/// 个人项目限报数量
/// </summary>
public int IndividualProjectLimit { get; set; }
/// <summary>
/// 团队项目限报数量
/// </summary>
public int TeamProjectLimit { get; set; }
}
/// <summary>
/// 用户端赛事费用输出
/// </summary>
public class UserEventFeeOutput
{
/// <summary>
/// 收费模式
/// </summary>
public string ChargeMode { get; set; }
/// <summary>
/// 价格
/// </summary>
public decimal Price { get; set; }
}
/// <summary>
/// 用户端赛事项目组别输出
/// </summary>
public class UserEventProjectGroupOutput
{
/// <summary>
/// 组别ID
/// </summary>
public long? Id { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string? GroupName { get; set; }
/// <summary>
/// 出生日期起始日期
/// </summary>
public DateTime? BirthDateStart { get; set; }
/// <summary>
/// 出生日期结束日期
/// </summary>
public DateTime? BirthDateEnd { get; set; }
/// <summary>
/// 性别要求 (0=男, 1=女, 2=保密, 3=不限)
/// </summary>
public int Gender { get; set; }
}
/// <summary>
/// 报名项目选择输出
/// </summary>
public class UserEventProjectListOutput
{
/// <summary>
/// 项目ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; }
/// <summary>
/// 费用
/// </summary>
public decimal Fee { get; set; }
/// <summary>
/// 人数限制
/// </summary>
public int? LimitCount { get; set; }
/// <summary>
/// 已报名人数
/// </summary>
public int RegisteredCount { get; set; }
/// <summary>
/// 报名要求描述
/// </summary>
public string Requirements { get; set; }
/// <summary>
/// 团队人数要求 (1为个人)
/// </summary>
public int TeamSize { get; set; }
/// <summary>
/// 完成人数
/// </summary>
public int CompletionCount { get; set; }
/// <summary>
/// 项目类型
/// </summary>
public long ProjectType { get; set; }
/// <summary>
/// 项目类型名称
/// </summary>
public string? ProjectTypeName { get; set; }
/// <summary>
/// 组别列表
/// </summary>
public List<UserEventProjectGroupOutput>? Groups { get; set; }
/// <summary>
/// 上级项目类型名称
/// </summary>
public string? ParentProjectTypeName { get; set; }
/// <summary>
/// 该项目的参赛队员列表
/// </summary>
public List<UserTeamMemberOutput>? Members { get; set; }
}
/// <summary>
/// 团队成员搜索输入
/// </summary>
public class UserMemberSearchInput
{
/// <summary>
/// 关键字 (手机号或ID)
/// </summary>
public string Keyword { get; set; }
}
/// <summary>
/// 团队成员信息输出
/// </summary>
public class UserTeamMemberOutput
{
/// <summary>
/// 用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Mobile { get; set; }
/// <summary>
/// 身份证号 (脱敏显示)
/// </summary>
public string IdCardNumber { get; set; }
/// <summary>
/// 性别
/// </summary>
public string Gender { get; set; }
/// <summary>
/// 是否符合参赛资格
/// </summary>
public bool IsEligible { get; set; }
/// <summary>
/// 不符合原因
/// </summary>
public string IneligibilityReason { get; set; }
}
/// <summary>
/// 组别成员输入
/// </summary>
public class UserGroupMemberInput
{
/// <summary>
/// 组别ID
/// </summary>
public long GroupId { get; set; }
/// <summary>
/// 成员ID列表
/// </summary>
public List<long> MemberIds { get; set; }
}
/// <summary>
/// 订单预览输出
/// </summary>
public class UserOrderPreviewOutput
{
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 项目列表
/// </summary>
public List<UserEventProjectListOutput> Projects { get; set; }
/// <summary>
/// 成员列表
/// </summary>
public List<UserTeamMemberOutput> Members { get; set; }
/// <summary>
/// 总金额
/// </summary>
public decimal TotalAmount { get; set; }
/// <summary>
/// 费用明细
/// </summary>
public Dictionary<string, decimal> FeeDetails { get; set; }
}
/// <summary>
/// 创建支付订单输入
/// </summary>
public class UserCreateOrderInput
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 支付方式 (1-微信, 2-支付宝, 3-银行卡) - 已过时,使用 PaymentMethodType
/// </summary>
public int PaymentMethod { get; set; }
/// <summary>
/// 具体支付方式
/// </summary>
public PaymentMethodType PaymentMethodType { get; set; }
/// <summary>
/// 微信OpenId (微信支付时必填)
/// </summary>
public string? OpenId { get; set; }
/// <summary>
/// 优惠券ID (可选)
/// </summary>
public long? CouponId { get; set; }
}
/// <summary>
/// 用户支付结果输出
/// </summary>
public class UserPaymentResultOutput
{
/// <summary>
/// 订单号
/// </summary>
public string OrderNo { get; set; } = string.Empty;
/// <summary>
/// 支付链接或二维码
/// </summary>
public string PayUrl { get; set; } = string.Empty;
/// <summary>
/// 状态
/// </summary>
public int Status { get; set; }
/// <summary>
/// 支付方式 (例如:JSAPI, NATIVE)
/// </summary>
public string? TradeType { get; set; }
/// <summary>
/// 微信Native支付参数 - 二维码链接
/// </summary>
public string? QrcodeUrl { get; set; }
/// <summary>
/// 微信JSAPI支付参数
/// </summary>
public object? WechatPayParams { get; set; }
/// <summary>
/// 线下支付信息 - 收款商户名称
/// </summary>
public string? PayeeMerchantName { get; set; }
/// <summary>
/// 线下支付信息 - 收款账号信息
/// </summary>
public string? PayeeAccountInfo { get; set; }
/// <summary>
/// 是否为免费项目
/// </summary>
public bool IsFree { get; set; }
}
/// <summary>
/// 优惠券验证输入
/// </summary>
public class ValidateCouponInput
{
/// <summary>
/// 优惠券码
/// </summary>
[Required]
public string CouponCode { get; set; }
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 原始总金额
/// </summary>
public decimal OriginalAmount { get; set; }
}
/// <summary>
/// 优惠券验证输出
/// </summary>
public class ValidateCouponOutput
{
/// <summary>
/// 是否有效
/// </summary>
public bool IsValid { get; set; }
/// <summary>
/// 优惠券ID
/// </summary>
public long? CouponId { get; set; }
/// <summary>
/// 优惠券名称
/// </summary>
public string? CouponName { get; set; }
/// <summary>
/// 折扣类型 (1-满减, 2-折扣, 3-固定金额)
/// </summary>
public int? DiscountType { get; set; }
/// <summary>
/// 折扣值
/// </summary>
public decimal? DiscountValue { get; set; }
/// <summary>
/// 优惠金额
/// </summary>
public decimal? DiscountAmount { get; set; }
/// <summary>
/// 优惠后金额
/// </summary>
public decimal? FinalAmount { get; set; }
/// <summary>
/// 无效原因
/// </summary>
public string? InvalidReason { get; set; }
}
/// <summary>
/// 提交报名输入 (草稿或正式提交) - 支持优惠券
/// </summary>
public class UserSubmitRegistrationInput
{
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
/// <summary>
/// 选中的项目ID列表
/// </summary>
public List<long> ProjectIds { get; set; }
/// <summary>
/// 队员列表
/// </summary>
public List<long> MemberIds { get; set; }
/// <summary>
/// 组别成员列表
/// </summary>
public List<UserGroupMemberInput> GroupMembers { get; set; }
/// <summary>
/// 是否保存草稿
/// </summary>
public bool IsDraft { get; set; }
/// <summary>
/// 优惠券ID (可选)
/// </summary>
public long? CouponId { get; set; }
/// <summary>
/// 团队ID (必填)
/// </summary>
[Required]
public long TeamId { get; set; }
}
#region 参赛记录相关 DTOs
/// <summary>
/// 参赛记录查询输入
/// </summary>
public class RegistrationListQueryInput : Pagination
{
/// <summary>
/// 赛事ID (可选)
/// </summary>
public long? EventId { get; set; }
/// <summary>
/// 状态 (可选)
/// </summary>
public string? Status { get; set; } // 对应 RegistrationStatus 或 PaymentStatus 组合状态
/// <summary>
/// 关键字搜索 (队伍名/赛事名)
/// </summary>
public string? Keyword { get; set; }
}
/// <summary>
/// 参赛记录列表项输出
/// </summary>
public class RegistrationItemDTO
{
/// <summary>
/// 报名ID
/// </summary>
public long RegistrationId { get; set; }
/// <summary>
/// 赛事名称
/// </summary>
public string EventName { get; set; }
/// <summary>
/// 封面
/// </summary>
public string CoverImage { get; set; }
/// <summary>
/// 赛事类型
/// </summary>
public int? EventType { get; set; }
/// <summary>
/// 收费模式
/// </summary>
public int? ChargeMode { get; set; }
/// <summary>
/// 赛事状态
/// </summary>
public int? EventStatus { get; set; }
/// <summary>
/// 报名开始时间
/// </summary>
public DateTime? RegistrationStartTime { get; set; }
/// <summary>
/// 报名结束时间
/// </summary>
public DateTime? RegistrationEndTime { get; set; }
/// <summary>
/// 上传素材截止时间
/// </summary>
public DateTime? MaterialDeadline { get; set; }
/// <summary>
/// 比赛开始时间
/// </summary>
public DateTime? MatchStartTime { get; set; }
/// <summary>
/// 比赛结束时间
/// </summary>
public DateTime? MatchEndTime { get; set; }
/// <summary>
/// 团队名称
/// </summary>
public string TeamName { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 支付状态 (0-未支付, 1-已支付, 2-已取消, 3-已退款, 4-待审核)
/// </summary>
public int PayStatus { get; set; }
/// <summary>
/// 证书状态
/// </summary>
public int CertStatus { get; set; }
/// <summary>
/// 是否有素材
/// </summary>
public bool HasMaterial { get; set; }
/// <summary>
/// 是否有凭证
/// </summary>
public bool HasVoucher { get; set; }
/// <summary>
/// 成员数量
/// </summary>
public int MemberCount { get; set; }
/// <summary>
/// 允许的最大人数
/// </summary>
public int MaxMember { get; set; }
/// <summary>
/// 支付或素材上传截止时间
/// </summary>
public DateTime? ExpireTime { get; set; }
}
/// <summary>
/// 上传素材输入
/// </summary>
public class UploadMaterialInput
{
/// <summary>
/// 文件列表 (最多5个)
/// </summary>
[Required]
public List<IFormFile> Files { get; set; }
/// <summary>
/// 素材类型 (图片/视频/其他)
/// </summary>
[Required]
public string MaterialType { get; set; }
/// <summary>
/// 描述 (可选)
/// </summary>
public string? Description { get; set; }
}
/// <summary>
/// 素材信息输出
/// </summary>
public class MaterialDTO
{
/// <summary>
/// 素材ID
/// </summary>
public string MaterialId { get; set; }
/// <summary>
/// OSS URL
/// </summary>
public string OssUrl { get; set; }
/// <summary>
/// 文件名
/// </summary>
public string FileName { get; set; }
/// <summary>
/// 文件大小
/// </summary>
public long FileSize { get; set; }
/// <summary>
/// 上传时间
/// </summary>
public DateTime UploadTime { get; set; }
}
/// <summary>
/// 上传支付凭证输入
/// </summary>
public class UploadVoucherInput
{
/// <summary>
/// 凭证图片 (单张)
/// </summary>
[Required]
public IFormFile File { get; set; }
/// <summary>
/// 支付金额
/// </summary>
[Required]
public decimal PayAmount { get; set; }
/// <summary>
/// 支付时间
/// </summary>
[Required]
public DateTime PayTime { get; set; }
/// <summary>
/// 支付渠道 (微信/支付宝/银行转账)
/// </summary>
[Required]
public string PayChannel { get; set; }
/// <summary>
/// 交易流水号 (可选)
/// </summary>
public string? TransactionId { get; set; }
}
/// <summary>
/// 支付凭证输出
/// </summary>
public class VoucherDTO
{
/// <summary>
/// 凭证ID
/// </summary>
public string VoucherId { get; set; }
/// <summary>
/// OSS URL
/// </summary>
public string OssUrl { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public string AuditStatus { get; set; }
}
/// <summary>
/// 队员信息 DTO
/// </summary>
public class TeamMemberDTO
{
/// <summary>
/// 用户ID
/// </summary>
public long UserId { get; set; }
/// <summary>
/// 真实姓名
/// </summary>
public string RealName { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string Phone { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; }
/// <summary>
/// 角色 (队长/队员)
/// </summary>
public string Role { get; set; }
/// <summary>
/// 邀请状态
/// </summary>
public string InviteStatus { get; set; }
/// <summary>
/// 加入时间
/// </summary>
public DateTime JoinTime { get; set; }
}
/// <summary>
/// 更换队员输入
/// </summary>
public class ReplaceMemberInput
{
/// <summary>
/// 新队员用户ID
/// </summary>
[Required]
public long NewUserId { get; set; }
/// <summary>
/// 更换原因 (可选)
/// </summary>
public string? ReplaceReason { get; set; }
}
/// <summary>
/// 证书信息输出
/// </summary>
public class CertificateDTO
{
/// <summary>
/// 证书URL
/// </summary>
public string CertUrl { get; set; }
/// <summary>
/// 证书编号
/// </summary>
public string CertNumber { get; set; }
/// <summary>
/// 颁发时间
/// </summary>
public DateTime IssueTime { get; set; }
/// <summary>
/// 过期时间
/// </summary>
public DateTime? ExpireTime { get; set; }
}
/// <summary>
/// 统一响应 DTO (泛型)
/// </summary>
public class ResponseDTO<T>
{
/// <summary>
/// 状态码
/// </summary>
public int Code { get; set; }
/// <summary>
/// 消息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 数据
/// </summary>
public T Data { get; set; }
/// <summary>
/// 是否成功
/// </summary>
public bool Success { get; set; }
}
#endregion
#region 阶段二功能DTO
/// <summary>
/// 队员验证输入
/// </summary>
public class MemberValidateInput
{
/// <summary>
/// 赛事ID
/// </summary>
[Required]
public long EventId { get; set; }
/// <summary>
/// 队员ID
/// </summary>
[Required]
public long MemberId { get; set; }
/// <summary>
/// 组别ID
/// </summary>
[Required]
public long GroupId { get; set; }
}
/// <summary>
/// 队员验证输出
/// </summary>
public class MemberValidateOutput
{
/// <summary>
/// 是否有效
/// </summary>
public bool IsValid { get; set; }
/// <summary>
/// 年龄是否有效
/// </summary>
public bool AgeValid { get; set; }
/// <summary>
/// 性别是否有效
/// </summary>
public bool GenderValid { get; set; }
/// <summary>
/// 报名限制是否有效
/// </summary>
public bool RegistrationLimitValid { get; set; }
/// <summary>
/// 验证消息
/// </summary>
public string Message { get; set; }
}
/// <summary>
/// 报名限制检查输入
/// </summary>
public class RegistrationLimitCheckInput
{
/// <summary>
/// 赛事ID
/// </summary>
[Required]
public long EventId { get; set; }
/// <summary>
/// 团队ID (新结构)
/// </summary>
public long? TeamId { get; set; }
/// <summary>
/// 组别队员分配 (新结构)
/// </summary>
public List<GroupMemberAssignment> GroupMembers { get; set; }
/// <summary>
/// 队员ID列表 (旧结构,向后兼容)
/// </summary>
public List<long> MemberIds { get; set; }
/// <summary>
/// 组别ID列表 (旧结构,向后兼容)
/// </summary>
public List<long> GroupIds { get; set; }
}
/// <summary>
/// 报名限制详情
/// </summary>
public class RegistrationLimitDetail
{
/// <summary>
/// 队员ID
/// </summary>
public long MemberId { get; set; }
/// <summary>
/// 队员姓名
/// </summary>
public string MemberName { get; set; }
/// <summary>
/// 限制类型
/// </summary>
public string LimitType { get; set; }
/// <summary>
/// 限制消息
/// </summary>
public string LimitMessage { get; set; }
}
/// <summary>
/// 报名限制检查输出
/// </summary>
public class RegistrationLimitCheckOutput
{
/// <summary>
/// 是否有限制
/// </summary>
public bool HasLimit { get; set; }
/// <summary>
/// 限制详情
/// </summary>
public List<RegistrationLimitDetail> LimitDetails { get; set; }
}
/// <summary>
/// 组别队伍限制输出
/// </summary>
public class GroupTeamLimitOutput
{
/// <summary>
/// 组别ID
/// </summary>
public long GroupId { get; set; }
/// <summary>
/// 最多可报队伍数
/// </summary>
public int MaxTeams { get; set; }
/// <summary>
/// 当前已报队伍数
/// </summary>
public int CurrentTeams { get; set; }
}
/// <summary>
/// 检查组别选择限制输入
/// </summary>
public class CheckGroupSelectionLimitInput
{
/// <summary>
/// 赛事ID
/// </summary>
[Required]
public long EventId { get; set; }
/// <summary>
/// 要检查的组别ID
/// </summary>
[Required]
public long GroupId { get; set; }
/// <summary>
/// 当前已选择的组别ID列表
/// </summary>
public List<long> SelectedGroupIds { get; set; }
}
/// <summary>
/// 检查组别选择限制输出
/// </summary>
public class CheckGroupSelectionLimitOutput
{
/// <summary>
/// 是否可以选择该组别
/// </summary>
public bool CanSelect { get; set; }
/// <summary>
/// 限制消息(如果不能选择)
/// </summary>
public string? LimitMessage { get; set; }
/// <summary>
/// 组别限制详情
/// </summary>
public GroupLimitDetail? GroupLimit { get; set; }
/// <summary>
/// 项目限制详情
/// </summary>
public ProjectLimitDetail? ProjectLimit { get; set; }
/// <summary>
/// 团队项目限制详情
/// </summary>
public EventLimitDetail? TeamProjectLimit { get; set; }
/// <summary>
/// 个人项目限制详情
/// </summary>
public EventLimitDetail? IndividualProjectLimit { get; set; }
}
/// <summary>
/// 组别限制详情
/// </summary>
public class GroupLimitDetail
{
/// <summary>
/// 组别限报数
/// </summary>
public int? GroupLimitCount { get; set; }
/// <summary>
/// 当前报名数
/// </summary>
public int CurrentRegistrations { get; set; }
/// <summary>
/// 是否达到限制
/// </summary>
public bool IsLimitReached { get; set; }
}
/// <summary>
/// 项目限制详情
/// </summary>
public class ProjectLimitDetail
{
/// <summary>
/// 项目限报数
/// </summary>
public int? ProjectLimitCount { get; set; }
/// <summary>
/// 当前已选择数
/// </summary>
public int CurrentSelectedCount { get; set; }
/// <summary>
/// 是否达到限制
/// </summary>
public bool IsLimitReached { get; set; }
}
/// <summary>
/// 赛事项目限制详情
/// </summary>
public class EventLimitDetail
{
/// <summary>
/// 限报数
/// </summary>
public int? LimitCount { get; set; }
/// <summary>
/// 当前已选择数
/// </summary>
public int CurrentSelectedCount { get; set; }
/// <summary>
/// 是否达到限制
/// </summary>
public bool IsLimitReached { get; set; }
}
/// <summary>
/// 组别队员分配
/// </summary>
public class GroupMemberAssignment
{
/// <summary>
/// 组别ID
/// </summary>
public long GroupId { get; set; }
/// <summary>
/// 队员ID列表
/// </summary>
public List<long> MemberIds { get; set; }
}
/// <summary>
/// 项目完成人数检查输入
/// </summary>
public class ProjectCompletionCheckInput
{
/// <summary>
/// 赛事ID
/// </summary>
[Required]
public long EventId { get; set; }
/// <summary>
/// 组别队员分配
/// </summary>
[Required]
public List<GroupMemberAssignment> GroupMembers { get; set; }
}
/// <summary>
/// 项目完成人数错误
/// </summary>
public class ProjectCompletionError
{
/// <summary>
/// 项目ID
/// </summary>
public long ProjectId { get; set; }
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; }
/// <summary>
/// 错误类型
/// </summary>
public string ErrorType { get; set; }
/// <summary>
/// 错误消息
/// </summary>
public string ErrorMessage { get; set; }
}
/// <summary>
/// 项目完成人数检查输出
/// </summary>
public class ProjectCompletionCheckOutput
{
/// <summary>
/// 是否有错误
/// </summary>
public bool HasError { get; set; }
/// <summary>
/// 错误列表
/// </summary>
public List<ProjectCompletionError> Errors { get; set; }
}
#endregion