using AutoMapper; using Easy; using Easy.DDD.Application; using Easy.DDD.Domain.Repositories; using Easy.Extensions; using Easy.Result; using Identity.Api.Clean.Contracts.Inputs; using Identity.Api.Clean.Contracts.Models; using Identity.Api.Clean.Domain.Entites; using Identity.Api.Clean.Shared.IServices; using Identity.Api.Clean.Shared.ValueObjects; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; namespace Identity.Api.Clean.Application; public class IdentityRoleAppService : ApiService { protected IRepository IdentityRoleRepository { get; } protected IRepository PermissionGrantRepository { get; } protected IPermissionGrantManager PermissionGrantManager { get; } protected IMapper Mapper { get; } protected IIdentityRoleManager IdentityRoleManager { get; } public IdentityRoleAppService( IRepository tenantRepository, IIdentityRoleManager identityRoleManager, IPermissionGrantManager permissionGrantManager, IMapper mapper) { IdentityRoleRepository = tenantRepository; IdentityRoleManager = identityRoleManager; PermissionGrantManager = permissionGrantManager; Mapper = mapper; } /// /// 创建角色 /// public virtual async Task> CreateAsync(IdentityRoleCreateInput input) { var identityRole = await IdentityRoleManager.CreateAsync(input.RoleName, input.TenantId); Mapper.Map(input, identityRole); await IdentityRoleRepository.AddAsync(identityRole, true); var value = Mapper.Map(identityRole); return ApiResult.ValueSuccess(value); } public virtual async Task DeleteAsync(Guid id) { var tenant = await IdentityRoleRepository.FirstOrDefaultAsync(o => o.Id == id); if (tenant != null) { await IdentityRoleRepository.RemoveAsync(tenant, true); } return ApiResult.Success(); } public virtual async Task> UpdateAsync(Guid id, IdentityRoleUpdateInput input) { var tenant = await IdentityRoleRepository.FirstOrDefaultAsync(o => o.Id == id); When.Is(tenant == null, "此租户不存在"); await IdentityRoleManager.ChangeNameAsync(tenant, input.RoleName); Mapper.Map(input, tenant); await IdentityRoleRepository.UpdateAsync(tenant, true); var value = Mapper.Map(tenant); return ApiResult.ValueSuccess(value); } /// /// 获得角色 /// public virtual async Task> GetAsync(Guid id) { var tenant = await IdentityRoleRepository.FirstOrDefaultAsync(o => o.Id == id); var value = Mapper.Map(tenant); return ApiResult.ValueSuccess(value); } public virtual async Task> GetListAsync(GetIdentityRolesInput input) { var count = await IdentityRoleRepository.LongCountAsync(); var tenants = await IdentityRoleRepository.Set.ApplyPaged(input).ToListAsync(); var pageCount = AppData.PageCount(count, input.PageSize); var valuePaged = Mapper.Map>(tenants); return ApiResult.ValuesPagedSuccess(pageCount, valuePaged); } /// /// 获得许可信息 /// public virtual async Task> GetPermissionGrantsAsync(Guid id) { return ApiResult.Values(await PermissionGrantManager.GetPermissionGrantsAsync("R", id)); } }