|
|
|
@ -28,53 +28,74 @@ namespace Platform
|
|
|
|
|
public void OnModelCreating(ModelBuilder modelBuilder)
|
|
|
|
|
{
|
|
|
|
|
IoTSharedDbConfig.OnModelCreating(modelBuilder);
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
//Admin
|
|
|
|
|
//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<OrganRole>().Property(o => o.Name).IsRequired();
|
|
|
|
|
modelBuilder.Entity<OrganRole>().HasIndex(o => new { o.OrganId, o.Name }).IsUnique();
|
|
|
|
|
modelBuilder.Entity<OrganRole>().Property(o => o.Number).IsRequired();
|
|
|
|
|
modelBuilder.Entity<OrganRole>().HasIndex(o => new { o.OrganId, o.Number }).IsUnique();
|
|
|
|
|
modelBuilder.Entity<OrganRole>().HasOne(o => o.Organ).WithMany(o => o.Roles).HasForeignKey(o => o.OrganId).OnDelete(DeleteBehavior.Cascade);
|
|
|
|
|
//Permission
|
|
|
|
|
modelBuilder.Entity<Permission>().Property(o => o.Name).IsRequired();
|
|
|
|
|
modelBuilder.Entity<Permission>().Property(o => o.Number).IsRequired();
|
|
|
|
|
modelBuilder.Entity<Permission>().HasIndex(o => o.Number).IsUnique();
|
|
|
|
|
modelBuilder.Entity<Permission>().HasOne(o => o.Category).WithMany(o => o.Permissions).HasForeignKey(o => o.CategoryId).OnDelete(DeleteBehavior.SetNull);
|
|
|
|
|
//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<OrganRolePermission>().HasOne(o => o.Role).WithMany(o => o.RolePermissions).HasForeignKey(o => o.RoleId);
|
|
|
|
|
modelBuilder.Entity<OrganRolePermission>().HasOne(o => o.Permission).WithMany(o => o.RolePermissions).HasForeignKey(o => o.PermissionId);
|
|
|
|
|
modelBuilder.Entity<OrganRolePermission>().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();
|
|
|
|
|
modelBuilder.Entity<Area>().HasIndex(o => o.Number).IsUnique(); ;
|
|
|
|
|
modelBuilder.Entity<Department>().HasIndex(o => new { o.OrganId, o.Number }).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);
|
|
|
|
|
modelBuilder.Entity<Building>().HasIndex(o => o.Number).IsUnique();
|
|
|
|
|
modelBuilder.Entity<Building>().HasOne(o => o.Organ).WithMany(o => o.Buildings).HasForeignKey(o => o.OrganId).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();
|
|
|
|
|
|
|
|
|
|
//物联网
|
|
|
|
|
//IoTCenter
|
|
|
|
|
//IoTCommand
|
|
|
|
|
modelBuilder.Entity<IoTCommand>().HasOne(o => o.Api).WithMany().HasForeignKey(o => o.ApiId);
|
|
|
|
|
//OrganIoTScene
|
|
|
|
|
modelBuilder.Entity<OrganIoTScene>().HasOne(o => o.Organ).WithMany(o => o.OrganScenes).HasForeignKey(o => o.OrganId);
|
|
|
|
|
//OrganIoTSceneIoTCommand
|
|
|
|
|
modelBuilder.Entity<OrganIoTSceneIoTCommand>().HasOne(o => o.OrganScene).WithMany(o => o.OrganSceneCommands).HasForeignKey(o => o.OrganSceneId);
|
|
|
|
|
modelBuilder.Entity<OrganIoTSceneIoTCommand>().HasOne(o => o.Command).WithMany().HasForeignKey(o => o.CommandId);
|
|
|
|
|
//OrganIoTSceneTimer
|
|
|
|
|
modelBuilder.Entity<OrganIoTSceneTimer>().HasOne(o => o.OrganScene).WithMany(o => o.OrganSceneTimers).HasForeignKey(o => o.OrganSceneId);
|
|
|
|
|
//OrganIoTSceneTigger
|
|
|
|
|
modelBuilder.Entity<OrganIoTSceneTigger>().HasOne(o => o.OrganScene).WithMany(o => o.OrganSceneTiggers).HasForeignKey(o => o.OrganSceneId);
|
|
|
|
|
modelBuilder.Entity<OrganIoTSceneTigger>().HasOne(o => o.Data).WithMany().HasForeignKey(o => o.DataId);
|
|
|
|
|
|
|
|
|
|
//IoTGatewayCategoryIoTGateway
|
|
|
|
|
modelBuilder.Entity<IoTGatewayCategoryIoTGateway>().HasOne(o => o.Node).WithMany(o => o.CategoryNodes).HasForeignKey(o => o.NodeId);
|
|
|
|
|
modelBuilder.Entity<IoTGatewayCategoryIoTGateway>().HasOne(o => o.Category).WithMany(o => o.CategoryNodes).HasForeignKey(o => o.CategoryId);
|
|
|
|
|
modelBuilder.Entity<IoTGatewayCategoryIoTGateway>().HasIndex(o => new { o.CategoryId, o.NodeId }).IsUnique();
|
|
|
|
|
modelBuilder.Entity<LiveRecord>().Property(o => o.DeviceNumber).IsRequired();
|
|
|
|
|
|
|
|
|
|
//BuildingIoTGateway
|
|
|
|
|
modelBuilder.Entity<BuildingIoTGateway>().HasOne(o => o.Building).WithMany(o => o.BuildingIoTGateways).HasForeignKey(o => o.BuildingId);
|
|
|
|
|
modelBuilder.Entity<BuildingIoTGateway>().HasOne(o => o.IoTGateway).WithMany().HasForeignKey(o => o.IoTGatewayId);
|
|
|
|
|
modelBuilder.Entity<BuildingIoTGateway>().HasIndex(o => new { o.BuildingId, o.IoTGatewayId }).IsUnique();
|
|
|
|
|
//LiveRecord
|
|
|
|
|
modelBuilder.Entity<LiveRecord>().Property(o => o.DeviceNumber).IsRequired();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Seed(DbContext db)
|
|
|
|
@ -259,34 +280,36 @@ namespace Platform
|
|
|
|
|
db.SaveChanges();
|
|
|
|
|
|
|
|
|
|
//初始化建筑
|
|
|
|
|
var organId = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao").Id;
|
|
|
|
|
var buildingRoot = new Building
|
|
|
|
|
{
|
|
|
|
|
Name = "建筑",
|
|
|
|
|
Number = "root",
|
|
|
|
|
OrganId = organRoot.Id,
|
|
|
|
|
Children = new List<Building>
|
|
|
|
|
{
|
|
|
|
|
new Building
|
|
|
|
|
{
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Building,
|
|
|
|
|
Name="默认建筑",
|
|
|
|
|
Number="1",
|
|
|
|
|
Children = new List<Building> {
|
|
|
|
|
new Building {
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Layer,
|
|
|
|
|
Name="1楼",
|
|
|
|
|
Number="11",
|
|
|
|
|
Children=new List<Building>
|
|
|
|
|
{
|
|
|
|
|
new Building{
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Room,
|
|
|
|
|
Name="101室",
|
|
|
|
|
Number="101"
|
|
|
|
|
},
|
|
|
|
|
new Building{
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Room,
|
|
|
|
|
Name="102室",
|
|
|
|
|
Number="102"
|
|
|
|
@ -294,20 +317,20 @@ namespace Platform
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
new Building {
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Layer,
|
|
|
|
|
Name="2楼",
|
|
|
|
|
Number="12",
|
|
|
|
|
Children=new List<Building>
|
|
|
|
|
{
|
|
|
|
|
new Building{
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Room,
|
|
|
|
|
Name="201室",
|
|
|
|
|
Number="201"
|
|
|
|
|
},
|
|
|
|
|
new Building{
|
|
|
|
|
Organ= db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao"),
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
Type= BuildingType.Room,
|
|
|
|
|
Name="202室",
|
|
|
|
|
Number="202"
|
|
|
|
@ -327,10 +350,10 @@ namespace Platform
|
|
|
|
|
db.Set<Building>().FirstOrDefault(o => o.Number == "root").Update();
|
|
|
|
|
db.SaveChanges();
|
|
|
|
|
|
|
|
|
|
var organId = db.Set<Organ>().FirstOrDefault(o => o.IsReadOnly).Id;
|
|
|
|
|
var superRole = new OrganRole { OrganId = organId, Name = "超级管理员", IsReadOnly = true };
|
|
|
|
|
var adminRole = new OrganRole { OrganId = organId, Name = "管理员" };
|
|
|
|
|
var organRole = new OrganRole { OrganId = organId, Name = "机构管理员" };
|
|
|
|
|
var defaultOrganId = db.Set<Organ>().FirstOrDefault(o => o.IsReadOnly).Id;
|
|
|
|
|
var superRole = new OrganRole { OrganId = defaultOrganId,Number="super", Name = "超级管理员", IsReadOnly = true };
|
|
|
|
|
var adminRole = new OrganRole { OrganId = defaultOrganId, Number = "admin", Name = "管理员" };
|
|
|
|
|
var organRole = new OrganRole { OrganId = defaultOrganId, Number = "organ", Name = "机构管理员" };
|
|
|
|
|
|
|
|
|
|
//初始化角色
|
|
|
|
|
var skips = new string[] {
|
|
|
|
@ -366,7 +389,7 @@ namespace Platform
|
|
|
|
|
new OrganUser {
|
|
|
|
|
IsReadOnly=true,
|
|
|
|
|
Type= OrganUserType.Type1,
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
OrganId=defaultOrganId,
|
|
|
|
|
UserRoles=new List<OrganUserRole>
|
|
|
|
|
{
|
|
|
|
|
new OrganUserRole{
|
|
|
|
@ -394,7 +417,7 @@ namespace Platform
|
|
|
|
|
OrganUsers = new List<OrganUser> {
|
|
|
|
|
new OrganUser {
|
|
|
|
|
Type= OrganUserType.Type1,
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
OrganId=defaultOrganId,
|
|
|
|
|
UserRoles=new List<OrganUserRole>
|
|
|
|
|
{
|
|
|
|
|
new OrganUserRole{ OrganRoleId=adminRole.Id}
|
|
|
|
@ -414,7 +437,7 @@ namespace Platform
|
|
|
|
|
OrganUsers = new List<OrganUser> {
|
|
|
|
|
new OrganUser {
|
|
|
|
|
Type= OrganUserType.Type1,
|
|
|
|
|
OrganId=organId,
|
|
|
|
|
OrganId=defaultOrganId,
|
|
|
|
|
UserRoles=new List<OrganUserRole>
|
|
|
|
|
{
|
|
|
|
|
new OrganUserRole{ OrganRoleId=organRole.Id}
|
|
|
|
|