/// <summary> /// 获取管理员组信息的分页列表 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回管理员组信息的分页列表</returns> public PageResult<AdministratorGroupExport> GetAdministratorGroups(IModelToDbContextOfAdministrator db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); Expression<Func<AdministratorGroup, bool>> predicate1 = x => x.Id > 0; if (this.KeywordForGroupName != null) { this.KeywordForGroupName = VerifyHelper.EliminateSpaces(this.KeywordForGroupName); string[] keywords = this.KeywordForGroupName.Split(new char[] { ' ' }); predicate1 = x => keywords.All(kw => x.Name.Contains(kw)); } int countOfAllMessages = db.AdministratorGroups .Where(predicate1) .Count(); var tList = db.AdministratorGroups .Where(predicate1) .OrderBy(x => x.Name) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(x => new AdministratorGroupExport(x)); return new PageResult<AdministratorGroupExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 保持心跳 /// </summary> /// <param name="db">数据库存储指针</param> public void KeepHeartbeat(IModelToDbContextOfAdministrator db) { SettingOfBase setting = new SettingOfBase(db); int s = setting.HeartbeatInterval * 3; this.Timeout = DateTime.Now.AddSeconds(s); }
/// <summary> /// 保持心跳 /// </summary> /// <param name="db">数据库连接对象</param> /// <param name="token">身份标识</param> public static void KeepHeartbeat(IModelToDbContextOfAdministrator db, string token) { AdministratorLoginInfo info = infos.FirstOrDefault(x => x.Token == token); if (info == null) { throw new Exception("指定的身份标识所标示的管理员不存在"); } info.KeepHeartbeat(db); }
/// <summary> /// 实例化一个新的管理员的登陆信息 /// </summary> /// <param name="db">数据库存储指针</param> /// <param name="administratorId">管理员信息的存储指针</param> public AdministratorLoginInfo(IModelToDbContextOfAdministrator db, int administratorId) { SettingOfBase setting = new SettingOfBase(db); int s = setting.HeartbeatInterval * 3; this.Token = Guid.NewGuid().ToString("N"); this.AdministratorId = administratorId; this.LoginTime = DateTime.Now; this.Timeout = this.LoginTime.AddSeconds(s); }
/// <summary> /// 获取管理员登陆记录的分页列表 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回管理员登陆记录的分页列表</returns> public PageResult<AdministratorLandingRecordExport> GetAdministratorLandingRecords(IModelToDbContextOfAdministrator db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); Expression<Func<AdministratorLandingRecord, bool>> predicate1 = x => x.Id > 0; Expression<Func<AdministratorLandingRecord, bool>> predicate2 = x => x.Id > 0; Expression<Func<AdministratorLandingRecord, bool>> predicate3 = x => x.Id > 0; Expression<Func<AdministratorLandingRecord, bool>> predicate4 = x => x.Id > 0; if (this.KeywordForUsername != null) { this.KeywordForUsername = VerifyHelper.EliminateSpaces(this.KeywordForUsername); string[] keywords = this.KeywordForUsername.Split(new char[] { ' ' }); predicate1 = x => keywords.All(kw => x.Owner.Username.Contains(kw)); } if (this.UserId != null) { int userId = (int)this.UserId; predicate2 = x => x.Owner.Id == userId; } if (this.BeginTime != null) { DateTime beginTime = (DateTime)this.BeginTime; predicate3 = x => x.CreatedTime >= beginTime; } if (this.EndTime != null) { DateTime endTime = (DateTime)this.EndTime; predicate4 = x => x.CreatedTime < endTime; } int countOfAllMessages = db.AdministratorLandingRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Where(predicate4) .Count(); var tList = db.AdministratorLandingRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Where(predicate4) .OrderByDescending(x => x.CreatedTime) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(x => new AdministratorLandingRecordExport(x)); return new PageResult<AdministratorLandingRecordExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 声明管理员登入 /// </summary> /// <param name="db">数据库连接对象</param> /// <param name="userId">管理员信息的存储指针</param> /// <returns>返回身份标识</returns> public static string AddInfo(IModelToDbContextOfAdministrator db, int userId) { lock (infos) { RemoveInfo(userId); AdministratorLoginInfo info = new AdministratorLoginInfo(db, userId); CallEvent(Logining, info); infos.Add(info); CallEvent(Logined, info); return info.Token; } }
/// <summary> /// 设置并保存 /// </summary> /// <param name="db">数据库连接对象</param> public void SetAndSave(IModelToDbContextOfAdministrator db) { SettingOfBase setting = new SettingOfBase(db); setting.PageSizeForClient = this.PageSizeForClient; setting.PageSizeForAdmin = this.PageSizeForAdmin; setting.HeartbeatInterval = this.HeartbeatInterval; setting.WorkingHour_Begin = this.WorkingHour_Begin; setting.WorkingHour_End = this.WorkingHour_End; setting.VirtualQueuing = this.VirtualQueuing; setting.CollectionRunning = this.CollectionRunning; setting.Save(db); }
/// <summary> /// 获取基础的管理员用户组信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns><返回基础的管理员用户组信息/returns> public NormalResult<List<BasicAdministratorGroupExport>> GetBasicAdministratorGroups(IModelToDbContextOfAdministrator db) { List<BasicAdministratorGroupExport> result = db.AdministratorGroups.ToList().ConvertAll(x => new BasicAdministratorGroupExport(x)); return new NormalResult<List<BasicAdministratorGroupExport>>(result); }
/// <summary> /// 获取管理员信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <param name="token">身份标识</param> /// <returns>返回管理员信息</returns> public static Administrator GetAdministratorInfo(IModelToDbContextOfAdministrator db, string token) { AdministratorLoginInfo info = infos.FirstOrDefault(x => x.Token == token); if (info == null) { throw new Exception("指定的身份标识所标示的管理员不存在"); } return info.GetUser(db); }
/// <summary> /// 获取管理员信息 /// </summary> /// <param name="db">数据库存储指针</param> /// <returns>返回管理员信息</returns> public Administrator GetUser(IModelToDbContextOfAdministrator db) { return db.Administrators.Find(this.AdministratorId); }