using Longbow.Web.Mvc;
using PetaPoco;
using System;
using System.Collections.Generic;
namespace Bootstrap.DataAccess
{
///
/// 登录用户信息实体类
///
[TableName("LoginLogs")]
public class LoginUser
{
///
/// 获得/设置 Id
///
public string Id { get; set; }
///
/// 获得/设置 用户名
///
public string UserName { get; set; }
///
/// 获得/设置 登录时间
///
public DateTime LoginTime { get; set; }
///
/// 获得/设置 登录IP地址
///
public string Ip { get; set; }
///
/// 获得/设置 登录浏览器
///
public string Browser { get; set; }
///
/// 获得/设置 登录操作系统
///
public string OS { get; set; }
///
/// 获得/设置 登录地点
///
public string City { get; set; }
///
/// 获得/设置 登录是否成功
///
public string Result { get; set; }
///
/// 获得/设置 用户 UserAgent
///
public string UserAgent { get; set; }
///
/// 保存登录用户数据
///
///
///
public virtual bool Log(LoginUser user)
{
var db = DbManager.Create();
db.Save(user);
return true;
}
///
/// 获得登录用户的分页数据
///
///
///
///
///
///
public virtual Page RetrieveByPages(PaginationOption po, DateTime? startTime, DateTime? endTime, string ip)
{
var sql = new Sql("select * from LoginLogs");
if (startTime.HasValue) sql.Where("LoginTime >= @0", startTime.Value);
if (endTime.HasValue) sql.Where("LoginTime < @0", endTime.Value.AddDays(1));
if (!string.IsNullOrEmpty(ip)) sql.Where("ip = @0", ip);
sql.OrderBy($"{po.Sort} {po.Order}");
return DbManager.Create().Page(po.PageIndex, po.Limit, sql);
}
///
/// 获取所有登录数据
///
///
public virtual IEnumerable RetrieveAll(DateTime? startTime, DateTime? endTime, string ip)
{
var sql = new Sql("select UserName, LoginTime, Ip, Browser, OS, City, Result from LoginLogs");
if (startTime.HasValue) sql.Where("LoginTime >= @0", startTime.Value);
if (endTime.HasValue) sql.Where("LoginTime < @0", endTime.Value.AddDays(1));
if (!string.IsNullOrEmpty(ip)) sql.Where("ip = @0", ip);
sql.OrderBy($"LoginTime");
return DbManager.Create().Fetch(sql);
}
}
}