Пример #1
0
        public async Task <bool> AddArticleAsync(ArticleViewModel model)
        {
            var article = _mapper.Map <Article>(model);
            await _articleRepository.AddAsync(article);

            await _unitOfWork.SaveAsync();

            return(true);
        }
Пример #2
0
        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();
        }
Пример #3
0
        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();
                    }
                }
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        public async Task <bool> UpdateLoginLogSettingAsync(LoginLogSettingViewModel viewModel)
        {
            var setting = _logSettingRepository.Get(true).FirstOrDefault();

            setting.SaveTime = viewModel.SaveTime;
            await _unitOfWork.SaveAsync();

            return(true);
        }
Пример #6
0
        /// <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);
        }
Пример #7
0
        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();
        }
Пример #8
0
        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();
        }
Пример #9
0
        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));
            }
        }
Пример #11
0
        /// <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();
                }
            }
        }
Пример #13
0
        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();
        }