You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
621 lines
32 KiB
621 lines
32 KiB
using Application.Domain.Entities;
|
|
using Infrastructure.Application.Entites.Settings;
|
|
using Infrastructure.Data;
|
|
using Infrastructure.Domain;
|
|
using Infrastructure.Events;
|
|
using Infrastructure.Extensions;
|
|
using Infrastructure.Security;
|
|
using IoT.Shared;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Logging;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
|
|
namespace Platform.Data
|
|
{
|
|
public class PlatformDbContext : EfDbContext, IDbConfig
|
|
{
|
|
private readonly IEncryptionService _encryptionService;
|
|
|
|
public PlatformDbContext(DbContextOptions options,
|
|
ILogger<EfDbContext> logger,
|
|
IHostEnvironment env,
|
|
IConfiguration cfg,
|
|
IEventPublisher publisher,
|
|
IEncryptionService encryptionService)
|
|
: base(options, logger, env, cfg, publisher)
|
|
{
|
|
this._encryptionService = encryptionService;
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
IoTSharedDbConfig.OnModelCreating(modelBuilder);
|
|
//Platform
|
|
modelBuilder.Entity<DictionaryCategory>().HasIndex(o => o.Key).IsUnique();
|
|
modelBuilder.Entity<DictionaryItem>().HasIndex(o => new { o.CategoryId, o.Value }).IsUnique();
|
|
modelBuilder.Entity<DictionaryItem>().HasOne(o => o.Category).WithMany(o => o.Items).HasForeignKey(o => o.CategoryId);
|
|
modelBuilder.Entity<Setting>().HasIndex(o => o.Name).IsUnique();
|
|
//Statistic
|
|
modelBuilder.Entity<Statistic>().HasIndex(o => o.Key).IsUnique();
|
|
//User
|
|
modelBuilder.Entity<User>().Property(o => o.UserName).IsRequired();
|
|
modelBuilder.Entity<User>().HasIndex(o => o.UserName).IsUnique();
|
|
modelBuilder.Entity<User>().HasIndex(o => o.Email).IsUnique();
|
|
modelBuilder.Entity<User>().HasIndex(o => o.PhoneNumber).IsUnique();
|
|
//OrganRole
|
|
modelBuilder.Entity<Role>().Property(o => o.Name).IsRequired();
|
|
modelBuilder.Entity<Role>().Property(o => o.Number).IsRequired();
|
|
modelBuilder.Entity<Role>().HasIndex(o => new { o.OrganId, o.Number }).IsUnique();
|
|
modelBuilder.Entity<Role>().HasOne(o => o.Organ).WithMany(o => o.Roles).HasForeignKey(o => o.OrganId).OnDelete(DeleteBehavior.Cascade);
|
|
//Permission
|
|
modelBuilder.Entity<PermissionCategory>().HasOne(o => o.AppModule).WithMany(o => o.PermissionCategories).HasForeignKey(o => o.AppModuleId).OnDelete(DeleteBehavior.Cascade);
|
|
modelBuilder.Entity<Permission>().HasOne(o => o.Category).WithMany(o => o.Permissions).HasForeignKey(o => o.CategoryId).OnDelete(DeleteBehavior.SetNull);
|
|
modelBuilder.Entity<Permission>().HasIndex(o => o.Number).IsUnique();
|
|
//OrganUserRole
|
|
modelBuilder.Entity<OrganUserRole>().HasOne(o => o.OrganUser).WithMany(o => o.UserRoles).HasForeignKey(o => o.OrganUserId);
|
|
modelBuilder.Entity<OrganUserRole>().HasOne(o => o.OrganRole).WithMany(o => o.UserRoles).HasForeignKey(o => o.OrganRoleId);
|
|
modelBuilder.Entity<OrganUserRole>().HasIndex(o => new { o.OrganUserId, o.OrganRoleId }).IsUnique();
|
|
//OrganRolePermission
|
|
modelBuilder.Entity<RolePermission>().HasOne(o => o.Role).WithMany(o => o.RolePermissions).HasForeignKey(o => o.RoleId);
|
|
modelBuilder.Entity<RolePermission>().HasOne(o => o.Permission).WithMany(o => o.RolePermissions).HasForeignKey(o => o.PermissionId);
|
|
modelBuilder.Entity<RolePermission>().HasIndex(o => new { o.RoleId, o.PermissionId }).IsUnique();
|
|
//Site
|
|
modelBuilder.Entity<Site>().Property(o => o.Name).IsRequired();
|
|
modelBuilder.Entity<Site>().HasIndex(o => o.Name).IsUnique();
|
|
//Area
|
|
modelBuilder.Entity<Area>().HasIndex(o => o.Number).IsUnique();
|
|
//Organ
|
|
modelBuilder.Entity<Organ>().HasIndex(o => o.Name).IsUnique();
|
|
modelBuilder.Entity<Organ>().HasIndex(o => o.Number).IsUnique();
|
|
modelBuilder.Entity<Organ>().HasOne(o => o.Area).WithMany(o => o.Organs).HasForeignKey(o => o.AreaId).OnDelete(DeleteBehavior.SetNull);
|
|
//Building
|
|
modelBuilder.Entity<Building>().Property(o => o.OrganId).IsRequired();
|
|
modelBuilder.Entity<Building>().HasIndex(o => new { o.OrganId, o.ParentId, o.Number }).IsUnique();
|
|
modelBuilder.Entity<Building>().HasOne(o => o.Organ).WithMany(o => o.Buildings).HasForeignKey(o => o.OrganId);
|
|
//OrganUser
|
|
modelBuilder.Entity<OrganUser>().HasOne(o => o.Organ).WithMany(o => o.OrganUsers).HasForeignKey(o => o.OrganId);
|
|
modelBuilder.Entity<OrganUser>().HasOne(o => o.User).WithMany(o => o.OrganUsers).HasForeignKey(o => o.UserId);
|
|
modelBuilder.Entity<OrganUser>().HasIndex(o => new { o.OrganId, o.UserId }).IsUnique();
|
|
//Department
|
|
modelBuilder.Entity<Department>().HasIndex(o => new { o.OrganId, o.Number }).IsUnique();
|
|
//DepartmentUser
|
|
modelBuilder.Entity<DepartmentUser>().HasOne(o => o.Department).WithMany(o => o.DepartmentUsers).HasForeignKey(o => o.DeparementId);
|
|
modelBuilder.Entity<DepartmentUser>().HasOne(o => o.OrganUser).WithMany(o => o.DepartmentUsers).HasForeignKey(o => o.OrganUserId);
|
|
modelBuilder.Entity<DepartmentUser>().HasIndex(o => new { o.DeparementId, o.OrganUserId }).IsUnique();
|
|
modelBuilder.Entity<DepartmentUser>().HasOne(o => o.Job).WithMany(o => o.DepartmentUsers).HasForeignKey(o => o.JobId).OnDelete(DeleteBehavior.SetNull);
|
|
|
|
//IoTCenter
|
|
//IoTProductCategory
|
|
modelBuilder.Entity<IoTProductCategory>().HasIndex(o => o.Number).IsUnique();
|
|
modelBuilder.Entity<IoTProduct>().HasOne(o => o.IoTProductCategory).WithMany(o => o.Products).HasForeignKey(o => o.IoTProductCategoryId).OnDelete(DeleteBehavior.SetNull);
|
|
//IoTGateway
|
|
modelBuilder.Entity<IoTGateway>().HasOne(o => o.Building).WithMany(o => o.IoTGateways).HasForeignKey(o => o.BuildingId).OnDelete(DeleteBehavior.SetNull);
|
|
//IoTCommand
|
|
modelBuilder.Entity<IoTCommand>().HasOne(o => o.Api).WithMany(o => o.IoTCommands).HasForeignKey(o => o.ApiId);
|
|
modelBuilder.Entity<IoTCommand>().HasOne(o => o.IoTDevice).WithMany(o => o.IoTCommands).HasForeignKey(o => o.DeviceId);
|
|
//IoTScene
|
|
modelBuilder.Entity<IoTScene>().HasOne(o => o.Building).WithMany(o => o.Scenes).HasForeignKey(o => o.BuildingId);
|
|
//IoTSceneIoTCommand
|
|
modelBuilder.Entity<IoTSceneIoTCommand>().HasOne(o => o.IoTScene).WithMany(o => o.IoTSceneIoTCommands).HasForeignKey(o => o.IoTSceneId);
|
|
modelBuilder.Entity<IoTSceneIoTCommand>().HasOne(o => o.IoTCommand).WithMany(o => o.IoTSceneIoTCommands).HasForeignKey(o => o.IoTCommandId);
|
|
//IoTTimer
|
|
modelBuilder.Entity<IoTTimer>().HasOne(o => o.IoTScene).WithMany(o => o.IoTTimers).HasForeignKey(o => o.IoTSceneId);
|
|
//IoTTigger
|
|
modelBuilder.Entity<IoTTigger>().HasOne(o => o.IoTScene).WithMany(o => o.IoTTiggers).HasForeignKey(o => o.IoTSceneId);
|
|
modelBuilder.Entity<IoTTigger>().HasOne(o => o.IoTData).WithMany(o => o.IoTTiggers).HasForeignKey(o => o.IoTDataId);
|
|
//LiveRecord
|
|
modelBuilder.Entity<LiveRecord>().Property(o => o.DeviceNumber).IsRequired();
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
|
|
public void Seed(DbContext db)
|
|
{
|
|
db.Set<DictionaryCategory>().Add(new DictionaryCategory
|
|
{
|
|
Key = "AreaType",
|
|
Name = "区域类型",
|
|
Items = new List<DictionaryItem>
|
|
{
|
|
new DictionaryItem{ Name="省",Value="省",Order=0},
|
|
new DictionaryItem{ Name="县",Value="县",Order=1},
|
|
new DictionaryItem{ Name="乡",Value="乡",Order=2}
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
db.Set<DictionaryCategory>().Add(new DictionaryCategory
|
|
{
|
|
Key = "OrganType",
|
|
Name = "机构类型",
|
|
Items = new List<DictionaryItem>
|
|
{
|
|
new DictionaryItem{ Name="企业",Value="企业",Order=0},
|
|
new DictionaryItem{ Name="机关",Value="机关",Order=1},
|
|
new DictionaryItem{ Name="事业单位",Value="事业单位",Order=2},
|
|
new DictionaryItem{ Name="社会团体",Value="社会团体",Order=3},
|
|
new DictionaryItem{ Name="其他组织机构",Value="其他组织机构",Order=4}
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
db.Set<DictionaryCategory>().Add(new DictionaryCategory
|
|
{
|
|
Key = "BuildingType",
|
|
Name = "建筑类型",
|
|
Items = new List<DictionaryItem>
|
|
{
|
|
new DictionaryItem{ Name="建筑",Value="建筑",Order=0},
|
|
new DictionaryItem{ Name="楼层",Value="楼层",Order=1},
|
|
new DictionaryItem{ Name="房间",Value="房间",Order=2}
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
db.Set<DictionaryCategory>().Add(new DictionaryCategory
|
|
{
|
|
Key = "DepartmentType",
|
|
Name = "部门类型",
|
|
Items = new List<DictionaryItem>
|
|
{
|
|
new DictionaryItem{ Name="行政",Value="行政",Order=0},
|
|
new DictionaryItem{ Name="党政",Value="党政",Order=1},
|
|
new DictionaryItem{ Name="其他",Value="其他",Order=2}
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
db.Set<DictionaryCategory>().Add(new DictionaryCategory
|
|
{
|
|
Key = "DepartmentUserType",
|
|
Name = "部门成员类型",
|
|
Items = new List<DictionaryItem>
|
|
{
|
|
new DictionaryItem{ Name="行政",Value="行政",Order=0},
|
|
new DictionaryItem{ Name="借调",Value="借调",Order=1},
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
db.Set<DictionaryCategory>().Add(new DictionaryCategory
|
|
{
|
|
Key = "OrganUserType",
|
|
Name = "用户类型",
|
|
Items = new List<DictionaryItem>
|
|
{
|
|
new DictionaryItem{ Name="劳动关系",Value="劳动关系",Order=0},
|
|
new DictionaryItem{ Name="劳务关系",Value="劳务关系",Order=1},
|
|
new DictionaryItem{ Name="其他",Value="其他",Order=2}
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
var order = 0;
|
|
var root = db.Set<IoTProductCategory>().Add(new IoTProductCategory
|
|
{
|
|
Name = "产品分类",
|
|
Number = "root"
|
|
}).Entity;
|
|
db.Set<IoTProductCategory>().Add(new IoTProductCategory { Order = order++, ParentId = root.Id, Number = "00", Name = "网关", Image = "/images/gateway.svg" });
|
|
db.Set<IoTProductCategory>().Add(new IoTProductCategory { Order = order++, ParentId = root.Id, Number = "10", Name = "安防", Image = "/images/safe.svg" });
|
|
db.Set<IoTProductCategory>().Add(new IoTProductCategory { Order = order++, ParentId = root.Id, Number = "20", Name = "电器", Image = "/images/socket.svg" });
|
|
db.Set<IoTProductCategory>().Add(new IoTProductCategory { Order = order++, ParentId = root.Id, Number = "30", Name = "照明", Image = "/images/light.svg" });
|
|
db.Set<IoTProductCategory>().Add(new IoTProductCategory { Order = order++, ParentId = root.Id, Number = "40", Name = "监测", Image = "/images/monitor.svg" });
|
|
db.SaveChanges();
|
|
db.Set<IoTProductCategory>().FirstOrDefault(o => o.Number == "root").Update();
|
|
db.SaveChanges();
|
|
|
|
var permissionCategoryRoot = new PermissionCategory
|
|
{
|
|
Name = "权限分类",
|
|
Number = "root"
|
|
};
|
|
db.Set<PermissionCategory>().Add(permissionCategoryRoot);
|
|
db.SaveChanges();
|
|
|
|
foreach (var item in db.Model.GetEntityTypes())
|
|
{
|
|
var module = item.ClrType.GetCustomAttributes()
|
|
.FirstOrDefault(o => typeof(ModuleAttribute).IsAssignableFrom(o.GetType()))
|
|
as ModuleAttribute;
|
|
var appModule = db.Set<AppModule>().FirstOrDefault(o => o.Number == module.Number);
|
|
if (appModule == null)
|
|
{
|
|
appModule = new AppModule
|
|
{
|
|
Name = module.Name,
|
|
Number = module.Number,
|
|
Order = module.Order
|
|
};
|
|
db.Set<AppModule>().Add(appModule);
|
|
db.SaveChanges();
|
|
}
|
|
|
|
var display = item.ClrType.GetCustomAttribute<DisplayAttribute>();
|
|
var categoryName = display.Name;
|
|
var categoryNumber = item.ClrType.Name;
|
|
var permissionCatgegory = db.Set<PermissionCategory>().FirstOrDefault(o => o.Number == categoryNumber);
|
|
if (permissionCatgegory == null)
|
|
{
|
|
permissionCatgegory = new PermissionCategory
|
|
{
|
|
AppModuleId = appModule.Id,
|
|
ParentId = permissionCategoryRoot.Id,
|
|
Name = display.Name,
|
|
Number = categoryNumber,
|
|
Order = display.GetOrder() ?? 0
|
|
};
|
|
db.Set<PermissionCategory>().Add(permissionCatgegory);
|
|
db.SaveChanges();
|
|
}
|
|
|
|
var scopeAttribute = item.ClrType.GetCustomAttribute<ScopeAttribute>();
|
|
var name = display.Name;
|
|
var number = item.ClrType.Name;
|
|
var permissionCategoryId = permissionCatgegory.Id;
|
|
if (scopeAttribute != null)
|
|
{
|
|
var scope = scopeAttribute.Scope;
|
|
//平台权限
|
|
if (scope.HasFlag(ScopeType.PlatformRead))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Platform, Name = $"查看平台{name}", Number = $"Read-Platform-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.PlatformAdd))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Platform, Name = $"添加平台{name}", Number = $"Add-Platform-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.PlatformEdit))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Platform, Name = $"修改平台{name}", Number = $"Edit-Platform-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.PlatformDelete))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Platform, Name = $"删除平台{name}", Number = $"Delete-Platform-{number}" });
|
|
}
|
|
//机构权限
|
|
if (scope.HasFlag(ScopeType.OrganRead))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Organ, Name = $"查看机构{name}", Number = $"Read-Organ-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.OrganAdd))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Organ, Name = $"添加机构{name}", Number = $"Add-Organ-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.OrganEdit))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Organ, Name = $"修改机构{name}", Number = $"Edit-Organ-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.OrganDelete))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.Organ, Name = $"删除机构{name}", Number = $"Delete-Organ-{number}" });
|
|
}
|
|
//个人权限
|
|
if (scope.HasFlag(ScopeType.UserRead))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.User, Name = $"查看个人{name}", Number = $"Read-User-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.UserAdd))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.User, Name = $"添加个人{name}", Number = $"Add-User-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.UserEdit))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.User, Name = $"修改个人{name}", Number = $"Edit-User-{number}" });
|
|
}
|
|
if (scope.HasFlag(ScopeType.UserDelete))
|
|
{
|
|
permissionCatgegory.Permissions.Add(new Permission { IsReadOnly = true, Type = PermissionType.User, Name = $"删除个人{name}", Number = $"Delete-User-{number}" });
|
|
}
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
db.Set<PermissionCategory>().ToList().FirstOrDefault(o => o.Number == "root").Update();
|
|
db.SaveChanges();
|
|
var permissionHideList = new string[] {
|
|
"Read-Platform-AppModule",
|
|
"Read-Platform-Statistic",
|
|
"Read-Platform-Department",
|
|
"Read-Platform-DepartmentUser",
|
|
"Read-Platform-OrganUserRole",
|
|
"Read-Platform-RolePermission",
|
|
"Read-Organ-Department",
|
|
"Read-Organ-DepartmentUser",
|
|
"Read-Organ-OrganUserRole",
|
|
"Read-Organ-RolePermission",
|
|
"Read-Organ-IoTScene",
|
|
"Read-Organ-IoTSceneIoTCommand",
|
|
"Read-Organ-IoTTimer",
|
|
"Read-Organ-IoTTigger",
|
|
};
|
|
foreach (var item in db.Set<Permission>().Where(o => permissionHideList.Contains(o.Number)))
|
|
{
|
|
item.Hide = true;
|
|
}
|
|
db.SaveChanges();
|
|
//初始化区域
|
|
var areaRoot = new Area
|
|
{
|
|
Name = "区域",
|
|
Number = "root",
|
|
Children = new List<Area> {
|
|
new Area{
|
|
Type = "省",
|
|
Name="吉林省",
|
|
Number="Jilin",
|
|
Children = new List<Area>
|
|
{
|
|
new Area{
|
|
Type= "市",
|
|
Name="长春市",
|
|
Number="changchun",
|
|
Children = new List<Area>
|
|
{
|
|
new Area
|
|
{
|
|
Type= "区",
|
|
Name="南关区",
|
|
Number="nanguan"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
db.Set<Area>().Add(areaRoot);
|
|
db.SaveChanges();
|
|
|
|
//初始化机构
|
|
var organRoot = new Organ
|
|
{
|
|
Name = "机构",
|
|
Number = "root",
|
|
Children = new List<Organ>
|
|
{
|
|
new Organ
|
|
{
|
|
Area = db.Set<Area>().FirstOrDefault(o => o.Number == "changchun"),
|
|
Type= "事业单位",
|
|
IsReadOnly=true,
|
|
Name="默认教育局",
|
|
Number="jiaoyuju",
|
|
Children = new List<Organ>
|
|
{
|
|
new Organ
|
|
{
|
|
Area = db.Set<Area>().FirstOrDefault(o => o.Number == "nanguan"),
|
|
Type= "事业单位",
|
|
Name="默认学校",
|
|
Number="xuexiao"
|
|
},
|
|
new Organ
|
|
{
|
|
Area = db.Set<Area>().FirstOrDefault(o => o.Number == "nanguan"),
|
|
Type= "事业单位",
|
|
Name="其他学校",
|
|
Number="qitaxuexiao"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
db.Set<Organ>().Add(organRoot);
|
|
db.SaveChanges();
|
|
|
|
//初始化建筑
|
|
var image = "/images/empty.svg";
|
|
var organId = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao").Id;
|
|
var buildingRoot = new Building
|
|
{
|
|
Image = image,
|
|
Name = "建筑",
|
|
Number = "root",
|
|
OrganId = organRoot.Id,
|
|
Children = new List<Building>
|
|
{
|
|
new Building
|
|
{
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "建筑",
|
|
Name="默认建筑",
|
|
Number="1",
|
|
Children = new List<Building> {
|
|
new Building {
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "楼层",
|
|
Name="1楼",
|
|
Number="11",
|
|
Children=new List<Building>
|
|
{
|
|
new Building{
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "房间",
|
|
Name="101室",
|
|
Number="101"
|
|
},
|
|
new Building{
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "房间",
|
|
Name="102室",
|
|
Number="102"
|
|
}
|
|
}
|
|
},
|
|
new Building {
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "楼层",
|
|
Name="2楼",
|
|
Number="12",
|
|
Children=new List<Building>
|
|
{
|
|
new Building{
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "房间",
|
|
Name="201室",
|
|
Number="201"
|
|
},
|
|
new Building{
|
|
Image= image,
|
|
Order=order++,
|
|
OrganId=organId,
|
|
Type= "房间",
|
|
Name="202室",
|
|
Number="202"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
db.Set<Building>().Add(buildingRoot);
|
|
db.SaveChanges();
|
|
|
|
//更新Left和Right编号
|
|
db.Set<Area>().FirstOrDefault(o => o.Number == "root").Update();
|
|
db.Set<Organ>().FirstOrDefault(o => o.Number == "root").Update();
|
|
db.Set<Building>().FirstOrDefault(o => o.Number == "root").Update();
|
|
db.SaveChanges();
|
|
|
|
var platformOrganId = db.Set<Organ>().FirstOrDefault(o => o.IsReadOnly).Id;
|
|
var superRole = new Role { OrganId = platformOrganId, Number = "super", Name = "超级管理员", IsReadOnly = true };
|
|
var adminRole = new Role { OrganId = platformOrganId, Number = "admin", Name = "管理员" };
|
|
var organRole = new Role { OrganId = platformOrganId, Number = "organ", Name = "机构管理员" };
|
|
|
|
//初始化角色
|
|
var skips = new string[] {
|
|
//"添加Api", "修改Api", "添加分类", "修改分类", "添加参数", "修改参数", "添加产品", "修改产品", "添加节点", "添加权限", "修改权限", "添加权限分类", "修改权限分类", "添加设备"
|
|
};
|
|
|
|
foreach (var item in db.Set<Permission>())
|
|
{
|
|
superRole.RolePermissions.Add(new RolePermission { IsReadOnly = true, Permission = item });
|
|
if (!item.Name.Contains("删除") && !skips.Contains(item.Name))
|
|
{
|
|
adminRole.RolePermissions.Add(new RolePermission { Permission = item });
|
|
if (item.Type == PermissionType.Organ)
|
|
{
|
|
organRole.RolePermissions.Add(new RolePermission { Permission = item });
|
|
}
|
|
}
|
|
}
|
|
db.Set<Role>().AddRange(superRole, adminRole, organRole);
|
|
db.SaveChanges();
|
|
|
|
var securityStam = "123456";
|
|
db.Set<User>().Add(new User
|
|
{
|
|
UserName = "super",
|
|
SecurityStamp = securityStam,
|
|
PasswordHash = _encryptionService.CreatePasswordHash("123456", securityStam),
|
|
PasswordConfirmed = true,
|
|
Email = "super@test.com",
|
|
EmailConfirmed = true,
|
|
NickName = "超级管理员",
|
|
OrganUsers = new List<OrganUser> {
|
|
new OrganUser {
|
|
IsReadOnly=true,
|
|
Type= "",
|
|
OrganId=platformOrganId,
|
|
UserRoles=new List<OrganUserRole>
|
|
{
|
|
new OrganUserRole{
|
|
IsReadOnly=true,
|
|
OrganRoleId=superRole.Id
|
|
}
|
|
}
|
|
},
|
|
new OrganUser
|
|
{
|
|
Type= "其他",
|
|
OrganId=db.Set<Organ>().FirstOrDefault(o=>o.Name=="默认学校").Id,
|
|
}
|
|
}
|
|
});
|
|
db.Set<User>().Add(new User
|
|
{
|
|
UserName = "admin",
|
|
SecurityStamp = securityStam,
|
|
PasswordHash = _encryptionService.CreatePasswordHash("123456", securityStam),
|
|
PasswordConfirmed = true,
|
|
Email = "admin@test.com",
|
|
EmailConfirmed = true,
|
|
NickName = "管理员",
|
|
OrganUsers = new List<OrganUser> {
|
|
new OrganUser {
|
|
Type= "其他",
|
|
OrganId=platformOrganId,
|
|
UserRoles=new List<OrganUserRole>
|
|
{
|
|
new OrganUserRole{ OrganRoleId=adminRole.Id}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
db.Set<User>().Add(new User
|
|
{
|
|
UserName = "organ",
|
|
SecurityStamp = securityStam,
|
|
PasswordHash = _encryptionService.CreatePasswordHash("123456", securityStam),
|
|
PasswordConfirmed = true,
|
|
Email = "organ@test.com",
|
|
EmailConfirmed = true,
|
|
NickName = "机构管理员",
|
|
OrganUsers = new List<OrganUser> {
|
|
new OrganUser {
|
|
Type= "其他",
|
|
OrganId=platformOrganId,
|
|
UserRoles=new List<OrganUserRole>
|
|
{
|
|
new OrganUserRole{ OrganRoleId=organRole.Id}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
db.SaveChanges();
|
|
//
|
|
var set = db.Set<Setting>();
|
|
|
|
set.Add(new Setting { Name = "name", Value = "物联平台", Type = SettingType.String });
|
|
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 });
|
|
set.Add(new Setting { Name = "iosAppUrl", Value = "itms-services://?action=download-manifest&url=https://iot.edusoa.com/IoTCenter/Info.plist", Type = SettingType.String });
|
|
//
|
|
var macAddress = Helper.Instance.GetMacAddress();
|
|
set.Add(new Setting { Name = "sn", Value = macAddress, Type = SettingType.String });
|
|
set.Add(new Setting { Name = "id", Value = macAddress.Md5(), Type = SettingType.String });
|
|
set.Add(new Setting { Name = "code", Value = "根据id生成的授权码", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "delay", Value = "500", Type = SettingType.String });
|
|
db.SaveChanges();
|
|
//
|
|
set.Add(new Setting { Name = "AccessTokenTimeout", Value = "1440", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "RefreshTokenTimeout", Value = "518400", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "MaxFailedAccessAttemptsBeforeLockout", Value = "5", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "DefaultAccountLockoutMinutes", Value = "10", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "CaptchaSeconds", Value = "60", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "RegisterDisabled", Value = "false", Type = SettingType.String });
|
|
//
|
|
set.Add(new Setting { Name = "email:host", Value = "nbaxp.com", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "email:port", Value = "25", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "email:user", Value = "admin@nbaxp.com", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "email:password", Value = "123456", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "sms", Value = "false", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "sms:url", Value = "https://api.netease.im/sms/sendcode.action", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "sms:key", Value = "123456", Type = SettingType.String });
|
|
set.Add(new Setting { Name = "sms:secret", Value = "123456", Type = SettingType.String });
|
|
db.SaveChanges();
|
|
}
|
|
}
|
|
} |