fengling-platform/Fengling.Platform.Infrastructure/SeedData.cs
2026-02-21 15:05:37 +08:00

76 lines
2.5 KiB
C#

using Fengling.Platform.Domain.AggregatesModel.RoleAggregate;
using Fengling.Platform.Domain.AggregatesModel.TenantAggregate;
using Fengling.Platform.Domain.AggregatesModel.UserAggregate;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
namespace Fengling.Platform.Infrastructure;
public static class SeedData
{
public static async Task<Tenant> InitializeAsync(this IServiceScope scope)
{
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = scope.ServiceProvider.GetRequiredService<RoleManager<ApplicationRole>>();
var context= scope.ServiceProvider.GetRequiredService<PlatformDbContext>();
await context.Database.EnsureCreatedAsync();
var adminTenant = context.Tenants
.FirstOrDefault(t => t.TenantCode == "Administrator");
if (adminTenant != null)
{
return adminTenant;
}
adminTenant = new Tenant
{
TenantCode = "Administrator",
Name = "超级系统",
ContactName = "",
ContactEmail = "",
Status = TenantStatus.Active,
CreatedAt = DateTime.UtcNow
};
await context.Tenants.AddAsync(adminTenant);
var role = await roleManager.Roles
.OfType<ApplicationRole>()
.AsQueryable()
.FirstOrDefaultAsync(x=>x.Name == "admin" && x.TenantId ==null);
if (role == null)
{
role = new ApplicationRole()
{
CreatedTime = DateTimeOffset.UtcNow,
TenantId = null,
Name = "admin", Description = "系统管理员",
DisplayName = "系统管理员",
IsSystem = true,
};
await roleManager.CreateAsync(role);
}
var user = await userManager.FindByNameAsync("admin");
if (user != null)
{
user = new ApplicationUser()
{
UserName = "admin",
RealName = "系统超级管理员",
Email = "samsu9194@163.com",
TenantInfo = new TenantInfo(adminTenant),
PhoneNumber = "15921072307"
};
await userManager.AddToRoleAsync(user, "admin");
await userManager.CreateAsync(user, "admin");
}
await context.SaveChangesAsync();
return adminTenant;
}
}