public async Task <bool> AddArticleAsync(ArticleViewModel model) { var article = _mapper.Map <Article>(model); await _articleRepository.AddAsync(article); await _unitOfWork.SaveAsync(); return(true); }
public async Task Run() { int runCount = 0; while (!OperateLogQueue.Queue.IsEmpty && runCount++ < BatchLimitCount) { OperateLogQueue.Queue.TryDequeue(out OperateLogMessage message); // 有消息将数据写入数据库 if (message != null) { var settings = _logSettingCaching.GetCacheData(60 * 60 * 24); var setting = (from s in settings where s.Action == message.Action && s.Controller == message.Controller select s).FirstOrDefault(); if (setting != null && setting.IsRecord) { var detail = new OperateLogDetail { OperateAt = DateTime.Now, SettingId = setting.Id, OperatorAccount = message.Account, OperatorName = message.Name, Content = message.RequestContent, ResultCode = message.HttpResultCode, Uri = message.Uri }; await _logDetaiRrepository.AddAsync(detail); } } } await _systemIdentityDbUnitOfWork.SaveAsync(); }
public async Task DoWork() { // GetConsumingEnumerable在程序启动时会阻塞主线程,加上了这个delay就可以了 await Task.Delay(1); foreach (var message in OperateLogQueue.blockingCollection.GetConsumingEnumerable()) { // 有消息将数据写入数据库 if (message != null) { var settings = _logSettingCaching.GetCacheData(60 * 60 * 24); var setting = (from s in settings where s.Action == message.Action && s.Controller == message.Controller select s).FirstOrDefault(); if (setting != null && setting.IsRecord) { var detail = new OperateLogDetail { OperateAt = DateTime.Now, SettingId = setting.Id, OperatorAccount = message.Account, OperatorName = message.Name, Content = message.RequestContent, ResultCode = message.HttpResultCode, Uri = message.Uri }; await _logDetaiRrepository.AddAsync(detail); await _systemIdentityDbUnitOfWork.SaveAsync(); } } } }
public async Task <bool> AddArticleAsync(ArticleViewModel model) { try { var article = _mapper.Map <Article>(model); await _articleRepository.AddAsync(article); await _unitOfWork.SaveAsync(); return(true); } catch (Exception e) { _logger.LogError(e.Message); _logger.LogError(e.StackTrace); return(false); } }
public async Task <bool> UpdateLoginLogSettingAsync(LoginLogSettingViewModel viewModel) { var setting = _logSettingRepository.Get(true).FirstOrDefault(); setting.SaveTime = viewModel.SaveTime; await _unitOfWork.SaveAsync(); return(true); }
/// <summary> /// 创建角色 /// </summary> public async Task <string> AddRole(RoleViewModel model) { // 开启事务 using var trans = await _systemIdentityDbUnitOfWork.StartTransactionAsync(); // 创建角色 var createResult = await _roleManager.CreateAsync(_mapper.Map <SystemRole>(model)); if (!createResult.Succeeded) { return(RoleConstants.ROLE_NAME_SAME); } // 找到菜单树所有父和子节点 var menuIdArray = model.Menus.Split(',', StringSplitOptions.RemoveEmptyEntries); var menuTree = (from tree in _menuTreeRepository.Get(false) where menuIdArray.Contains(tree.Ancestor.ToString()) || menuIdArray.Contains(tree.Descendant.ToString()) select tree).ToList(); // 所有关联菜单的ID var menuIds = menuTree.Select(tree => tree.Descendant).Concat( menuTree.Select(tree => tree.Ancestor)).Distinct(); // 找到刚创建的角色 var role = await _roleManager.FindByNameAsync(model.Name); // 关联角色和菜单 await AddOrUpdateRoleClaim(role, CustomClaimTypes.RoleMenus, menuIds.Select(i => i.ToString()).ToArray()); // 关联角色和菜单 这个主要是为了前端设置界面用 await AddOrUpdateRoleClaim(role, CustomClaimTypes.RoleMenusFront, menuIdArray.Distinct().ToArray()); await _systemIdentityDbUnitOfWork.SaveAsync(); await trans.CommitAsync(); return(string.Empty); }
public async Task Run() { // 清理过期的日志 var settings = _logSettingCaching.GetCacheData(); foreach (var setting in settings) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _logDetaiRrepository.RemoveAsync(d => d.OperateAt < expire && d.SettingId == setting.Id); } await _systemIdentityDbUnitOfWork.SaveAsync(); }
public async Task Run() { // 清理过期的日志 var setting = _loginSetting.GetCacheData(60 * 60 * 24).FirstOrDefault(); if (setting != null) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _loginLogDetail.RemoveAsync(d => d.OperateAt < expire); } await _systemIdentityDbUnitOfWork.SaveAsync(); }
public async Task DoWork() { while (true) { // 清理过期的日志 var setting = _loginSetting.GetCacheData(60 * 60 * 24).FirstOrDefault(); if (setting != null) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _loginLogDetail.RemoveAsync(d => d.OperateAt < expire); } await _systemIdentityDbUnitOfWork.SaveAsync(); // 一小时清理一次 await Task.Delay(TimeSpan.FromHours(1)); } }
public async Task DoWork() { while (true) { // 清理过期的日志 var settings = _logSettingCaching.GetCacheData(); foreach (var setting in settings) { var expire = DateTime.Now.AddDays(-setting.SaveTime); await _logDetaiRepository.RemoveAsync(d => d.OperateAt < expire && d.SettingId == setting.Id); } await _systemIdentityDbUnitOfWork.SaveAsync(); // 一小时清理一次 await Task.Delay(TimeSpan.FromHours(1)); } }
/// <summary> /// 更新操作日志配置 /// </summary> public async Task <bool> UpdateOpreateLogSettingAsync(OperateLogSettingViewModel viewModel) { try { var setting = await _logSettingRepository.GetAsync(viewModel.Id); setting.SaveTime = viewModel.SaveTime; setting.IsRecord = viewModel.IsRecord; _logSettingRepository.Update(setting); await _unitOfWork.SaveAsync(); // 清除setting缓存 _logSettingCache.ClearCacheData(); return(true); } catch (Exception e) { _logger.LogError(e.Message); _logger.LogError(e.StackTrace); } return(false); }
public async Task DoWork() { // GetConsumingEnumerable在程序启动时会阻塞主线程,加上了这个delay就可以了 await Task.Delay(1); foreach (var message in LoginLogQueue.blockingCollection.GetConsumingEnumerable()) { // 有消息将数据写入数据库 if (message != null) { var detail = new LoginLogDetail { OperateAt = message.OperateAt, OperatorAccount = message.OperatorAccount, IpAddress = message.IpAddress, IsSuccess = message.IsSuccess, }; await _loginLogDetail.AddAsync(detail); await _systemIdentityDbUnitOfWork.SaveAsync(); } } }
public async Task Run() { int runCount = 0; while (!LoginLogQueue.Queue.IsEmpty && runCount++ < BatchLimitCount) { LoginLogQueue.Queue.TryDequeue(out LoginLogMessage message); // 有消息将数据写入数据库 if (message != null) { var detail = new LoginLogDetail { OperateAt = message.OperateAt, OperatorAccount = message.OperatorAccount, IpAddress = message.IpAddress, IsSuccess = message.IsSuccess, }; await _loginLogDetail.AddAsync(detail); } } await _systemIdentityDbUnitOfWork.SaveAsync(); }