You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.2 KiB
117 lines
3.2 KiB
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using CoreAgent.ProtocolClient.Enums;
|
|
|
|
namespace CoreAgent.ProtocolClient.Models
|
|
{
|
|
/// <summary>
|
|
/// 协议日志详情实体
|
|
/// 用于存储解析后的协议日志详细信息到数据库
|
|
/// </summary>
|
|
[Table("ProtocolLogDetails")]
|
|
public class ProtocolLogDetail
|
|
{
|
|
/// <summary>
|
|
/// 主键ID
|
|
/// </summary>
|
|
[Key]
|
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
|
public long Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// 协议层类型
|
|
/// </summary>
|
|
[Required]
|
|
[Column("LayerType")]
|
|
public ProtocolLayer LayerType { get; set; }
|
|
|
|
/// <summary>
|
|
/// 消息详情集合(JSON格式存储)
|
|
/// </summary>
|
|
[Column("MessageDetail", TypeName = "TEXT")]
|
|
public string? MessageDetailJson { get; set; }
|
|
|
|
/// <summary>
|
|
/// 小区ID
|
|
/// </summary>
|
|
[Column("CellID")]
|
|
public int? CellID { get; set; }
|
|
|
|
/// <summary>
|
|
/// 国际移动用户识别码
|
|
/// </summary>
|
|
[Column("IMSI", TypeName = "VARCHAR(20)")]
|
|
[MaxLength(20)]
|
|
public string? IMSI { get; set; }
|
|
|
|
/// <summary>
|
|
/// 日志方向类型
|
|
/// </summary>
|
|
[Required]
|
|
[Column("Direction")]
|
|
public int Direction { get; set; }
|
|
|
|
/// <summary>
|
|
/// 用户设备ID
|
|
/// </summary>
|
|
[Column("UEID")]
|
|
public int? UEID { get; set; }
|
|
|
|
/// <summary>
|
|
/// 公共陆地移动网络标识
|
|
/// </summary>
|
|
[Column("PLMN", TypeName = "VARCHAR(10)")]
|
|
[MaxLength(10)]
|
|
public string? PLMN { get; set; }
|
|
|
|
/// <summary>
|
|
/// 时间间隔(毫秒)
|
|
/// </summary>
|
|
[Column("TimeMs")]
|
|
public long TimeMs { get; set; }
|
|
|
|
/// <summary>
|
|
/// 时间戳
|
|
/// </summary>
|
|
[Required]
|
|
[Column("Timestamp")]
|
|
public long Timestamp { get; set; }
|
|
|
|
/// <summary>
|
|
/// 信息字段
|
|
/// </summary>
|
|
[Column("Info", TypeName = "TEXT")]
|
|
public string? Info { get; set; }
|
|
|
|
/// <summary>
|
|
/// 消息字段
|
|
/// </summary>
|
|
[Column("Message", TypeName = "TEXT")]
|
|
public string? Message { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// 消息详情集合(非数据库字段,用于业务逻辑)
|
|
/// </summary>
|
|
[NotMapped]
|
|
public IEnumerable<string>? MessageDetail
|
|
{
|
|
get => !string.IsNullOrEmpty(MessageDetailJson)
|
|
? Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<string>>(MessageDetailJson)
|
|
: null;
|
|
set => MessageDetailJson = value != null
|
|
? Newtonsoft.Json.JsonConvert.SerializeObject(value)
|
|
: null;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 时间间隔(用于业务逻辑)
|
|
/// </summary>
|
|
[NotMapped]
|
|
public TimeSpan Time
|
|
{
|
|
get => TimeSpan.FromMilliseconds(TimeMs);
|
|
set => TimeMs = (long)value.TotalMilliseconds;
|
|
}
|
|
}
|
|
}
|