Browse Source

add filter paremeter and getCount api

pull/5292/head
向洪林 6 years ago
parent
commit
c428ac27a6
  1. 5
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs
  2. 10
      modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs
  3. 43
      modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs

5
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs

@ -81,5 +81,10 @@ namespace Volo.Abp.Identity
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
Task<long> GetLongCountAsync(
Guid? parentId,
string filter = null,
CancellationToken cancellationToken = default);
} }
} }

10
modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs

@ -168,6 +168,16 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
DbContext.Set<IdentityUserOrganizationUnit>().RemoveRange(ouMembersQuery); DbContext.Set<IdentityUserOrganizationUnit>().RemoveRange(ouMembersQuery);
} }
public virtual async Task<long> GetLongCountAsync(Guid? parentId, string filter = null,
CancellationToken cancellationToken = default)
{
return await DbSet
.WhereIf(!filter.IsNullOrWhiteSpace(), ou =>
ou.DisplayName.Contains(filter) ||
ou.Code.Contains(filter))
.LongCountAsync(GetCancellationToken(cancellationToken));
}
protected virtual IQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, protected virtual IQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit,
string filter = null) string filter = null)
{ {

43
modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs

@ -16,7 +16,7 @@ namespace Volo.Abp.Identity.MongoDB
{ {
public class MongoOrganizationUnitRepository public class MongoOrganizationUnitRepository
: MongoDbRepository<IAbpIdentityMongoDbContext, OrganizationUnit, Guid>, : MongoDbRepository<IAbpIdentityMongoDbContext, OrganizationUnit, Guid>,
IOrganizationUnitRepository IOrganizationUnitRepository
{ {
public MongoOrganizationUnitRepository( public MongoOrganizationUnitRepository(
IMongoDbContextProvider<IAbpIdentityMongoDbContext> dbContextProvider) IMongoDbContextProvider<IAbpIdentityMongoDbContext> dbContextProvider)
@ -41,8 +41,8 @@ namespace Volo.Abp.Identity.MongoDB
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await GetMongoQueryable() return await GetMongoQueryable()
.Where(ou => ou.Code.StartsWith(code) && ou.Id != parentId.Value) .Where(ou => ou.Code.StartsWith(code) && ou.Id != parentId.Value)
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<OrganizationUnit>> GetListAsync( public virtual async Task<List<OrganizationUnit>> GetListAsync(
@ -51,22 +51,26 @@ namespace Volo.Abp.Identity.MongoDB
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await GetMongoQueryable() return await GetMongoQueryable()
.Where(t => ids.Contains(t.Id)) .Where(t => ids.Contains(t.Id))
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<OrganizationUnit>> GetListAsync( public virtual async Task<List<OrganizationUnit>> GetListAsync(
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue, int maxResultCount = int.MaxValue,
int skipCount = 0, int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await GetMongoQueryable() return await GetMongoQueryable()
.OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName)) .WhereIf(!filter.IsNullOrWhiteSpace(),
.As<IMongoQueryable<OrganizationUnit>>() ou => ou.DisplayName.Contains(filter) ||
.PageBy<OrganizationUnit, IMongoQueryable<OrganizationUnit>>(skipCount, maxResultCount) ou.Code.Contains(filter))
.ToListAsync(GetCancellationToken(cancellationToken)); .OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName))
.As<IMongoQueryable<OrganizationUnit>>()
.PageBy<OrganizationUnit, IMongoQueryable<OrganizationUnit>>(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<OrganizationUnit> GetAsync( public virtual async Task<OrganizationUnit> GetAsync(
@ -135,13 +139,15 @@ namespace Volo.Abp.Identity.MongoDB
return await query.CountAsync(GetCancellationToken(cancellationToken)); return await query.CountAsync(GetCancellationToken(cancellationToken));
} }
public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default)
{ {
organizationUnit.Roles.Clear(); organizationUnit.Roles.Clear();
return Task.FromResult(0); return Task.FromResult(0);
} }
public virtual async Task RemoveAllMembersAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) public virtual async Task RemoveAllMembersAsync(OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default)
{ {
var users = await DbContext.Users.AsQueryable() var users = await DbContext.Users.AsQueryable()
.Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) .Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id))
@ -155,7 +161,18 @@ namespace Volo.Abp.Identity.MongoDB
} }
} }
protected virtual IMongoQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null) public virtual async Task<long> GetLongCountAsync(Guid? parentId, string filter = null,
CancellationToken cancellationToken = default)
{
return await GetMongoQueryable()
.WhereIf<OrganizationUnit, IMongoQueryable<OrganizationUnit>>(!filter.IsNullOrWhiteSpace(), ou =>
ou.DisplayName.Contains(filter) ||
ou.Code.Contains(filter))
.LongCountAsync(GetCancellationToken(cancellationToken));
}
protected virtual IMongoQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit,
string filter = null)
{ {
return DbContext.Users.AsQueryable() return DbContext.Users.AsQueryable()
.Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) .Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id))
@ -168,4 +185,4 @@ namespace Volo.Abp.Identity.MongoDB
); );
} }
} }
} }
Loading…
Cancel
Save