From b7972bd36377f91863cee9ace10db7656823f089 Mon Sep 17 00:00:00 2001 From: feijie Date: Fri, 21 Mar 2025 20:05:32 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20refactor(appsettings):=20=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=86=97=E4=BD=99=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=92=8CQuartz=E9=85=8D=E7=BD=AE=EF=BC=8C=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 删除appsettings.json和appsettings.Development.json中无用的日志文件配置和Quartz配置信息。 重命名数据初始化类,并简化数据初始化逻辑,仅保留用户数据初始化。 --- .../appsettings.Development.json | 16 - .../appsettings.json | 18 - .../DataSeeder/ProjectNameDataSeeder.cs | 226 ++++++++ .../ProjectNameDataSeederDataSeeder.cs | 503 ------------------ 4 files changed, 226 insertions(+), 537 deletions(-) create mode 100644 aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeeder.cs delete mode 100644 aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeederDataSeeder.cs diff --git a/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.Development.json b/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.Development.json index 07d801a94..89e46c01d 100644 --- a/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.Development.json +++ b/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.Development.json @@ -92,22 +92,6 @@ "BaseUrl": "http://127.0.0.1:30000" } }, - "Quartz": { - "UsePersistentStore": false, - "Properties": { - "quartz.jobStore.dataSource": "tkm", - "quartz.jobStore.type": "Quartz.Impl.AdoJobStore.JobStoreTX,Quartz", - "quartz.dataSource.tkm.connectionStringName": "Default", - "quartz.jobStore.driverDelegateType": "Quartz.Impl.AdoJobStore.MySQLDelegate,Quartz", - "quartz.dataSource.tkm.connectionString": "Default": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456", - "quartz.dataSource.tkm.provider": "DatabaseManagementNameConnector", -// "quartz.jobStore.driverDelegateType": "Quartz.Impl.AdoJobStore.PostgreSQLDelegate,Quartz", -// "quartz.dataSource.tkm.connectionString": "Default": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456", -// "quartz.dataSource.tkm.provider": "Npgsql", - "quartz.jobStore.clustered": "true", - "quartz.serializer.type": "json" - } - }, "Redis": { "IsEnabled": true, "Configuration": "127.0.0.1,defaultDatabase=15", diff --git a/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.json b/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.json index ff9beea3e..6ba75de37 100644 --- a/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.json +++ b/aspnet-core/templates/aio/content/host/PackageName.CompanyName.ProjectName.AIO.Host/appsettings.json @@ -39,24 +39,6 @@ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" } }, - { - "Name": "File", - "Args": { - "path": "Logs/Debug-.log", - "restrictedToMinimumLevel": "Debug", - "rollingInterval": "Day", - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" - } - }, - { - "Name": "File", - "Args": { - "path": "Logs/Info-.log", - "restrictedToMinimumLevel": "Information", - "rollingInterval": "Day", - "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}" - } - }, { "Name": "File", "Args": { diff --git a/aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeeder.cs b/aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeeder.cs new file mode 100644 index 000000000..d322894fc --- /dev/null +++ b/aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeeder.cs @@ -0,0 +1,226 @@ +using Microsoft.Extensions.Logging; +using PackageName.CompanyName.ProjectName.Users; +using System; +using System.Linq; +using System.Threading.Tasks; +using Volo.Abp.Data; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; +using Volo.Abp.Identity; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; +using IdentityRole = Volo.Abp.Identity.IdentityRole; +using IdentityUser = Volo.Abp.Identity.IdentityUser; + +namespace PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore.DataSeeder +{ + public class ProjectNameDataSeeder : IProjectNameDataSeeder, ITransientDependency + { + private readonly ICurrentTenant _currentTenant; + private readonly IGuidGenerator _guidGenerator; + private readonly ILogger _logger; + private readonly IRepository _userRepository; + private readonly IdentityUserManager _identityUserManager; + private readonly IdentityRoleManager _identityRoleManager; + private readonly IUnitOfWorkManager _unitOfWorkManager; + + /// + /// 构造函数 + /// + public ProjectNameDataSeeder( + ICurrentTenant currentTenant, + IGuidGenerator guidGenerator, + ILogger logger, + IRepository userRepository, + IdentityUserManager identityUserManager, + IdentityRoleManager identityRoleManager, + IUnitOfWorkManager unitOfWorkManager) + { + _currentTenant = currentTenant; + _guidGenerator = guidGenerator; + _logger = logger; + _userRepository = userRepository; + _identityUserManager = identityUserManager; + _identityRoleManager = identityRoleManager; + _unitOfWorkManager = unitOfWorkManager; + } + + /// + /// 初始化数据 + /// + /// 数据种子上下文 + /// 任务 + public async Task SeedAsync(DataSeedContext context) + { + using (_currentTenant.Change(context.TenantId)) + { + _logger.LogInformation("开始初始化数据..."); + + // 初始化角色 + using (var uow = _unitOfWorkManager.Begin(requiresNew: true)) + { + await SeedRolesAsync(); + await uow.CompleteAsync(); + } + + // 初始化用户数据 + using (var uow = _unitOfWorkManager.Begin(requiresNew: true)) + { + await SeedUsersAsync(); + await uow.CompleteAsync(); + } + + _logger.LogInformation("数据初始化完成"); + } + } + + /// + /// 初始化角色数据 + /// + private async Task SeedRolesAsync() + { + // 超级管理员 + await CreateRoleIfNotExistsAsync( + "超级管理员", + "系统超级管理员,拥有所有权限"); + } + + /// + /// 创建角色(如果不存在) + /// + private async Task CreateRoleIfNotExistsAsync(string roleName, string description) + { + if (await _identityRoleManager.FindByNameAsync(roleName) == null) + { + var role = new IdentityRole( + _guidGenerator.Create(), + roleName, + _currentTenant.Id) + { + IsStatic = true, + IsPublic = true + }; + + await _identityRoleManager.CreateAsync(role); + + _logger.LogInformation($"创建角色:{roleName}"); + } + } + + /// + /// 初始化用户数据 + /// + private async Task SeedUsersAsync() + { + + // 查找超级管理员角色 + var superAdminRole = await _identityRoleManager.FindByNameAsync("超级管理员"); + if (superAdminRole == null) + { + _logger.LogError("未找到超级管理员角色,无法为用户分配角色"); + return; + } + + // 创建用户数据(使用固定用户名避免生成问题) + await CreateUserIfNotExistsAsync("user1", "user1", "超级管理员"); + await CreateUserIfNotExistsAsync("user2", "user2", "超级管理员"); + await CreateUserIfNotExistsAsync("user3", "user3", "超级管理员"); + await CreateUserIfNotExistsAsync("user4", "user4", "超级管理员"); + } + + /// + /// 创建用户(如果不存在) + /// + private async Task CreateUserIfNotExistsAsync( + string name, + string userName, + string roles) + { + // 检查用户是否已存在 + var existingUser = await _userRepository.FindAsync(u => u.NickName == name); + if (existingUser != null) + { + _logger.LogInformation($"用户[{name}]已存在,跳过创建"); + return; + } + + var identityUser = await _identityUserManager.FindByNameAsync(userName); + if (identityUser == null) + { + // 创建Identity用户 + identityUser = new IdentityUser( + _guidGenerator.Create(), + userName, + $"{userName}@example.com", + _currentTenant.Id) + { + Name = name, + Surname = "" + }; + + // 设置默认密码 123456 + var identityResult = await _identityUserManager.CreateAsync(identityUser, "123456"); + if (!identityResult.Succeeded) + { + _logger.LogError($"创建Identity用户[{name}]失败: {string.Join(", ", identityResult.Errors.Select(e => e.Description))}"); + return; + } + + // 分配角色 + if (!string.IsNullOrWhiteSpace(roles)) + { + var roleNames = roles.Split(',', StringSplitOptions.RemoveEmptyEntries); + foreach (var roleName in roleNames) + { + var trimmedRoleName = roleName.Trim(); + var role = await _identityRoleManager.FindByNameAsync(trimmedRoleName); + if (role != null) + { + var roleResult = await _identityUserManager.AddToRoleAsync(identityUser, trimmedRoleName); + if (!roleResult.Succeeded) + { + _logger.LogWarning($"为用户[{name}]分配角色[{trimmedRoleName}]失败: {string.Join(", ", roleResult.Errors.Select(e => e.Description))}"); + } + } + else + { + _logger.LogWarning($"角色[{trimmedRoleName}]不存在,无法为用户[{name}]分配"); + } + } + } + + // 创建系统用户 + var user = new User( + _guidGenerator.Create(), + name, + identityUser.Id); + + // 保存用户 + await _userRepository.InsertAsync(user); + + _logger.LogInformation($"创建用户:{name},用户名:{userName}"); + } + else + { + _logger.LogInformation($"Identity用户[{userName}]已存在,检查是否需要创建业务用户"); + + // 检查是否需要创建业务用户 + var businessUser = await _userRepository.FindAsync(u => u.IdentityUserId == identityUser.Id); + if (businessUser == null) + { + // 创建系统用户 + var user = new User( + _guidGenerator.Create(), + name, + identityUser.Id); + + // 保存用户 + await _userRepository.InsertAsync(user); + + _logger.LogInformation($"为已存在的Identity用户创建业务用户:{name}"); + } + } + } + } +} diff --git a/aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeederDataSeeder.cs b/aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeederDataSeeder.cs deleted file mode 100644 index 57276f6be..000000000 --- a/aspnet-core/templates/aio/content/migrations/PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore/DataSeeder/ProjectNameDataSeederDataSeeder.cs +++ /dev/null @@ -1,503 +0,0 @@ -using Microsoft.Extensions.Logging; -using System; -using System.Linq; -using System.Threading.Tasks; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.Guids; -using Volo.Abp.Identity; -using Volo.Abp.MultiTenancy; -using Volo.Abp.Uow; -using IdentityRole = Volo.Abp.Identity.IdentityRole; -using IdentityUser = Volo.Abp.Identity.IdentityUser; - -namespace PackageName.CompanyName.ProjectName.AIO.EntityFrameworkCore.DataSeeder -{ - public class ProjectNameDataSeederDataSeeder : IProjectNameDataSeeder, ITransientDependency - { - private readonly ICurrentTenant _currentTenant; - private readonly IGuidGenerator _guidGenerator; - private readonly ILogger _logger; - private readonly IRepository _orgRepository; - private readonly IRepository _workUnitRepository; - private readonly IRepository _userRepository; - private readonly IdentityUserManager _identityUserManager; - private readonly IdentityRoleManager _identityRoleManager; - private readonly IUnitOfWorkManager _unitOfWorkManager; - - /// - /// 构造函数 - /// - public ProjectNameDataSeeder( - ICurrentTenant currentTenant, - IGuidGenerator guidGenerator, - ILogger logger, - IRepository orgRepository, - IRepository workUnitRepository, - IRepository userRepository, - IdentityUserManager identityUserManager, - IdentityRoleManager identityRoleManager, - IUnitOfWorkManager unitOfWorkManager) - { - _currentTenant = currentTenant; - _guidGenerator = guidGenerator; - _logger = logger; - _orgRepository = orgRepository; - _workUnitRepository = workUnitRepository; - _userRepository = userRepository; - _identityUserManager = identityUserManager; - _identityRoleManager = identityRoleManager; - _unitOfWorkManager = unitOfWorkManager; - } - - /// - /// 初始化数据 - /// - /// 数据种子上下文 - /// 任务 - public async Task SeedAsync(DataSeedContext context) - { - using (_currentTenant.Change(context.TenantId)) - { - _logger.LogInformation("开始初始化巡检数据..."); - - // 初始化角色 - using (var uow = _unitOfWorkManager.Begin(requiresNew: true)) - { - await SeedRolesAsync(); - await uow.CompleteAsync(); - } - - // 初始化单位数据 - using (var uow = _unitOfWorkManager.Begin(requiresNew: true)) - { - await SeedWorkUnitsAsync(); - await uow.CompleteAsync(); - } - - // 初始化组织数据 - using (var uow = _unitOfWorkManager.Begin(requiresNew: true)) - { - await SeedOrgsAsync(); - await uow.CompleteAsync(); - } - - // 初始化用户数据 - using (var uow = _unitOfWorkManager.Begin(requiresNew: true)) - { - await SeedUsersAsync(); - await uow.CompleteAsync(); - } - - _logger.LogInformation("巡检数据初始化完成"); - } - } - - /// - /// 初始化角色数据 - /// - private async Task SeedRolesAsync() - { - // 超级管理员 - await CreateRoleIfNotExistsAsync( - "超级管理员", - "系统超级管理员,拥有所有权限"); - - // 区委办公室-督查室管理员 - await CreateRoleIfNotExistsAsync( - "区委办公室-督查室管理员", - "区委办公室督查室管理员"); - - // 责任领导秘书 - await CreateRoleIfNotExistsAsync( - "责任领导秘书", - "负责协助责任领导进行工作"); - - // 责任单位管理员 - await CreateRoleIfNotExistsAsync( - "责任单位管理员", - "负责管理责任单位的信息"); - - // 责任单位落实人员 - await CreateRoleIfNotExistsAsync( - "责任单位落实人员", - "负责执行责任单位的任务"); - - // 责任单位分管领导 - await CreateRoleIfNotExistsAsync( - "责任单位分管领导", - "负责管理责任单位的部分工作"); - - // 责任单位党组书记 - await CreateRoleIfNotExistsAsync( - "责任单位党组书记", - "负责责任单位的党组工作"); - } - - /// - /// 创建角色(如果不存在) - /// - private async Task CreateRoleIfNotExistsAsync(string roleName, string description) - { - if (await _identityRoleManager.FindByNameAsync(roleName) == null) - { - var role = new IdentityRole( - _guidGenerator.Create(), - roleName, - _currentTenant.Id) - { - IsStatic = true, - IsPublic = true - }; - - await _identityRoleManager.CreateAsync(role); - - _logger.LogInformation($"创建角色:{roleName}"); - } - } - - /// - /// 初始化单位数据 - /// - private async Task SeedWorkUnitsAsync() - { - // 创建永川区 - var yongchuanDistrict = await CreateWorkUnitIfNotExistsAsync( - "永川区", - "001", - "001", - "永川区"); - - // 创建区政府 - var districtGovernment = await CreateWorkUnitIfNotExistsAsync( - "区政府", - "002", - "001.002", - "永川区政府", - yongchuanDistrict.Id); - - // 创建区委办公室 - var districtCommitteeOffice = await CreateWorkUnitIfNotExistsAsync( - "区委办公室", - "003", - "001.003", - "永川区委办公室", - yongchuanDistrict.Id); - - // 创建督查室 - await CreateWorkUnitIfNotExistsAsync( - "督查室", - "004", - "001.003.004", - "区委办公室督查室", - districtCommitteeOffice.Id); - - // 创建区委扫黑办 - await CreateWorkUnitIfNotExistsAsync( - "区委扫黑办", - "005", - "001.005", - "永川区委扫黑办", - yongchuanDistrict.Id); - - // 创建区体育局 - await CreateWorkUnitIfNotExistsAsync( - "区体育局", - "006", - "001.006", - "永川区体育局", - yongchuanDistrict.Id); - - // 创建区统计局 - await CreateWorkUnitIfNotExistsAsync( - "区统计局", - "007", - "001.007", - "永川区统计局", - yongchuanDistrict.Id); - - // 创建区信访办 - await CreateWorkUnitIfNotExistsAsync( - "区信访办", - "008", - "001.008", - "永川区信访办", - yongchuanDistrict.Id); - - // 创建区医保局 - await CreateWorkUnitIfNotExistsAsync( - "区医保局", - "009", - "001.009", - "永川区医保局", - yongchuanDistrict.Id); - - // 创建区大数据发展局 - await CreateWorkUnitIfNotExistsAsync( - "区大数据发展局", - "010", - "001.010", - "永川区大数据发展局", - yongchuanDistrict.Id); - - // 创建区机关事务局 - await CreateWorkUnitIfNotExistsAsync( - "区机关事务局", - "011", - "001.011", - "永川区机关事务局", - yongchuanDistrict.Id); - - // 创建区广播电视局 - await CreateWorkUnitIfNotExistsAsync( - "区广播电视局", - "012", - "001.012", - "永川区广播电视局", - yongchuanDistrict.Id); - - // 创建区中新项目管理局 - await CreateWorkUnitIfNotExistsAsync( - "区中新项目管理局", - "013", - "001.013", - "永川区中新项目管理局", - yongchuanDistrict.Id); - - // 创建镇街 - await CreateWorkUnitIfNotExistsAsync( - "镇街", - "014", - "001.014", - "永川区镇街", - yongchuanDistrict.Id); - } - - /// - /// 创建单位(如果不存在) - /// - private async Task CreateWorkUnitIfNotExistsAsync( - string name, - string code, - string treeCode, - string description, - Guid? parentId = null) - { - var workUnit = await _workUnitRepository.FindAsync(w => w.Name == name); - - if (workUnit == null) - { - workUnit = new WorkUnit( - _guidGenerator.Create(), - code, - treeCode, - name, - description) - { - ParentId = parentId - }; - - await _workUnitRepository.InsertAsync(workUnit); - - _logger.LogInformation($"创建单位:{name}"); - } - - return workUnit; - } - - /// - /// 初始化组织数据 - /// - private async Task SeedOrgsAsync() - { - // 创建区委办公室-督查室 - var supervisionOffice = await CreateOrgIfNotExistsAsync( - "区委办公室-督查室", - "001", - "001", - "区委办公室督查室"); - } - - /// - /// 创建组织(如果不存在) - /// - private async Task CreateOrgIfNotExistsAsync( - string name, - string code, - string treeCode, - string description, - Guid? parentId = null) - { - var org = await _orgRepository.FindAsync(o => o.Name == name); - - if (org == null) - { - org = new Org( - _guidGenerator.Create(), - code, - treeCode, - name, - description) - { - ParentId = parentId - }; - - await _orgRepository.InsertAsync(org); - - _logger.LogInformation($"创建组织:{name}"); - } - - return org; - } - - /// - /// 初始化用户数据 - /// - private async Task SeedUsersAsync() - { - // 获取所需单位 - var supervisionOffice = await _workUnitRepository.FindAsync(w => w.Name == "督查室"); - if (supervisionOffice == null) - { - _logger.LogError("未找到督查室单位,无法创建用户"); - return; - } - - // 获取所需组织 - var supervisionOrg = await _orgRepository.FindAsync(o => o.Name == "区委办公室-督查室"); - if (supervisionOrg == null) - { - _logger.LogError("未找到区委办公室-督查室组织,无法创建用户"); - return; - } - - // 查找超级管理员角色 - var superAdminRole = await _identityRoleManager.FindByNameAsync("超级管理员"); - if (superAdminRole == null) - { - _logger.LogError("未找到超级管理员角色,无法为用户分配角色"); - return; - } - - // 创建用户数据(使用固定用户名避免生成问题) - await CreateUserIfNotExistsAsync("李达康", "lidk001", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员"); - await CreateUserIfNotExistsAsync("高育良", "gyl002", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员"); - await CreateUserIfNotExistsAsync("祁同伟", "qtw003", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员"); - await CreateUserIfNotExistsAsync("侯亮平", "hlp004", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员"); - await CreateUserIfNotExistsAsync("赵瑞龙", "zrl005", GenderType.Female, supervisionOffice.Id, supervisionOrg.Id, "超级管理员"); - await CreateUserIfNotExistsAsync("宋梦平", "smp006", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员, 部门领导"); - await CreateUserIfNotExistsAsync("李太亮", "ltl007", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员, 部门领导"); - await CreateUserIfNotExistsAsync("高峰", "gf008", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员, 部门领导"); - await CreateUserIfNotExistsAsync("朱丽平", "zlp009", GenderType.Female, supervisionOffice.Id, supervisionOrg.Id, "超级管理员, 部门领导"); - await CreateUserIfNotExistsAsync("安欣", "ax010", GenderType.Male, supervisionOffice.Id, supervisionOrg.Id, "超级管理员"); - } - - /// - /// 创建用户(如果不存在) - /// - private async Task CreateUserIfNotExistsAsync( - string name, - string userName, - GenderType gender, - Guid workUnitId, - Guid orgId, - string roles) - { - // 检查用户是否已存在 - var existingUser = await _userRepository.FindAsync(u => u.NickName == name); - if (existingUser != null) - { - _logger.LogInformation($"用户[{name}]已存在,跳过创建"); - return; - } - - var identityUser = await _identityUserManager.FindByNameAsync(userName); - if (identityUser == null) - { - // 创建Identity用户 - identityUser = new IdentityUser( - _guidGenerator.Create(), - userName, - $"{userName}@example.com", - _currentTenant.Id) - { - Name = name, - Surname = "" - }; - - // 设置默认密码 123456 - var identityResult = await _identityUserManager.CreateAsync(identityUser, "123456"); - if (!identityResult.Succeeded) - { - _logger.LogError($"创建Identity用户[{name}]失败: {string.Join(", ", identityResult.Errors.Select(e => e.Description))}"); - return; - } - - // 分配角色 - if (!string.IsNullOrWhiteSpace(roles)) - { - var roleNames = roles.Split(',', StringSplitOptions.RemoveEmptyEntries); - foreach (var roleName in roleNames) - { - var trimmedRoleName = roleName.Trim(); - var role = await _identityRoleManager.FindByNameAsync(trimmedRoleName); - if (role != null) - { - var roleResult = await _identityUserManager.AddToRoleAsync(identityUser, trimmedRoleName); - if (!roleResult.Succeeded) - { - _logger.LogWarning($"为用户[{name}]分配角色[{trimmedRoleName}]失败: {string.Join(", ", roleResult.Errors.Select(e => e.Description))}"); - } - } - else - { - _logger.LogWarning($"角色[{trimmedRoleName}]不存在,无法为用户[{name}]分配"); - } - } - } - - // 创建系统用户 - var user = new User( - _guidGenerator.Create(), - name, - workUnitId, - identityUser.Id, - gender) - { - OrgId = orgId - }; - - // 保存用户 - await _userRepository.InsertAsync(user); - - _logger.LogInformation($"创建用户:{name},用户名:{userName}"); - } - else - { - _logger.LogInformation($"Identity用户[{userName}]已存在,检查是否需要创建业务用户"); - - // 检查是否需要创建业务用户 - var businessUser = await _userRepository.FindAsync(u => u.IdentityUserId == identityUser.Id); - if (businessUser == null) - { - // 创建系统用户 - var user = new User( - _guidGenerator.Create(), - name, - workUnitId, - identityUser.Id, - gender) - { - OrgId = orgId - }; - - // 保存用户 - await _userRepository.InsertAsync(user); - - _logger.LogInformation($"为已存在的Identity用户创建业务用户:{name}"); - } - } - } - } -}