服务端根据登录账号绑定本人档案,不接受学生 ID,无法代他人申请。 成绩单仅包含正式发布成绩;无已发布成绩时明确提示。 同类型、同用途 5 分钟内重复申请复用已有有效凭证。 申请后即时生成 PDF,可在本人凭证列表下载、二维码验真。 管理员的下载记录、失效、重签能力保持不变。
52 lines
1.8 KiB
C#
52 lines
1.8 KiB
C#
using Jiaowu.Api.Domain.Common;
|
|
using Jiaowu.Api.Domain.Identity;
|
|
|
|
namespace Jiaowu.Api.Domain.Academic;
|
|
|
|
public sealed class OfficialDocument : EntityBase
|
|
{
|
|
public required string DocumentNumber { get; set; }
|
|
public required string VerificationCodeHash { get; set; }
|
|
public OfficialDocumentType Type { get; set; }
|
|
public OfficialDocumentStatus Status { get; set; } = OfficialDocumentStatus.Valid;
|
|
public Guid StudentId { get; set; }
|
|
public Student? Student { get; set; }
|
|
public Guid IssuedByUserId { get; set; }
|
|
public ApplicationUser? IssuedByUser { get; set; }
|
|
public DateTime IssuedAt { get; set; } = DateTime.UtcNow;
|
|
public string? Purpose { get; set; }
|
|
public required string SnapshotJson { get; set; }
|
|
public required byte[] PdfContent { get; set; }
|
|
public required string PdfSha256 { get; set; }
|
|
public DateTime? InvalidatedAt { get; set; }
|
|
public Guid? InvalidatedByUserId { get; set; }
|
|
public ApplicationUser? InvalidatedByUser { get; set; }
|
|
public string? InvalidationReason { get; set; }
|
|
public Guid? ReissuedFromDocumentId { get; set; }
|
|
public OfficialDocument? ReissuedFromDocument { get; set; }
|
|
public ICollection<OfficialDocumentDownload> Downloads { get; set; } = [];
|
|
}
|
|
|
|
public sealed class OfficialDocumentDownload : EntityBase
|
|
{
|
|
public Guid OfficialDocumentId { get; set; }
|
|
public OfficialDocument? OfficialDocument { get; set; }
|
|
public Guid DownloadedByUserId { get; set; }
|
|
public ApplicationUser? DownloadedByUser { get; set; }
|
|
public string? IpAddress { get; set; }
|
|
public string? UserAgent { get; set; }
|
|
}
|
|
|
|
public enum OfficialDocumentType
|
|
{
|
|
Transcript = 1,
|
|
StudentStatusCertificate = 2
|
|
}
|
|
|
|
public enum OfficialDocumentStatus
|
|
{
|
|
Valid = 1,
|
|
Invalidated = 2,
|
|
Superseded = 3
|
|
}
|