namespace SafeCampus.System;

/// <summary>
/// 访问日志表
///</summary>
[SugarTable("sys_log_visit_{year}{month}{day}", TableDescription = "访问日志表")]
[SplitTable(SplitType.Year)]//按年分表 （自带分表支持 年、季、月、周、日）
[Tenant(SqlSugarConst.DB_DEFAULT)]
[IgnoreInitTable]
public class SysLogVisit : BaseEntity
{
    /// <summary>
    /// 日志分类
    ///</summary>
    [SugarColumn(ColumnName = "Category", ColumnDescription = "日志分类", Length = 200)]
    public string Category { get; set; }

    /// <summary>
    /// 日志名称
    ///</summary>
    [SugarColumn(ColumnName = "Name", ColumnDescription = "日志名称", Length = 200)]
    public string Name { get; set; }

    /// <summary>
    /// 执行状态
    ///</summary>
    [SugarColumn(ColumnName = "ExeStatus", ColumnDescription = "执行状态", Length = 200)]
    public string ExeStatus { get; set; }

    /// <summary>
    /// 操作ip
    ///</summary>
    [SugarColumn(ColumnName = "OpIp", ColumnDescription = "操作ip", Length = 200)]
    public string OpIp { get; set; }

    /// <summary>
    /// 操作地址
    ///</summary>
    [SugarColumn(ColumnName = "OpAddress", ColumnDescription = "操作地址", Length = 200)]
    public string OpAddress { get; set; }

    /// <summary>
    /// 操作浏览器
    ///</summary>
    [SugarColumn(ColumnName = "OpBrowser", ColumnDescription = "操作浏览器", Length = 200)]
    public string OpBrowser { get; set; }

    /// <summary>
    /// 操作系统
    ///</summary>
    [SugarColumn(ColumnName = "OpOs", ColumnDescription = "操作系统", Length = 200)]
    public string OpOs { get; set; }

    /// <summary>
    /// 操作时间
    ///</summary>
    [SugarColumn(ColumnName = "OpTime", ColumnDescription = "操作时间")]
    [SplitField]//分表字段 在插入的时候会根据这个字段插入哪个表，在更新删除的时候用这个字段找出相关表
    public DateTime OpTime { get; set; }

    /// <summary>
    /// 操作人姓名
    ///</summary>
    [SugarColumn(ColumnName = "OpUser", ColumnDescription = "操作人姓名", Length = 200, IsNullable = true)]
    public string OpUser { get; set; }

    /// <summary>
    /// 操作人姓名
    ///</summary>
    [SugarColumn(ColumnName = "OpAccount", ColumnDescription = "操作人账号", Length = 200, IsNullable = true)]
    public string OpAccount { get; set; }
}
