363 lines
7.8 KiB
C#
363 lines
7.8 KiB
C#
using System.ComponentModel.DataAnnotations;
|
||
using Microsoft.AspNetCore.Http;
|
||
|
||
namespace YD_Event.Application.Certificate.Dtos;
|
||
/// <summary>
|
||
/// 更新DOC模板输入
|
||
/// </summary>
|
||
public class UpdateDocTemplateInput
|
||
{
|
||
/// <summary>
|
||
/// 模板ID
|
||
/// </summary>
|
||
[Required(ErrorMessage = "模板ID不能为空")]
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 版本号
|
||
/// </summary>
|
||
[Required(ErrorMessage = "版本号不能为空")]
|
||
public int Version { get; set; }
|
||
|
||
/// <summary>
|
||
/// DOC模板文件(可选)
|
||
/// </summary>
|
||
public IFormFile TemplateFile { get; set; }
|
||
|
||
/// <summary>
|
||
/// 像素宽度
|
||
/// </summary>
|
||
[Required(ErrorMessage = "宽度不能为空")]
|
||
[Range(100, 5000, ErrorMessage = "宽度必须在100-5000像素之间")]
|
||
public int Width { get; set; }
|
||
|
||
/// <summary>
|
||
/// 像素高度
|
||
/// </summary>
|
||
[Required(ErrorMessage = "高度不能为空")]
|
||
[Range(100, 5000, ErrorMessage = "高度必须在100-5000像素之间")]
|
||
public int Height { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否当前激活版本
|
||
/// </summary>
|
||
public bool IsActive { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 证书模板上传结果
|
||
/// </summary>
|
||
public class CertificateTemplateUploadResult
|
||
{
|
||
/// <summary>
|
||
/// 模板ID
|
||
/// </summary>
|
||
public long TemplateId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 模板文件URL
|
||
/// </summary>
|
||
public string TemplateUrl { get; set; }
|
||
|
||
/// <summary>
|
||
/// 检测到的占位符列表
|
||
/// </summary>
|
||
public List<DetectedPlaceholderOutput> DetectedPlaceholders { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 总占位符数量
|
||
/// </summary>
|
||
public int TotalPlaceholders { get; set; }
|
||
|
||
/// <summary>
|
||
/// 有效占位符数量
|
||
/// </summary>
|
||
public int ValidPlaceholders { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 检测占位符输入
|
||
/// </summary>
|
||
public class DetectPlaceholdersInput
|
||
{
|
||
/// <summary>
|
||
/// DOC模板文件
|
||
/// </summary>
|
||
[Required(ErrorMessage = "请选择DOC模板文件")]
|
||
public IFormFile TemplateFile { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 保存占位符配置输入
|
||
/// </summary>
|
||
public class SavePlaceholdersInput
|
||
{
|
||
/// <summary>
|
||
/// 模板ID
|
||
/// </summary>
|
||
[Required(ErrorMessage = "模板ID不能为空")]
|
||
public long TemplateId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 占位符列表
|
||
/// </summary>
|
||
[Required(ErrorMessage = "占位符列表不能为空")]
|
||
public List<PlaceholderInput> Placeholders { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 占位符输入
|
||
/// </summary>
|
||
public class PlaceholderInput
|
||
{
|
||
/// <summary>
|
||
/// 占位符键名
|
||
/// </summary>
|
||
[Required(ErrorMessage = "占位符键名不能为空")]
|
||
[StringLength(50, ErrorMessage = "占位符键名长度不能超过50个字符")]
|
||
public string PlaceholderKey { get; set; }
|
||
|
||
/// <summary>
|
||
/// 显示名称
|
||
/// </summary>
|
||
[Required(ErrorMessage = "显示名称不能为空")]
|
||
[StringLength(100, ErrorMessage = "显示名称长度不能超过100个字符")]
|
||
public string DisplayName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 占位符类型
|
||
/// </summary>
|
||
[Required(ErrorMessage = "占位符类型不能为空")]
|
||
public string PlaceholderType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 默认值
|
||
/// </summary>
|
||
public string DefaultValue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否必填
|
||
/// </summary>
|
||
public bool IsRequired { get; set; }
|
||
|
||
/// <summary>
|
||
/// 验证规则
|
||
/// </summary>
|
||
public string ValidationRule { get; set; }
|
||
|
||
/// <summary>
|
||
/// 描述
|
||
/// </summary>
|
||
public string Description { get; set; }
|
||
|
||
/// <summary>
|
||
/// 排序
|
||
/// </summary>
|
||
public int Sort { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 占位符输出
|
||
/// </summary>
|
||
public class PlaceholderOutput
|
||
{
|
||
/// <summary>
|
||
/// ID
|
||
/// </summary>
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 模板ID
|
||
/// </summary>
|
||
public long TemplateId { get; set; }
|
||
|
||
/// <summary>
|
||
/// 占位符键名
|
||
/// </summary>
|
||
public string PlaceholderKey { get; set; }
|
||
|
||
/// <summary>
|
||
/// 显示名称
|
||
/// </summary>
|
||
public string DisplayName { get; set; }
|
||
|
||
/// <summary>
|
||
/// 占位符类型
|
||
/// </summary>
|
||
public string PlaceholderType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 默认值
|
||
/// </summary>
|
||
public string DefaultValue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否必填
|
||
/// </summary>
|
||
public bool IsRequired { get; set; }
|
||
|
||
/// <summary>
|
||
/// 验证规则
|
||
/// </summary>
|
||
public string ValidationRule { get; set; }
|
||
|
||
/// <summary>
|
||
/// 描述
|
||
/// </summary>
|
||
public string Description { get; set; }
|
||
|
||
/// <summary>
|
||
/// 排序
|
||
/// </summary>
|
||
public int Sort { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 检测到的占位符输出
|
||
/// </summary>
|
||
public class DetectedPlaceholderOutput
|
||
{
|
||
/// <summary>
|
||
/// 占位符键名
|
||
/// </summary>
|
||
public string PlaceholderKey { get; set; }
|
||
|
||
/// <summary>
|
||
/// 占位符类型
|
||
/// </summary>
|
||
public string PlaceholderType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否有效
|
||
/// </summary>
|
||
public bool IsValid { get; set; }
|
||
|
||
/// <summary>
|
||
/// 验证消息
|
||
/// </summary>
|
||
public string ValidationMessage { get; set; }
|
||
|
||
/// <summary>
|
||
/// 建议的显示名称
|
||
/// </summary>
|
||
public string SuggestedDisplayName { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 占位符检测结果
|
||
/// </summary>
|
||
public class PlaceholderDetectionResult
|
||
{
|
||
/// <summary>
|
||
/// 检测到的占位符列表
|
||
/// </summary>
|
||
public List<DetectedPlaceholderOutput> Placeholders { get; set; } = new();
|
||
|
||
/// <summary>
|
||
/// 总数
|
||
/// </summary>
|
||
public int TotalCount => Placeholders.Count;
|
||
|
||
/// <summary>
|
||
/// 有效数量
|
||
/// </summary>
|
||
public int ValidCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 无效数量
|
||
/// </summary>
|
||
public int InvalidCount { get; set; }
|
||
}
|
||
|
||
/// <summary>
|
||
/// 证书模板输出
|
||
/// </summary>
|
||
public class CertificateTemplateOutput
|
||
{
|
||
/// <summary>
|
||
/// ID
|
||
/// </summary>
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 版本号
|
||
/// </summary>
|
||
public int Version { get; set; }
|
||
|
||
/// <summary>
|
||
/// 模板类型
|
||
/// </summary>
|
||
public string TemplateType { get; set; }
|
||
|
||
/// <summary>
|
||
/// DOC模板URL
|
||
/// </summary>
|
||
public string DocxTemplateUrl { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否当前激活版本
|
||
/// </summary>
|
||
public bool IsActive { get; set; }
|
||
|
||
/// <summary>
|
||
/// 状态
|
||
/// </summary>
|
||
public AvailabilityStatus Status { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间
|
||
/// </summary>
|
||
public DateTime CreatedTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 占位符列表
|
||
/// </summary>
|
||
public List<PlaceholderOutput> Placeholders { get; set; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 证书模板简单输出(用于发放证书时的模板选择)
|
||
/// </summary>
|
||
public class CertificateTemplateSimpleOutput
|
||
{
|
||
/// <summary>
|
||
/// 模板ID
|
||
/// </summary>
|
||
public long Id { get; set; }
|
||
|
||
/// <summary>
|
||
/// 模板类型
|
||
/// </summary>
|
||
public string TemplateType { get; set; }
|
||
|
||
/// <summary>
|
||
/// 版本号
|
||
/// </summary>
|
||
public int Version { get; set; }
|
||
|
||
/// <summary>
|
||
/// 宽度
|
||
/// </summary>
|
||
public int Width { get; set; }
|
||
|
||
/// <summary>
|
||
/// 高度
|
||
/// </summary>
|
||
public int Height { get; set; }
|
||
|
||
/// <summary>
|
||
/// 是否激活
|
||
/// </summary>
|
||
public bool IsActive { get; set; }
|
||
|
||
/// <summary>
|
||
/// 创建时间
|
||
/// </summary>
|
||
public DateTime CreatedTime { get; set; }
|
||
|
||
/// <summary>
|
||
/// 显示名称
|
||
/// </summary>
|
||
public string DisplayName => $"模板 {Id} (v{Version}) - {TemplateType}";
|
||
}
|