64 lines
1.7 KiB
C#
64 lines
1.7 KiB
C#
using System.Text.Json.Serialization;
|
||
|
||
namespace YD_TrainingCompetition_Api.Models;
|
||
|
||
/// <summary>
|
||
/// 报警记录,包含 JSON/XML 数据和图片信息
|
||
/// </summary>
|
||
public sealed class AlarmRecord
|
||
{
|
||
[JsonPropertyName("id")]
|
||
public string Id { get; set; } = Guid.NewGuid().ToString("N");
|
||
|
||
[JsonPropertyName("deviceId")]
|
||
public string DeviceId { get; set; } = string.Empty;
|
||
|
||
[JsonPropertyName("ip")]
|
||
public string Ip { get; set; } = string.Empty;
|
||
|
||
[JsonPropertyName("dataType")]
|
||
public string DataType { get; set; } = string.Empty; // "xml" or "json"
|
||
|
||
/// <summary>
|
||
/// 原始报警数据(JSON 或 XML 字符串)
|
||
/// </summary>
|
||
[JsonPropertyName("rawData")]
|
||
public string RawData { get; set; } = string.Empty;
|
||
|
||
/// <summary>
|
||
/// 报警数据长度(字节)
|
||
/// </summary>
|
||
[JsonPropertyName("dataLength")]
|
||
public uint DataLength { get; set; }
|
||
|
||
/// <summary>
|
||
/// 附带图片数量
|
||
/// </summary>
|
||
[JsonPropertyName("pictureCount")]
|
||
public int PictureCount { get; set; }
|
||
|
||
/// <summary>
|
||
/// 图片数据(Base64 编码,仅保留最新报警的图片)
|
||
/// </summary>
|
||
[JsonPropertyName("pictures")]
|
||
public List<AlarmPicture> Pictures { get; set; } = new();
|
||
|
||
[JsonPropertyName("timestamp")]
|
||
public DateTimeOffset Timestamp { get; set; } = DateTimeOffset.UtcNow;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 报警附带图片
|
||
/// </summary>
|
||
public sealed class AlarmPicture
|
||
{
|
||
[JsonPropertyName("fileName")]
|
||
public string FileName { get; set; } = string.Empty;
|
||
|
||
[JsonPropertyName("length")]
|
||
public uint Length { get; set; }
|
||
|
||
[JsonPropertyName("base64")]
|
||
public string Base64 { get; set; } = string.Empty;
|
||
}
|