using AmtScanner.Api.Models;
using Microsoft.EntityFrameworkCore;
namespace AmtScanner.Api.Data;
///
/// 数据库种子数据
///
public static class DbSeeder
{
///
/// 初始化种子数据
///
public static async Task SeedAsync(AppDbContext context)
{
await SeedRolesAsync(context);
await SeedUsersAsync(context);
await SeedMenusAsync(context);
await SeedRoleMenusAsync(context);
}
private static async Task SeedRolesAsync(AppDbContext context)
{
if (await context.Roles.AnyAsync()) return;
var roles = new List
{
new() { RoleName = "超级管理员", RoleCode = "R_SUPER", Description = "拥有所有权限", Enabled = true },
new() { RoleName = "管理员", RoleCode = "R_ADMIN", Description = "系统管理员", Enabled = true },
new() { RoleName = "普通用户", RoleCode = "R_USER", Description = "普通用户", Enabled = true }
};
context.Roles.AddRange(roles);
await context.SaveChangesAsync();
Console.WriteLine("✅ 默认角色已创建");
}
private static async Task SeedUsersAsync(AppDbContext context)
{
if (await context.Users.AnyAsync()) return;
// 创建默认用户
var users = new List
{
new()
{
UserName = "Super",
PasswordHash = BCrypt.Net.BCrypt.HashPassword("123456"),
NickName = "超级管理员",
Email = "super@example.com",
Status = "1",
Gender = "1"
},
new()
{
UserName = "Admin",
PasswordHash = BCrypt.Net.BCrypt.HashPassword("123456"),
NickName = "管理员",
Email = "admin@example.com",
Status = "1",
Gender = "1"
},
new()
{
UserName = "User",
PasswordHash = BCrypt.Net.BCrypt.HashPassword("123456"),
NickName = "普通用户",
Email = "user@example.com",
Status = "1",
Gender = "2"
}
};
context.Users.AddRange(users);
await context.SaveChangesAsync();
// 分配角色
var superRole = await context.Roles.FirstAsync(r => r.RoleCode == "R_SUPER");
var adminRole = await context.Roles.FirstAsync(r => r.RoleCode == "R_ADMIN");
var userRole = await context.Roles.FirstAsync(r => r.RoleCode == "R_USER");
var superUser = await context.Users.FirstAsync(u => u.UserName == "Super");
var adminUser = await context.Users.FirstAsync(u => u.UserName == "Admin");
var normalUser = await context.Users.FirstAsync(u => u.UserName == "User");
var userRoles = new List
{
new() { UserId = superUser.Id, RoleId = superRole.Id },
new() { UserId = adminUser.Id, RoleId = adminRole.Id },
new() { UserId = normalUser.Id, RoleId = userRole.Id }
};
context.UserRoles.AddRange(userRoles);
await context.SaveChangesAsync();
Console.WriteLine("✅ 默认用户已创建: Super/Admin/User (密码: 123456)");
}
private static async Task SeedMenusAsync(AppDbContext context)
{
if (await context.Menus.AnyAsync())
{
return;
}
var menus = new List