文件内容 OldStartHostedService.cs 5 KB 5338 字符
//using ExampleForm.Handler;
//using ExampleForm.usermodels;
//using Microsoft.EntityFrameworkCore;
//using Z.EntityFramework.Plus;

//namespace ExampleForm
//{
//    /// <summary>
//    /// 系统初始化
//    /// </summary>
//    public class OldStartHostedService : IHostedService
//    {

//        private readonly IServiceProvider _serviceProvider;
//        private readonly ILogger<OldStartHostedService> _logger;



//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="serviceProvider"></param>
//        /// <param name="logger"></param>
//        public OldStartHostedService(IServiceProvider serviceProvider, ILogger<OldStartHostedService> logger)
//        {
//            _serviceProvider = serviceProvider;
//            _logger = logger;
//        }

//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="cancellationToken"></param>
//        /// <returns></returns>
//        /// <exception cref="System.NotImplementedException"></exception>
//        public async Task StartAsync(CancellationToken cancellationToken)
//        {

//            //foreach(string item in System.Environment.GetEnvironmentVariables().Keys)
//            //{
//            //    _logger.LogWarning($"{item} === {Environment.GetEnvironmentVariable(item)}");
//            //}

//            await SystemInitAsync();


//            //return Task.CompletedTask;
//            //throw new System.NotImplementedException();
//        }

//        private void FuncTask(GradeInfo abc)
//        {
//            Task.Run(async void () =>
//            {
//                Console.WriteLine(abc.Name);
//                if (abc.Id != 0)
//                {
//                    await Task.Delay(1);
//                }
//            });
//        }

//        /// <summary>
//        /// 初始化系统
//        /// </summary>
//        private async Task SystemInitAsync()
//        {
//            //await Task.Delay(3000);

//            try
//            {
//                using var _scope = _serviceProvider.CreateScope();
//                using var _dbContext = _scope.ServiceProvider.GetRequiredService<IExampleFormDbContext>();

//                if (_dbContext.Database.GetPendingMigrations().Any())
//                {
//                    _dbContext.Database.Migrate();
//                }

//                //创建基础角色 下面最好用事务来做
//                var adminid = 0;
//                var admin = await _dbContext.UserInfo.Where(x => x.Email == "admin@admin.com").AsNoTracking().FirstOrDefaultAsync();
//                if (admin == null || admin == default)
//                {

//                    try
//                    {
//                        await _dbContext.Database.BeginTransactionAsync();
//                        var one = new UserInfo();
//                        one.Email = "admin@admin.com";
//                        one.UserName = "管理员";
//                        one.CreateDate = DateTime.Now;
//                        //one.Grade = "admin";
//                        one.IsEnable = true;
//                        one.PassWord = $"123456".ToMd5Lower();
//                        //one.GradeId = 1;
//                        _dbContext.Add(one);
//                        await _dbContext.SaveChangesAsync();
//                        adminid = one.Id;

//                        var _handler = _scope.ServiceProvider.GetRequiredService<RoleBackLoadHandler>();

//                        //创建组
//                        var item = new GradeInfo
//                        {
//                            Name = "超管",
//                            Code = "root",
//                            Desc = "管理组",
//                            IsEnable = true
//                        };
//                        _dbContext.Add(item);
//                        await _dbContext.SaveChangesAsync();
//                        var groupid = item.Id;
//                        _dbContext.Add(new UserGrade() { GradeId = groupid, UserId = adminid });
//                        await _dbContext.SaveChangesAsync();

//                        await _handler.LoadAsync(_dbContext, false);
//                        await _dbContext.Database.CommitTransactionAsync();
//                    }
//                    catch (Exception exlinit)
//                    {
//                        await _dbContext.Database.RollbackTransactionAsync();
//                        _logger.LogException(exlinit);
//                        throw;
//                    }
//                }
//                else
//                {
//                    adminid = admin.Id;
//                }
//                //_dbContext.Dispose();
//                //_scope.Dispose();
//            }
//            catch (Exception exl)
//            {
//                _logger.LogException(exl);
//                throw;
//            }
//        }

//        /// <summary>
//        /// 
//        /// </summary>
//        /// <param name="cancellationToken"></param>
//        /// <returns></returns>
//        /// <exception cref="System.NotImplementedException"></exception>
//        public Task StopAsync(CancellationToken cancellationToken)
//        {
//            return Task.CompletedTask;
//            //throw new System.NotImplementedException();
//        }
//    }
//}
​ ​