using Easy.AuthorityManagement.Clean.Shared.IServices; using Easy.DDD.Domain; using Easy.Snowflakes; namespace Easy.AuthorityManagement.Clean.Domain.Services; public class IdentityRoleManager : DomainService, IIdentityRoleManager { protected IRepository IdentityRoleRepository => LazyServiceProvider.LazyGetService>(); private ISnowflakeIdGenerator SnowflakeIdGenerator => LazyServiceProvider.LazyGetService(); protected virtual async Task ValidateNameAsync(string name, long? expectedId = null) { When.Is(string.IsNullOrEmpty(name), "角色名称不能为空"); var role = await IdentityRoleRepository.Set.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, long tenantId) { await ValidateNameAsync(roleName); return new IdentityRole(SnowflakeIdGenerator.Create(), roleName, tenantId); } }