public AuthStrategyDto NormalAuthStrategy(int employeeId) { var result = new AuthStrategyDto(); var userRoleIds = _relevanceBusiness.Query(p => p.FirstId == employeeId && p.Identifiers == PowerIdentifiers.UserByRole).Select(p => p.SecondId); if (userRoleIds.Count() == 0) { return(result); } var roleIds = _roleBusiness.Query(p => userRoleIds.Contains(p.Id) && p.Status == NomalStatus.Valid).Select(p => p.Id); if (userRoleIds.Count() == 0) { return(result); } //先拉取角色对应的模块和元素 var relevanceIds = _relevanceBusiness.Query(p => roleIds.Contains(p.FirstId)); var moduleIds = relevanceIds.Where(p => p.Identifiers == PowerIdentifiers.RoleByModule).Select(p => p.SecondId); if (moduleIds.Count() == 0) { return(result); } List <KeyValuePair <string, OrderBy> > order = new List <KeyValuePair <string, OrderBy> >() { new KeyValuePair <string, OrderBy>("Level", OrderBy.Asc), new KeyValuePair <string, OrderBy>("DisplayOrder", OrderBy.Asc) }; var modules = _moduleBusiness.Query(p => moduleIds.Contains(p.Id) && p.Status == NomalStatus.Valid, p => p, order); result.Modules = modules.Select(p => new PowerModuleDto() { Id = p.Id, Name = p.Name, Code = p.Code, Level = p.Level, Pid = p.Pid, Url = p.Url, IconName = p.IconName }).GenerateTree(p => p.Id, p => p.Pid).ToList(); //模块元素 var elementIds = relevanceIds.Where(p => p.Identifiers == PowerIdentifiers.RoleByElement).Select(p => p.SecondId); var elements = _elementBusiness.Query(p => elementIds.Contains(p.Id) && p.IsSystem == 0 && p.Status == NomalStatus.Valid); result.Elements = modules.Select(p => new PowerModuleElementDto() { Id = p.Id, Code = p.Code, Name = p.Name, Elements = elements.Where(p1 => p1.ModuleId == p.Id).OrderBy(p1 => p1.DisplayOrder).ToList() }).ToList(); return(result); }
public object QueryModulesByTree([FromForm] ModulesDisplayMode mode) { var lsMoudle = _moduleBusiness.Query(p => p.Status == NomalStatus.Valid, p => new { p.Id, p.Name, p.Pid, p.DisplayOrder }); switch (mode) { case ModulesDisplayMode.AddAll: lsMoudle.Add(new { Id = 0, Name = "全部", Pid = 0, DisplayOrder = -99999 }); break; case ModulesDisplayMode.AddRoot: lsMoudle.Add(new { Id = 0, Name = "根节点", Pid = 0, DisplayOrder = -99999 }); break; } return(lsMoudle.OrderBy(p => p.DisplayOrder)); }
public Result AddOrEditRole(PowerRole model) { var result = CheckRole(model); if (!result.Succeed) { return(result); } model.Status = NomalStatus.Valid; try { using (TransactionScope ts = new TransactionScope()) { //新增 if (model.Id <= 0) { _roleBusiness.Add(model); } //先删除角色对应的模块和模块元素 _relevanceBusiness.Delete(p => p.FirstId == model.Id); //模块数据去重 List <int> lsDistinctModule = model.Elements.Select(t => t.ModuleId).Distinct().ToList(); if (lsDistinctModule.Count() == 0) { return(Result.Fail("未获取到录入的数据")); } //获取 模块数据 var dbModule = _moduleBusiness.Query(p => p.Status == NomalStatus.Valid); //多对多关系集中映射表 var lsRelevance = new List <PowerRelevance>(); //保存对应的模块 var lsModule = new List <PowerModule>(); //循环并拿去 模块的所有父节点 foreach (var item in lsDistinctModule) { var nodeModule = GetFatherList(dbModule, item); lsModule.AddRange(nodeModule); } //拿到所有模块 去重 List <int> distinctModule = lsModule.Select(t => t.Id).Distinct().ToList(); foreach (var item in distinctModule) { lsRelevance.Add(new PowerRelevance() { Id = 0, FirstId = model.Id, SecondId = item, Identifiers = PowerIdentifiers.RoleByModule, Remarks = PowerIdentifiers.RoleByModule.GetDescription() }); } if (lsDistinctModule.Count() == 0) { return(Result.Fail("未获取到录入的数据")); } //角色对应的模块元素 foreach (var item in model.Elements) { lsRelevance.Add(new PowerRelevance() { Id = 0, FirstId = model.Id, SecondId = item.Id, Identifiers = PowerIdentifiers.RoleByElement, Remarks = PowerIdentifiers.RoleByElement.GetDescription() }); } _roleBusiness.Update(model); _relevanceBusiness.AddRange(lsRelevance); ts.Complete(); return(Result.Success()); } } catch (Exception ex) { return(Result.Fail("操作失败:" + ex.Message)); } }