using GxPress.Repository.Interface.SystemRoleMenus;
using GxPress.Service.Interface.Role;
using GxPress.Repository.Interface.SystemRole;
using GxPress.Repository.Interface.Menus;
using System.Threading.Tasks;
using GxPress.Request.Role;
using System.Collections.Generic;
using System.Linq;
using System.Transactions;
using AutoMapper;
using GxPress.Request.Menu;
namespace GxPress.Service.Implement.Role
{
public class RoleService : IRoleService
{
private readonly ISystemRoleMenusRepository systemRoleMenusRepository;
private readonly IMenusRepository menusRepository;
private readonly ISystemRoleRepository systemRoleRepository;
private readonly IMapper _mapper;
public RoleService(ISystemRoleMenusRepository systemRoleMenusRepository, IMenusRepository menusRepository, ISystemRoleRepository systemRoleRepository, IMapper _mapper)
{
this.systemRoleRepository = systemRoleRepository;
this.systemRoleMenusRepository = systemRoleMenusRepository;
this.menusRepository = menusRepository;
this._mapper = _mapper;
}
///
/// 添加权限菜单关联
///
///
///
public async Task InsertSystemRoleMenusAsync(SystemRoleMenusInRequest models)
{
return await systemRoleMenusRepository.InsertAsync(models);
}
///
/// 添加权限
///
///
///
public async Task InsertSystemRoleAsync(Entity.SystemRole.SystemRole model)
{
return await systemRoleRepository.InsertAsync(model) > 0;
}
///
/// 修改权限
///
///
///
public async Task UpdateSystemRoleAsync(Entity.SystemRole.SystemRole model)
{
return await systemRoleRepository.UpdateAsync(model);
}
///
/// 删除权限
///
///
///
public async Task DeleteSystemRoleAsync(int id)
{
return await systemRoleRepository.DeleteAsync(id);
}
///
/// 添加菜单
///
///
///
public async Task InsertMenusAsync(Entity.Menus.Menus model)
{
return await menusRepository.InsertAsync(model) > 0;
}
///
/// 添加菜单
///
///
///
public async Task InsertMenusAsync(List models)
{
try
{
using (var transactionScope = new TransactionScope())
{
foreach (var item in models)
{
var menuEntity = new Entity.Menus.Menus()
{
Icon = item.Icon,
Name = item.Name,
ParentId = item.ParentId,
Path = item.Path,
Title = item.Title
};
var id = await menusRepository.InsertAsync(menuEntity);
if (item.Children == null)
continue;
foreach (var menu in item.Children)
{
menuEntity = new Entity.Menus.Menus()
{
Icon = item.Icon,
Name = item.Name,
ParentId = id,
Path = item.Path,
Title = item.Title
};
await menusRepository.InsertAsync(menuEntity);
}
}
transactionScope.Complete();
}
}
catch (System.Exception ex)
{
throw new Common.Exceptions.BusinessException(ex.Message);
}
return true;
}
///
/// 修改菜单
///
///
///
public async Task UpdateMenusAsync(Entity.Menus.Menus model)
{
return await menusRepository.UpdateAsync(model);
}
///
/// 删除菜单
///
///
///
public async Task DeleteMenusAsync(int id)
{
return await menusRepository.DeleteAsync(id);
}
///
/// 根据权限ID获取菜单
///
///
///
public async Task> GetMenusAllAsync(int roleId)
{
//获取
var models = await systemRoleMenusRepository.GetAllAsync(roleId);
return await menusRepository.GetAllAsync(models.Select(n => n.Id).ToList());
}
///
/// 获取所有菜单
///
///
///
public async Task> GetMenusAllAsync()
{
return await menusRepository.GetAllAsync();
}
}
}