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.
151 lines
4.7 KiB
151 lines
4.7 KiB
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Shentun.Peis.Permissions;
|
|
using Shentun.Peis.Rooms;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Volo.Abp;
|
|
using Volo.Abp.Application.Dtos;
|
|
using Volo.Abp.Application.Services;
|
|
using Volo.Abp.Data;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Abp.Identity;
|
|
using Volo.Abp.ObjectExtending;
|
|
|
|
namespace Shentun.Peis.Roles
|
|
{
|
|
/// <summary>
|
|
/// 角色管理
|
|
/// </summary>
|
|
[Authorize]
|
|
public class MyRoleAppService : ApplicationService
|
|
{
|
|
|
|
private readonly IdentityRoleManager _roleManager;
|
|
private readonly IIdentityRoleRepository _roleRepository;
|
|
|
|
public MyRoleAppService(
|
|
IdentityRoleManager roleManager,
|
|
IIdentityRoleRepository roleRepository)
|
|
{
|
|
_roleManager = roleManager;
|
|
_roleRepository = roleRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
[Authorize(PeisPermissions.SystemSettings.Default)]
|
|
[HttpPost("api/app/MyRole/GetAllList")]
|
|
public async Task<ListResultDto<IdentityRoleDto>> GetAllListAsync()
|
|
{
|
|
var list = await _roleRepository.GetListAsync();
|
|
return new ListResultDto<IdentityRoleDto>(
|
|
ObjectMapper.Map<List<IdentityRole>, List<IdentityRoleDto>>(list)
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[Authorize(PeisPermissions.SystemSettings.Default)]
|
|
[HttpPost("api/app/MyRole/Create")]
|
|
public async Task<IdentityRoleDto> CreateAsync(IdentityRoleCreateDto input)
|
|
{
|
|
var role = new IdentityRole(
|
|
GuidGenerator.Create(),
|
|
input.Name,
|
|
CurrentTenant.Id
|
|
)
|
|
{
|
|
IsDefault = input.IsDefault,
|
|
IsPublic = input.IsPublic
|
|
};
|
|
input.MapExtraPropertiesTo(role);
|
|
|
|
(await _roleManager.CreateAsync(role)).CheckErrors();
|
|
await CurrentUnitOfWork.SaveChangesAsync();
|
|
|
|
return ObjectMapper.Map<IdentityRole, IdentityRoleDto>(role);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 修改
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[Authorize(PeisPermissions.SystemSettings.Default)]
|
|
[HttpPost("api/app/MyRole/Update")]
|
|
public async Task<IdentityRoleDto> UpdateAsync(UpdateRoleInputDto input)
|
|
{
|
|
var role = await _roleManager.GetByIdAsync(input.Id);
|
|
|
|
role.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
|
|
|
|
(await _roleManager.SetRoleNameAsync(role, input.Name)).CheckErrors();
|
|
|
|
role.IsDefault = input.IsDefault;
|
|
role.IsPublic = input.IsPublic;
|
|
|
|
input.MapExtraPropertiesTo(role);
|
|
|
|
(await _roleManager.UpdateAsync(role)).CheckErrors();
|
|
await CurrentUnitOfWork.SaveChangesAsync();
|
|
|
|
return ObjectMapper.Map<IdentityRole, IdentityRoleDto>(role);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[Authorize(PeisPermissions.SystemSettings.Default)]
|
|
[HttpPost("api/app/MyRole/Delete")]
|
|
public async Task DeleteAsync(RoleIdInputDto input)
|
|
{
|
|
var role = await _roleManager.FindByIdAsync(input.Id.ToString());
|
|
if (role == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
(await _roleManager.DeleteAsync(role)).CheckErrors();
|
|
}
|
|
|
|
|
|
|
|
|
|
[Authorize(PeisPermissions.SystemSettings.Default)]
|
|
[RemoteService(false)]
|
|
public async Task<IdentityRoleDto> GetAsync(Guid id)
|
|
{
|
|
return ObjectMapper.Map<IdentityRole, IdentityRoleDto>(
|
|
await _roleManager.GetByIdAsync(id)
|
|
);
|
|
}
|
|
[Authorize(PeisPermissions.SystemSettings.Default)]
|
|
[RemoteService(false)]
|
|
public async Task<PagedResultDto<IdentityRoleDto>> GetListAsync(GetIdentityRolesInput input)
|
|
{
|
|
var list = await _roleRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter);
|
|
var totalCount = await _roleRepository.GetCountAsync(input.Filter);
|
|
|
|
return new PagedResultDto<IdentityRoleDto>(
|
|
totalCount,
|
|
ObjectMapper.Map<List<IdentityRole>, List<IdentityRoleDto>>(list)
|
|
);
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|