using Easy; using Easy.DDD.Domain; using Easy.DDD.Domain.Repositories; using IdentityServer.DDD.Domain.Entites; using IdentityServer.DDD.Shared.IServices; using IdentityServer.DDD.Shared.ValueObjects; using Microsoft.EntityFrameworkCore; namespace IdentityServer.DDD.Domain.Service; public class IdentityRoleManager : DomainService, IIdentityRoleManager { protected IRepository IdentityRoleRepository => LazyServiceProvider.LazyGetService>(); protected virtual async Task ValidateNameAsync(string name, Guid? expectedId = null) { When.Is(string.IsNullOrEmpty(name), "角色名称不能为空"); var role = await IdentityRoleRepository.FirstOrDefaultAsync(o => o.RoleName == name); When.Is(role != null && role.Id != expectedId, "重复的角色名称: " + name); } public async Task ChangeNameAsync(IdentityRole role, string roleName) { await ValidateNameAsync(roleName, role.Id); role.SetName(roleName); } public async Task CreateAsync(string roleName, Guid tenantId) { await ValidateNameAsync(roleName); return new IdentityRole(GuidGenerator.Create(), roleName, tenantId); } }