优化条件筛选
This commit is contained in:
1 parent
eb20211f0e
commit
130bffbd01
6 files changed
+152
-1
No files matched your search
@@ -24,6 +24,10 @@ public sealed class UsersController(
|
||||
int page = 1,
|
||||
int pageSize = 20,
|
||||
string? keyword = null,
|
||||
string? roleName = null,
|
||||
Guid? collegeId = null,
|
||||
bool? isEnabled = null,
|
||||
bool? hasLoggedIn = null,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (page < 1 || pageSize is < 1 or > 100)
|
||||
@@ -42,6 +46,21 @@ public sealed class UsersController(
|
||||
where userRole.UserId == user.Id && role.Name!.Contains(keyword)
|
||||
select role.Id).Any());
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(roleName))
|
||||
{
|
||||
roleName = roleName.Trim();
|
||||
query = query.Where(user =>
|
||||
(from userRole in db.UserRoles
|
||||
join candidateRole in db.Roles on userRole.RoleId equals candidateRole.Id
|
||||
where userRole.UserId == user.Id && candidateRole.Name == roleName
|
||||
select userRole.RoleId).Any());
|
||||
}
|
||||
if (collegeId.HasValue) query = query.Where(user => user.CollegeId == collegeId.Value);
|
||||
if (isEnabled.HasValue) query = query.Where(user => user.IsEnabled == isEnabled.Value);
|
||||
if (hasLoggedIn.HasValue)
|
||||
query = hasLoggedIn.Value
|
||||
? query.Where(user => user.LastLoginAt != null)
|
||||
: query.Where(user => user.LastLoginAt == null);
|
||||
|
||||
var total = await query.CountAsync(cancellationToken);
|
||||
var users = await query
|
||||
|
||||
Reference in new issue
Block a user