using DeviceRepair.Models; using DeviceRepair.Models.History; using DeviceRepair.Models.Logs; using NLog; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace DeviceRepair.DataAccess { public class OperationAccess : DbContext { private static readonly Logger log = LogManager.GetCurrentClassLogger(); private static OperationAccess manager; public static OperationAccess Instance { get { if (manager == null) manager = new OperationAccess(); return manager; } } /// /// 用户登录登出日志 /// /// /// public APIResponseData UserLoginContent(OperationFilterModel FilterInfo) { APIResponseData apiResponseData = new APIResponseData(); try { db.ChangeDatabase("main"); Dictionary userInfos = base.GetList().ToDictionary(x => x.LoginCode, x => x); if (userInfos != null && userInfos.Count > 0) { db.ChangeDatabase("log"); var exp = Expressionable.Create(); 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 userLogins = db.Queryable().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) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } catch (Exception ex) { log.Error(ex); apiResponseData.Code = -1; apiResponseData.Message = ex.Message; } return apiResponseData; } } }