/// <summary> /// 角色列表(分页) /// </summary> /// <param name="request"></param> /// <returns></returns> public PagingResult <GetPagingRolesResponse> GetPagingRoles(GetPagingRolesRequest request) { PagingResult <GetPagingRolesResponse> result = null; List <int> orgIds = null; var totalCount = 0; var startIndex = (request.PageIndex - 1) * request.PageSize + 1; var endIndex = request.PageIndex * request.PageSize; //默认获取所有角色(不跟机构关联) if (request.OrgId == 0) { using (var conn = DapperHelper.CreateConnection()) { var multi = conn.QueryMultiple(@"--获取所有角色并分页 SELECT rs.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY r.created_time DESC ) AS RowNum , r.id, r.name, r.description, r.organization_id AS OrgId , r.created_by AS CreatedBy , r.created_time AS CreatedTime , r.last_updated_by AS LastUpdatedBy , r.last_updated_time AS LastUpdatedTime , org.name AS OrgName FROM dbo.t_rights_role AS r LEFT JOIN dbo.t_rights_organization AS org ON r.organization_id= org.id ) AS rs WHERE rs.RowNum BETWEEN @Start AND @End; --获取所有角色total SELECT COUNT(DISTINCT r.id) FROM dbo.t_rights_role AS r;", new { @Start = startIndex, @End = endIndex }); var query1 = multi.Read <GetPagingRolesResponse>(); var query2 = multi.Read <int>(); totalCount = query2.First(); result = new PagingResult <GetPagingRolesResponse>(totalCount, request.PageIndex, request.PageSize, query1); } } else { var childrenOrgs = new RightsOrganizationDao().GetChildrenOrgs(request.OrgId); if (childrenOrgs.HasValue()) { orgIds = childrenOrgs.DistinctBy(p => p.Id).OrderBy(p => p.Id).Select(p => p.Id).ToList(); } using (var conn = DapperHelper.CreateConnection()) { var multi = conn.QueryMultiple(@"--获取指定机构(包括所有子机构)的角色并分页 SELECT rs.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY r.created_time DESC ) AS RowNum , r.id, r.name, r.description, r.organization_id AS OrgId , r.created_by AS CreatedBy , r.created_time AS CreatedTime , r.last_updated_by AS LastUpdatedBy , r.last_updated_time AS LastUpdatedTime , org.name AS OrgName FROM dbo.t_rights_role AS r LEFT JOIN dbo.t_rights_organization AS org ON r.organization_id= org.id WHERE r.organization_id IN @OrgIds ) AS rs WHERE rs.RowNum BETWEEN @Start AND @End; --获取指定机构(包括所有子机构)的角色total SELECT COUNT(DISTINCT r.id) FROM dbo.t_rights_role AS r WHERE r.organization_id IN @OrgIds;", new { @OrgIds = orgIds, @Start = startIndex, @End = endIndex }); var query1 = multi.Read <GetPagingRolesResponse>(); var query2 = multi.Read <int>(); totalCount = query2.First(); result = new PagingResult <GetPagingRolesResponse>(totalCount, request.PageIndex, request.PageSize, query1); } } return(result); }