345 lines
8.6 KiB
C#
Raw Normal View History

2026-08-11 23:41:18 +08:00
namespace YD_Event.Application.Event.Dtos;
2026-09-17 10:25:06 +08:00
/// <summary>
/// 裁判报名小程序码输出。
/// </summary>
public class JudgeRegistrationCodeOutput
{
/// <summary>
/// 裁判报名码。
/// </summary>
public string RegistrationCode { get; set; } = null!;
/// <summary>
/// JPEG 小程序码的 Data URL,可直接用于图片展示和下载。
/// </summary>
public string QrCodeDataUrl { get; set; } = null!;
/// <summary>
/// 扫码后打开的小程序页面。
/// </summary>
public string Page { get; set; } = null!;
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判报名申请输出
/// </summary>
2026-08-11 23:41:18 +08:00
public class RefereeApplicationOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 报名申请ID
/// </summary>
2026-08-11 23:41:18 +08:00
public long ApplicationId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 关联的裁判档案ID
/// </summary>
2026-08-11 23:41:18 +08:00
public long RefereeId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判姓名
/// </summary>
2026-08-11 23:41:18 +08:00
public string Name { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 所属地区(省/市/区)
/// </summary>
2026-08-11 23:41:18 +08:00
public string RegionName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判等级名称
/// </summary>
2026-08-11 23:41:18 +08:00
public string LevelName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判证件图片地址
/// </summary>
2026-08-11 23:41:18 +08:00
public string CertificateUrl { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 手机号
/// </summary>
2026-08-11 23:41:18 +08:00
public string Mobile { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判角色位标记(RefereeRole 枚举值)
/// </summary>
2026-08-11 23:41:18 +08:00
public int Roles { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判角色名称列表
/// </summary>
2026-08-11 23:41:18 +08:00
public List<string> RoleNames { get; set; } = new();
2026-08-18 09:26:30 +08:00
/// <summary>
/// 报名时间
/// </summary>
2026-08-11 23:41:18 +08:00
public DateTime CreatedTime { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 报名审核状态
/// </summary>
2026-08-17 00:14:48 +08:00
public int ApplicationStatus { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 报名审核状态名称
/// </summary>
2026-08-17 00:14:48 +08:00
public string ApplicationStatusName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 审核备注
/// </summary>
2026-08-17 00:14:48 +08:00
public string? Remark { get; set; }
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事裁判输出
/// </summary>
2026-08-17 00:14:48 +08:00
public class EventRefereeOutput : RefereeApplicationOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事裁判关系ID
/// </summary>
2026-08-17 00:14:48 +08:00
public long EventRefereeId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 来源类型:1-后台添加,2-小程序报名
/// </summary>
2026-08-17 00:14:48 +08:00
public int SourceType { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 来源类型名称
/// </summary>
2026-08-17 00:14:48 +08:00
public string SourceTypeName { get; set; } = null!;
2026-08-11 23:41:18 +08:00
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判分配看板输出
/// </summary>
2026-08-11 23:41:18 +08:00
public class JudgeAssignmentBoardOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事编排是否已确认
/// </summary>
2026-08-11 23:41:18 +08:00
public bool ArrangementConfirmed { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判分配是否已提交
/// </summary>
2026-08-11 23:41:18 +08:00
public bool Submitted { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 项目分组列表
/// </summary>
2026-08-11 23:41:18 +08:00
public List<JudgeAssignmentProjectOutput> Projects { get; set; } = new();
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判分配看板的项目分组
/// </summary>
2026-08-11 23:41:18 +08:00
public class JudgeAssignmentProjectOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事项目ID
/// </summary>
2026-08-11 23:41:18 +08:00
public long EventProjectId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 项目名称
/// </summary>
2026-08-11 23:41:18 +08:00
public string ProjectName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 计分规则名称
/// </summary>
2026-08-11 23:41:18 +08:00
public string RuleName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判大类分组(难度裁判、表现裁判、主裁),由计分规则的裁判席位配置解析而来
/// </summary>
2026-08-18 00:22:59 +08:00
public List<JudgeRoleSectionOutput> JudgeRoleSections { get; set; } = new();
2026-08-18 09:26:30 +08:00
/// <summary>
/// 项目下按场地归并后的裁判分配列表
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public List<JudgeAssignmentSessionOutput> Sessions { get; set; } = new();
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判大类分组,对应计分规则里的一组裁判类型
/// </summary>
2026-08-18 00:22:59 +08:00
public class JudgeRoleSectionOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 分组名称,如“难度裁判”
/// </summary>
2026-08-18 00:22:59 +08:00
public string Title { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 分组下的裁判类型列表
/// </summary>
2026-08-18 00:22:59 +08:00
public List<JudgeRoleSlotOutput> Slots { get; set; } = new();
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判类型(如 DP 力量体操、DM 多摇、P 表现、T 主裁),一个类型可分配多名裁判
/// </summary>
2026-08-18 00:22:59 +08:00
public class JudgeRoleSlotOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判类型编码,如 DP、DM、DR、P、T
/// </summary>
2026-08-18 00:22:59 +08:00
public string Code { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判类型名称,用于前端展示与校验提示
/// </summary>
2026-08-18 00:22:59 +08:00
public string Name { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 该类型至少需要分配的裁判人数
/// </summary>
2026-08-18 00:22:59 +08:00
public int MinCount { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 该类型最多可分配的裁判人数,null 表示不限人数(成绩按平均值计算)
/// </summary>
2026-08-18 00:22:59 +08:00
public int? MaxCount { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 执裁该类型所需具备的裁判角色位标记(RefereeRole 枚举值)
/// </summary>
2026-08-18 00:22:59 +08:00
public int RoleFlag { get; set; }
2026-09-21 11:14:47 +08:00
/// <summary>
/// 该裁判类型下的具体评分分类(如表演赛 A 组: DP+DM(个人绳)、DA(车轮跳) 等)
/// </summary>
public List<string> Categories { get; set; } = new();
2026-08-18 00:22:59 +08:00
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 项目场地裁判分配情况
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public class JudgeAssignmentSessionOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 代表场次ID,用于定位同一项目、同一场地的裁判分配单元
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public long SessionId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 分配单元名称(项目名称-场地名称)
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public string SessionName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 场地名称
/// </summary>
2026-08-11 23:41:18 +08:00
public string VenueName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 是否已分配裁判
/// </summary>
2026-08-11 23:41:18 +08:00
public bool Assigned { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 该项目场地下共用的裁判席位列表
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public List<JudgeAssignmentItemOutput> Assignments { get; set; } = new();
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 场次内的一个裁判席位
/// </summary>
2026-08-11 23:41:18 +08:00
public class JudgeAssignmentItemOutput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事裁判关系ID
/// </summary>
2026-08-17 00:14:48 +08:00
public long EventRefereeId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判席位编码(同一场次内唯一,如 DP1、DP2、T)
/// </summary>
2026-08-11 23:41:18 +08:00
public string JudgeRole { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判类型编码(如 DP、DM、DR、P、T),对应计分规则中的裁判类型
/// </summary>
2026-08-18 00:22:59 +08:00
public string JudgeRoleType { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判类型名称,取自计分规则;规则里查不到时回退显示类型编码
/// </summary>
2026-08-11 23:41:18 +08:00
public string JudgeRoleName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 关联的裁判档案ID
/// </summary>
2026-08-11 23:41:18 +08:00
public long RefereeId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判姓名
/// </summary>
2026-08-11 23:41:18 +08:00
public string RefereeName { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 手机号
/// </summary>
2026-08-11 23:41:18 +08:00
public string Mobile { get; set; } = null!;
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 保存项目场地裁判分配输入
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public class SaveJudgeAssignmentsInput
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事ID
/// </summary>
2026-08-11 23:41:18 +08:00
public long EventId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 代表场次ID,用于定位同一项目、同一场地的裁判分配单元
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public long SessionId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 该项目场地下共用的裁判分配列表
2026-08-18 09:26:30 +08:00
/// </summary>
2026-08-11 23:41:18 +08:00
public List<SaveJudgeAssignmentItem> Assignments { get; set; } = new();
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 一条裁判分配记录
/// </summary>
2026-08-11 23:41:18 +08:00
public class SaveJudgeAssignmentItem
{
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判类型编码(如 DP、T)。
/// 同一类型可重复出现,表示该类型分配了多名裁判;兼容传入历史席位编码(DP1)。
/// </summary>
2026-08-11 23:41:18 +08:00
public string JudgeRole { get; set; } = null!;
2026-08-18 09:26:30 +08:00
/// <summary>
/// 赛事裁判关系ID,与裁判档案ID至少传一个
/// </summary>
2026-08-17 00:14:48 +08:00
public long EventRefereeId { get; set; }
2026-08-18 09:26:30 +08:00
/// <summary>
/// 裁判档案ID,与赛事裁判关系ID至少传一个
/// </summary>
2026-08-11 23:41:18 +08:00
public long RefereeId { get; set; }
}
2026-08-18 09:26:30 +08:00
/// <summary>
/// 提交赛事裁判分配输入
/// </summary>
public class SubmitJudgeAssignmentsInput
{
/// <summary>
/// 赛事ID
/// </summary>
public long EventId { get; set; }
}