马梓彭 99a1857088 完善二期接口
补齐接口文档和上线SQL
优化底层保存逻辑
2026-08-30 21:46:05 +08:00

402 lines
9.4 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 MiniExcelLibs.Attributes;
namespace YD_Event.Application.OrderBook.Dtos;
/// <summary>
/// 秩序册「出场秩序」工作表行模型
/// </summary>
public class OrderBookEntryRow
{
/// <summary>
/// 序号(仅便于人工核对,导入时不参与落库)
/// </summary>
[ExcelColumnName("序号")]
public string? Seq { get; set; }
/// <summary>
/// 场地名称(必填)
/// </summary>
[ExcelColumnName("场地名称")]
public string? VenueName { get; set; }
/// <summary>
/// 项目名称(必填,需与赛事已配置项目一致,不存在将自动建档)
/// </summary>
[ExcelColumnName("项目名称")]
public string? ProjectName { get; set; }
/// <summary>
/// 组别名称(可空,空则归入"公开组")
/// </summary>
[ExcelColumnName("组别名称")]
public string? GroupName { get; set; }
/// <summary>
/// 出场编号(可空,空则按同场次顺序自动生成)
/// </summary>
[ExcelColumnName("出场编号")]
public string? EntryNo { get; set; }
/// <summary>
/// 姓名/队名(必填)
/// </summary>
[ExcelColumnName("姓名/队名")]
public string? ParticipantName { get; set; }
/// <summary>
/// 所属单位(可空,仅用于核对展示)
/// </summary>
[ExcelColumnName("单位")]
public string? UnitName { get; set; }
/// <summary>
/// 联系电话(可空)
/// </summary>
[ExcelColumnName("联系电话")]
public string? Mobile { get; set; }
/// <summary>
/// 证件号(可空)
/// </summary>
[ExcelColumnName("证件号")]
public string? IdCard { get; set; }
/// <summary>
/// 备注(可空)
/// </summary>
[ExcelColumnName("备注")]
public string? Remark { get; set; }
}
/// <summary>
/// 秩序册「裁判名单」工作表行模型
/// </summary>
public class OrderBookRefereeRow
{
/// <summary>
/// 序号(仅便于人工核对)
/// </summary>
[ExcelColumnName("序号")]
public string? Seq { get; set; }
/// <summary>
/// 裁判姓名(必填)
/// </summary>
[ExcelColumnName("姓名")]
public string? Name { get; set; }
/// <summary>
/// 手机号(必填,用于匹配/创建裁判档案及打分账号)
/// </summary>
[ExcelColumnName("手机号")]
public string? Mobile { get; set; }
/// <summary>
/// 裁判角色(可空,如:主裁/难度裁判/表现裁判)
/// </summary>
[ExcelColumnName("裁判角色")]
public string? RoleText { get; set; }
/// <summary>
/// 裁判等级(可空,如:国际级/国家级/一级/二级/三级)
/// </summary>
[ExcelColumnName("裁判等级")]
public string? LevelText { get; set; }
/// <summary>
/// 负责场地(可空,对应出场秩序中的场地名称)
/// </summary>
[ExcelColumnName("负责场地")]
public string? VenueName { get; set; }
/// <summary>
/// 负责项目(可空)
/// </summary>
[ExcelColumnName("负责项目")]
public string? ProjectName { get; set; }
}
/// <summary>
/// 秩序册导入解析输出
/// </summary>
public class OrderBookImportOutput
{
/// <summary>
/// 导入批次ID(用于确认导入)
/// </summary>
public long BatchId { get; set; }
/// <summary>
/// 解析状态:0-解析中,10-待确认,20-存在错误
/// </summary>
public int Status { get; set; }
/// <summary>
/// 原始数据行数(不含表头)
/// </summary>
public int TotalRows { get; set; }
/// <summary>
/// 有效行数
/// </summary>
public int ValidRows { get; set; }
/// <summary>
/// 错误数量(存在错误时不可确认)
/// </summary>
public int ErrorCount { get; set; }
/// <summary>
/// 警告数量(不阻断确认)
/// </summary>
public int WarningCount { get; set; }
/// <summary>
/// 解析预览统计
/// </summary>
public OrderBookPreview Preview { get; set; } = new();
/// <summary>
/// 问题清单(错误/警告)
/// </summary>
public List<OrderBookParseIssue> Errors { get; set; } = new();
}
/// <summary>
/// 秩序册解析预览统计
/// </summary>
public class OrderBookPreview
{
/// <summary>
/// 场地数量
/// </summary>
public int VenueCount { get; set; }
/// <summary>
/// 场次数量(项目×组别×场地)
/// </summary>
public int SessionCount { get; set; }
/// <summary>
/// 出场记录数量
/// </summary>
public int EntryCount { get; set; }
/// <summary>
/// 裁判数量
/// </summary>
public int RefereeCount { get; set; }
}
/// <summary>
/// 秩序册解析问题项
/// </summary>
public class OrderBookParseIssue
{
/// <summary>
/// 所在行号(Excel 物理行号,含表头)
/// </summary>
public int Row { get; set; }
/// <summary>
/// 所在列名
/// </summary>
public string Column { get; set; } = string.Empty;
/// <summary>
/// 问题描述
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// 级别:error-错误(阻断确认),warning-警告(不阻断)
/// </summary>
public string Level { get; set; } = "error";
}
/// <summary>
/// 秩序册确认导入输入
/// </summary>
public class OrderBookConfirmInput
{
/// <summary>
/// 导入批次ID(必填,由导入接口返回)
/// </summary>
[Required(ErrorMessage = "批次ID不能为空")]
public long BatchId { get; set; }
/// <summary>
/// 是否为裁判生成小程序打分账号
/// </summary>
public bool GenerateJudgeAccount { get; set; }
/// <summary>
/// 打分账号初始密码(生成账号时必填,长度6-32位)
/// </summary>
public string? DefaultPassword { get; set; }
}
/// <summary>
/// 秩序册确认导入输出
/// </summary>
public class OrderBookConfirmOutput
{
/// <summary>
/// 秩序册版本号
/// </summary>
public int OrderBookVersion { get; set; }
/// <summary>
/// 生成场地数量
/// </summary>
public int VenueCount { get; set; }
/// <summary>
/// 生成场次数量
/// </summary>
public int SessionCount { get; set; }
/// <summary>
/// 生成出场记录数量
/// </summary>
public int EntryCount { get; set; }
/// <summary>
/// 纳入裁判数量
/// </summary>
public int RefereeCount { get; set; }
}
/// <summary>
/// 秩序册导入暂存草稿
/// </summary>
public class OrderBookDraft
{
/// <summary>
/// 批次ID
/// </summary>
public long BatchId { get; set; }
/// <summary>
/// 创建该导入批次的后台用户ID
/// </summary>
public long CreatedUserId { get; set; }
/// <summary>
/// 解析结果是否包含阻断确认的错误
/// </summary>
public bool HasErrors { get; set; }
/// <summary>
/// 赛事ID(当前版本要求赛事已预先创建)
/// </summary>
public long? EventId { get; set; }
/// <summary>
/// 导入模式:append-追加(默认),overwrite-覆盖该赛事既有编排
/// </summary>
public string ImportMode { get; set; } = "append";
/// <summary>
/// 解析时间
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// 出场明细(已通过基础校验)
/// </summary>
public List<OrderBookDraftEntry> Entries { get; set; } = new();
/// <summary>
/// 裁判明细
/// </summary>
public List<OrderBookDraftReferee> Referees { get; set; } = new();
}
/// <summary>
/// 暂存出场行
/// </summary>
public class OrderBookDraftEntry
{
/// <summary>
/// Excel 物理行号
/// </summary>
public int Row { get; set; }
/// <summary>
/// 场地名称
/// </summary>
public string VenueName { get; set; } = string.Empty;
/// <summary>
/// 项目名称
/// </summary>
public string ProjectName { get; set; } = string.Empty;
/// <summary>
/// 组别名称
/// </summary>
public string GroupName { get; set; } = string.Empty;
/// <summary>
/// 原始出场编号(可空)
/// </summary>
public string? EntryNo { get; set; }
/// <summary>
/// 姓名/队名
/// </summary>
public string ParticipantName { get; set; } = string.Empty;
/// <summary>
/// 单位
/// </summary>
public string? UnitName { get; set; }
/// <summary>
/// 联系电话
/// </summary>
public string? Mobile { get; set; }
}
/// <summary>
/// 暂存裁判行
/// </summary>
public class OrderBookDraftReferee
{
/// <summary>
/// Excel 物理行号
/// </summary>
public int Row { get; set; }
/// <summary>
/// 裁判姓名
/// </summary>
public string Name { get; set; } = string.Empty;
/// <summary>
/// 手机号
/// </summary>
public string Mobile { get; set; } = string.Empty;
/// <summary>
/// 裁判角色文本
/// </summary>
public string? RoleText { get; set; }
/// <summary>
/// 裁判等级文本
/// </summary>
public string? LevelText { get; set; }
/// <summary>
/// 负责场地名称
/// </summary>
public string? VenueName { get; set; }
/// <summary>
/// 负责项目名称
/// </summary>
public string? ProjectName { get; set; }
}