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 TenantRepository { get; } protected ITenantManager TenantDomainService { get; } protected IMapper Mapper { get; } public TenantAppService( IRepository tenantRepository, ITenantManager tenantDomainService, IMapper mapper) { TenantRepository = tenantRepository; TenantDomainService = tenantDomainService; Mapper = mapper; } public virtual async Task> GetAsync(long id) { var tenant = await TenantRepository.Set.FirstOrDefaultAsync(o => o.Id == id); var value = Mapper.Map(tenant); return ApiResult.ValueSuccess(value); } public virtual async Task> 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>(tenants); return ApiResult.ValuesPagedSuccess(paged, valuesPaged); } public virtual async Task> CreateAsync(TenantCreateInput input) { var tenant = await TenantDomainService.CreateAsync(input.TenantName); Mapper.Map(input, tenant); await TenantRepository.Set.SingleInsertAsync(tenant); var value = Mapper.Map(tenant); return ApiResult.ValueSuccess(value); } public virtual async Task> 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(tenant); return ApiResult.ValueSuccess(value); } public virtual async Task DeleteAsync(long id) { var tenant = await TenantRepository.Set.FirstOrDefaultAsync(o => o.Id == id); if (tenant != null) { await TenantRepository.Set.SingleDeleteAsync(tenant); } return ApiResult.Success(); } }