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.
86 lines
2.6 KiB
86 lines
2.6 KiB
2 years ago
|
using Easy.AuthorityManagement.Clean.Contracts.Inputs;
|
||
|
using Easy.AuthorityManagement.Clean.Contracts.Models;
|
||
|
using Easy.AuthorityManagement.Clean.Shared.IServices;
|
||
|
|
||
|
namespace Easy.AuthorityManagement.Clean.Application;
|
||
|
|
||
|
public class TenantAppService : ApiService
|
||
|
{
|
||
|
protected IRepository<Tenant> TenantRepository { get; }
|
||
|
protected ITenantManager TenantDomainService { get; }
|
||
|
protected IMapper Mapper { get; }
|
||
|
|
||
|
public TenantAppService(
|
||
|
IRepository<Tenant> tenantRepository,
|
||
|
ITenantManager tenantDomainService,
|
||
|
IMapper mapper)
|
||
|
{
|
||
|
TenantRepository = tenantRepository;
|
||
|
TenantDomainService = tenantDomainService;
|
||
|
Mapper = mapper;
|
||
|
}
|
||
|
|
||
|
public virtual async Task<ApiResultValue<TenantModel>> GetAsync(long id)
|
||
|
{
|
||
|
var tenant = await TenantRepository.Set.FirstOrDefaultAsync(o => o.Id == id);
|
||
|
|
||
|
var value = Mapper.Map<TenantModel>(tenant);
|
||
|
|
||
|
return ApiResult.ValueSuccess(value);
|
||
|
}
|
||
|
|
||
|
public virtual async Task<ApiResultPaged<TenantModel>> GetListAsync(GetTenantsInput input)
|
||
|
{
|
||
|
var tenants = await TenantRepository.Set
|
||
|
.ApplyPaging(input.PageIndex, input.PageSize)
|
||
|
.ToListAsync();
|
||
|
|
||
|
var paged = Paged.Create(await TenantRepository.Set.CountAsync(), input);
|
||
|
|
||
|
var valuesPaged = Mapper.Map<List<TenantModel>>(tenants);
|
||
|
|
||
|
return ApiResult.ValuesPagedSuccess(paged, valuesPaged);
|
||
|
}
|
||
|
|
||
|
public virtual async Task<ApiResultValue<TenantModel>> CreateAsync(TenantCreateInput input)
|
||
|
{
|
||
|
var tenant = await TenantDomainService.CreateAsync(input.TenantName);
|
||
|
|
||
|
Mapper.Map(input, tenant);
|
||
|
|
||
|
await TenantRepository.Set.SingleInsertAsync(tenant);
|
||
|
|
||
|
var value = Mapper.Map<TenantModel>(tenant);
|
||
|
|
||
|
return ApiResult.ValueSuccess(value);
|
||
|
}
|
||
|
|
||
|
public virtual async Task<ApiResultValue<TenantModel>> UpdateAsync(long id, TenantUpdateInput input)
|
||
|
{
|
||
|
var tenant = await TenantRepository.Set.FirstOrDefaultAsync(o => o.Id == id);
|
||
|
|
||
|
When.Is(tenant == null, "此租户不存在");
|
||
|
|
||
|
await TenantDomainService.ChangeNameAsync(tenant, input.TenantName);
|
||
|
|
||
|
Mapper.Map(input, tenant);
|
||
|
|
||
|
await TenantRepository.Set.SingleUpdateAsync(tenant);
|
||
|
|
||
|
var value = Mapper.Map<TenantModel>(tenant);
|
||
|
|
||
|
return ApiResult.ValueSuccess(value);
|
||
|
}
|
||
|
|
||
|
public virtual async Task<ApiResult> DeleteAsync(long id)
|
||
|
{
|
||
|
var tenant = await TenantRepository.Set.FirstOrDefaultAsync(o => o.Id == id);
|
||
|
if (tenant != null)
|
||
|
{
|
||
|
await TenantRepository.Set.SingleDeleteAsync(tenant);
|
||
|
}
|
||
|
|
||
|
return ApiResult.Success();
|
||
|
}
|
||
|
}
|