using System.Collections.Generic; using System.Data; using System.Linq; using System.Threading.Tasks; using Znyc.Cloudcar.Admin.Commons.Mapping; using Znyc.Cloudcar.Admin.Commons.Services; using Znyc.Cloudcar.Admin.Security.Dtos; using Znyc.Cloudcar.Admin.Security.Entitys; using Znyc.Cloudcar.Admin.Security.IRepositories; using Znyc.Cloudcar.Admin.Security.IServices; namespace Znyc.Cloudcar.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; } } }