using Application.Domain.Entities; using Infrastructure.Application.Entites.Settings; using Infrastructure.Data; using Infrastructure.Extensions; using Infrastructure.Security; using IoT.Shared; using Microsoft.EntityFrameworkCore; using System.Collections.Generic; using System.Linq; using Microsoft.Extensions.Configuration; using System; namespace IoTNode { public class DbConfig : IDbConfig { private readonly IConfiguration _cfg; private readonly IEncryptionService _encryptionService; public DbConfig(IConfiguration cfg, IEncryptionService encryptionService) { this._cfg = cfg; this._encryptionService = encryptionService; } public void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { } public void OnModelCreating(ModelBuilder modelBuilder) { IoTSharedDbConfig.OnModelCreating(modelBuilder); } public void Seed(DbContext db) { IoTSharedDbConfig.Seed(db); var saRole = new Role { Name = "超级管理员", IsReadOnly = true }; var adminRole = new Role { Name = "管理员", IsReadOnly = true }; var skips = new string[] { "添加Api", "修改Api", "添加分类", "修改分类", "添加参数", "修改参数", "添加产品", "修改产品", "添加节点", "添加权限", "修改权限", "添加权限分类", "修改权限分类", "添加设备" }; foreach (var item in db.Set()) { saRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true }); if (!item.Name.Contains("删除") && !skips.Contains(item.Name)) { adminRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true }); } } var securityStam = "123456"; db.Set().Add(new User { UserName = "super", SecurityStamp = securityStam, PasswordHash = _encryptionService.CreatePasswordHash("123456", securityStam), Email = "super@test.com", UserRoles = new List { new UserRole { Role = saRole } } }); db.Set().Add(new User { UserName = "admin", SecurityStamp = securityStam, PasswordHash = _encryptionService.CreatePasswordHash("123456", securityStam), Email = "admin@test.com", UserRoles = new List { new UserRole { Role = adminRole } } }); db.SaveChanges(); // var set = db.Set(); set.Add(new Setting { Name = "name", Value = "物联节点", Type = SettingType.Text }); set.Add(new Setting { Name = "logo", Value = "/images/logo.png", Type = SettingType.ImageUrl }); set.Add(new Setting { Name = "copyright", Value = "Copyright © {0} Company. All rights reserved", Type = SettingType.Html }); // var macAddress = Helper.Instance.GetMacAddress(); set.Add(new Setting { Name = "sn", Value = macAddress, Type = SettingType.Text }); set.Add(new Setting { Name = "id", Value = macAddress.Md5(), Type = SettingType.Text }); set.Add(new Setting { Name = "code", Value = "根据id生成的授权码", Type = SettingType.Text }); // var host = this._cfg.GetValue("seed:host", "localhost"); var stream = this._cfg.GetValue("seed:stream", "localhost"); var delay = this._cfg.GetValue("seed:delay", "100"); set.Add(new Setting { Name = "debug", Value = "false" }); set.Add(new Setting { Name = "notify:enabled", Value = "true" }); set.Add(new Setting { Name = "notify:host", Value = $"http://{host}/IoTCenter" }); set.Add(new Setting { Name = "timer.seconds", Value = "180" }); set.Add(new Setting { Name = "onvif.timer", Value = "1" }); set.Add(new Setting { Name = "onvif.speed", Value = "0.2" }); set.Add(new Setting { Name = "camera.usr", Value = "admin" }); set.Add(new Setting { Name = "camera.pwd", Value = "dsideal123" }); set.Add(new Setting { Name = "stream.rtmp", Value = stream }); set.Add(new Setting { Name = "ffmpeg.args", Value = " -y -threads {0} -rtsp_transport tcp -use_wallclock_as_timestamps 1 -stimeout 3000000 -i \"{1}\" -fflags +genpts -c copy -f flv \"{2}\"" }); set.Add(new Setting { Name = "fbee.writelist", Value = "" }); set.Add(new Setting { Name = "camera.writelist", Value = "" }); set.Add(new Setting { Name = "delay", Value = delay, Type = SettingType.Text }); db.SaveChanges(); var sn = macAddress; db.Set().Add(new Node { Id = $"nodeid-{sn}".ToGuid(), OrganName = this._cfg.GetValue("seed:OrganName", "默认机构名称"), OrganNumber = this._cfg.GetValue("seed:OrganNumber", "默认机构编号"), CategoryName = this._cfg.GetValue("seed:CategoryName", "默认分类名称"), CategoryNumber = this._cfg.GetValue("seed:CategoryNumber", "默认分类编号"), Name = this._cfg.GetValue("seed:NodeName", "节点"), Number = sn, IsOnline = true, Version = Helper.Instance.GetVersion(), Image = "/images/classroom.png" }); db.SaveChanges(); } } }