using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using Znyc.Recruitment.Admin.Commons.Mapping;
using Znyc.Recruitment.Admin.Commons.Services;
using Znyc.Recruitment.Admin.Security.Dtos;
using Znyc.Recruitment.Admin.Security.Entitys;
using Znyc.Recruitment.Admin.Security.IRepositories;
using Znyc.Recruitment.Admin.Security.IServices;
namespace Znyc.Recruitment.Admin.Security.Services
{
///
///
public class RoleAuthorizeService : BaseService,
IRoleAuthorizeService
{
private readonly IRoleAuthorizeRepository _repository;
private readonly IMenuRepository menuRepository;
private readonly ISystemTypeRepository systemTypeRepository;
///
///
///
///
///
///
public RoleAuthorizeService(IRoleAuthorizeRepository repository, IMenuRepository _menuRepository,
ISystemTypeRepository _systemTypeRepository) : base(repository)
{
_repository = repository;
menuRepository = _menuRepository;
systemTypeRepository = _systemTypeRepository;
}
///
/// 根据角色和项目类型查询权限
///
/// 角色Id
///
///
public IEnumerable GetListRoleAuthorizeByRoleId(string roleIds, string itemType)
{
IEnumerable list = _repository.GetListWhere(string.Format("ItemType in({0}) and ObjectId in ({1}) and ObjectType=1",
itemType, roleIds));
return list;
}
///
/// 获取功能菜单适用于Vue Tree树形
///
///
public async Task> GetAllFunctionTree()
{
string where = " 1=1";
List reslist = new List();
IEnumerable listSystemType = await systemTypeRepository.GetListWhereAsync(where);
foreach (SystemTypeEntity systemType in listSystemType)
{
ModuleFunctionOutputDto menuTreeTableOutputDto = new ModuleFunctionOutputDto
{
Id = systemType.Id,
FullName = systemType.FullName,
FunctionTag = 0,
IsShow = true
};
IEnumerable elist = await menuRepository.GetListWhereAsync(" SystemTypeId='" + systemType.Id + "'");
if (elist.Count() > 0)
{
List list = elist.OrderBy(t => t.SortCode).ToList();
menuTreeTableOutputDto.Children = GetSubMenus(list, 0).ToList();
}
reslist.Add(menuTreeTableOutputDto);
}
return reslist;
}
///
/// 保存角色授权
///
/// 角色Id
/// 角色功能模块
/// 角色可访问数据
///
/// 执行成功返回true,否则为false。
public async Task SaveRoleAuthorize(long roleId, List roleAuthorizesList,
List roleDataList,
IDbTransaction trans = null)
{
return await _repository.SaveRoleAuthorize(roleId, roleAuthorizesList, roleDataList);
}
///
/// 获取子菜单,递归调用
///
///
/// 父级Id
///
private List GetSubMenus(List data, long ParentId)
{
List list = new List();
List ChilList = data.FindAll(t => t.ParentId == ParentId);
foreach (MenuEntity entity in ChilList)
{
ModuleFunctionOutputDto menuTreeTableOutputDto = new ModuleFunctionOutputDto
{
Id = entity.Id,
FullName = entity.FullName,
IsShow = false
};
if (entity.MenuType == "F")
{
menuTreeTableOutputDto.FunctionTag = 2;
}
else
{
menuTreeTableOutputDto.FunctionTag = 1;
}
menuTreeTableOutputDto.Children = GetSubMenus(data, entity.Id).MapTo();
list.Add(menuTreeTableOutputDto);
}
return list;
}
}
}