Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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());
        }