GetAddOrRemoveEmployeeElementRequest(EmployeeElementRequestDto employeeElementRequestDto) { //查询该角色所有模块元素 var allExitsEelments = await _employeeElementAppService.GetElementByEmployeeIdAsync(employeeElementRequestDto.EmployeeId); var allExitsElementIds = allExitsEelments.Select(m => m.ElementId).ToList(); var addMenuIds = employeeElementRequestDto.ElementIds.Except(allExitsElementIds); var delMenuIds = allExitsElementIds.Except(employeeElementRequestDto.ElementIds); var addDto = addMenuIds.Select(m => new EmployeeElementRequestDto { Id = Guid.NewGuid().ToString(), EmployeeId = employeeElementRequestDto.EmployeeId, ElementId = m, RoleId = employeeElementRequestDto.RoleId, CreateUserId = employeeElementRequestDto.CreateUserId, CreateUserName = employeeElementRequestDto.CreateUserName, }); var delDto = delMenuIds.Select(m => new EmployeeElementRequestDto { ElementId = m, EmployeeId = employeeElementRequestDto.EmployeeId, RoleId = employeeElementRequestDto.RoleId, IsDelete = true, ModifyUserId = employeeElementRequestDto.ModifyUserId, ModifyUserName = employeeElementRequestDto.ModifyUserName, ModifyDate = DateTime.Now }); return(addDto.ToList(), delDto.ToList()); }
private async Task <IList <PowerSelectViewResponse> > GetEmployeeModuleElementAsync(string employeeId) { var empElementDtos = await _employeeElementAppService.GetElementByEmployeeIdAsync(employeeId); var empElementIds = empElementDtos.Select(o => o.ElementId).ToList(); //1.查询该人员所在机构下所拥有的元素权限 var relationOrgEmpViews = await _relationOrganizationEmployeeAppService.GetOrgIdsByEmployeeIds(new List <string> { employeeId }); var orgIds = relationOrgEmpViews.Select(r => r.OrganizationId).ToList(); var orgElementViews = await _organizationElementAppService.GetElementByOrganizationIdsAsync(orgIds); var orgElementIds = orgElementViews.Select(o => o.ElementId).ToList(); //2.查询该人员所在角色下所拥有的的元素权限 var relationRoleEmpViews = await _relationEmployeeRoleAppService.GetRoleIdsByEmployeeIds(new List <string> { employeeId }); var roleIds = relationRoleEmpViews.Select(r => r.RoleId).ToList(); var roleElementViews = await _roleElementAppService.GetElementByRoleIdsAsync(roleIds); var roleElementIds = roleElementViews.Select(r => r.ElementId).ToList(); //3.移除个人元素中与机构、角色重复的 empElementIds.RemoveAll(e => orgElementIds.Contains(e)); empElementIds.RemoveAll(e => roleElementIds.Contains(e)); //4.继承自机构的元素权限,标记为禁止取消 var powerSelectOrg = orgElementIds.Select(o => new PowerSelectViewResponse { Id = o, Disabled = true }); //5.继承自角色的元素权限,标记为禁止取消 var powerSelectRole = roleElementIds.Select(r => new PowerSelectViewResponse { Id = r, Disabled = true }); var powerSelectEmp = empElementIds.Select(e => new PowerSelectViewResponse { Id = e }); return(powerSelectOrg.Concat(powerSelectRole).Concat(powerSelectEmp).ToList()); }