You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.2 KiB
37 lines
1.2 KiB
using Easy.AuthorityManagement.Clean.Shared.IServices;
|
|
using Easy.DDD.Domain;
|
|
using Easy.Snowflakes;
|
|
|
|
namespace Easy.AuthorityManagement.Clean.Domain.Services;
|
|
|
|
public class TenantManager : DomainService, ITenantManager
|
|
{
|
|
protected IRepository<Tenant> TenantRepository { get; }
|
|
protected ISnowflakeIdGenerator SnowflakeIdGenerator => LazyServiceProvider.LazyGetService<ISnowflakeIdGenerator>();
|
|
|
|
public TenantManager(IRepository<Tenant> tenantRepository)
|
|
{
|
|
TenantRepository = tenantRepository;
|
|
}
|
|
public virtual async Task<Tenant> CreateAsync(string name)
|
|
{
|
|
await ValidateNameAsync(name);
|
|
return new Tenant(SnowflakeIdGenerator.Create(), name);
|
|
}
|
|
|
|
public virtual async Task ChangeNameAsync(Tenant tenant, string name)
|
|
{
|
|
await ValidateNameAsync(name, tenant.Id);
|
|
|
|
tenant.SetName(name);
|
|
}
|
|
|
|
protected virtual async Task ValidateNameAsync(string name, long? expectedId = null)
|
|
{
|
|
When.Is(string.IsNullOrEmpty(name), "租户名称不能为空");
|
|
|
|
var tenant = await TenantRepository.Set.Where(o => o.TenantName == name).FirstOrDefaultAsync();
|
|
|
|
When.Is(tenant != null && tenant.Id != expectedId, "重复的租户名称: " + name);
|
|
}
|
|
}
|
|
|