DeviceManager/DeviceRepair.DataAccess/OperationAccess.cs
2024-06-11 01:33:11 +08:00

74 lines
2.8 KiB
C#

using DeviceRepair.Models;
using DeviceRepair.Models.History;
using DeviceRepair.Models.Logs;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
namespace DeviceRepair.DataAccess
{
public class OperationAccess : DbContext<UserInfoModel>
{
private static OperationAccess manager;
public static OperationAccess Instance
{
get
{
if (manager == null)
manager = new OperationAccess();
return manager;
}
}
/// <summary>
/// 用户登录登出日志
/// </summary>
/// <param name="FilterInfo"></param>
/// <returns></returns>
public APIResponseData UserLoginContent(OperationFilterModel FilterInfo)
{
APIResponseData apiResponseData = new APIResponseData();
try
{
db.ChangeDatabase("main");
Dictionary<string, UserInfoModel> userInfos = base.GetList().ToDictionary(x => x.LoginCode, x => x);
if (userInfos != null && userInfos.Count > 0)
{
db.ChangeDatabase("log");
var exp = Expressionable.Create<UserLogin>();
if (FilterInfo != null)
{
exp.AndIF(FilterInfo.sDate != DateTime.MinValue, x => x.OperationDate >= FilterInfo.sDate);
exp.AndIF(FilterInfo.eDate != DateTime.MinValue, x => x.OperationDate <= FilterInfo.eDate);
exp.AndIF(!string.IsNullOrWhiteSpace(FilterInfo.LoginCode), x => x.LoginCode.Contains(FilterInfo.LoginCode));
exp.AndIF(!string.IsNullOrWhiteSpace(FilterInfo.OperationType), x => x.OperationType.Contains(FilterInfo.OperationType));
exp.AndIF(!string.IsNullOrWhiteSpace(FilterInfo.ClientName), x => x.OperationComputer.Contains(FilterInfo.ClientName));
}
List<UserLogin> userLogins = db.Queryable<UserLogin>().With(SqlWith.NoLock).Where(exp.ToExpression()).ToList();
foreach (UserLogin item in userLogins)
{
if (userInfos.ContainsKey(item.LoginCode))
item.RealName = userInfos[item.LoginCode].RealName;
}
apiResponseData.Code = 1;
apiResponseData.Data = userLogins;
}
}
catch (SqlSugarException ex)
{
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
catch (Exception ex)
{
apiResponseData.Code = -1;
apiResponseData.Message = ex.Message;
}
return apiResponseData;
}
}
}