修复MySQL问题
This commit is contained in:
@@ -230,12 +230,14 @@ public sealed class ExamArrangementService(AppDbContext db)
|
||||
foreach (var id in dbBusyIds) busyTeacherIds.Add(id);
|
||||
foreach (var id in excludeTeacherIds) busyTeacherIds.Add(id);
|
||||
|
||||
return await db.Teachers.AsNoTracking()
|
||||
.Where(x => x.Status == TeacherStatus.Active)
|
||||
.WhereNotIn(busyTeacherIds, x => x.Id)
|
||||
.OrderBy(x => Guid.NewGuid())
|
||||
.Take(needed)
|
||||
var candidates = await InvigilatorCandidateQuery
|
||||
.Create(db, busyTeacherIds)
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
return candidates
|
||||
.OrderBy(_ => Random.Shared.Next())
|
||||
.Take(needed)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
using Jiaowu.Api.Domain.Academic;
|
||||
using Jiaowu.Api.Infrastructure.Persistence;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Jiaowu.Api.Infrastructure.Exams;
|
||||
|
||||
internal static class InvigilatorCandidateQuery
|
||||
{
|
||||
public static IQueryable<Teacher> Create(
|
||||
AppDbContext db,
|
||||
IEnumerable<Guid> excludedTeacherIds) =>
|
||||
db.Teachers.AsNoTracking()
|
||||
.Where(x => x.Status == TeacherStatus.Active)
|
||||
.WhereNotIn(excludedTeacherIds, x => x.Id);
|
||||
}
|
||||
@@ -225,11 +225,13 @@ public sealed class MakeupExamArrangementService(AppDbContext db)
|
||||
foreach (var id in dbBusyIds) busyTeacherIds.Add(id);
|
||||
foreach (var id in excludeTeacherIds) busyTeacherIds.Add(id);
|
||||
|
||||
return await db.Teachers.AsNoTracking()
|
||||
.Where(x => x.Status == TeacherStatus.Active)
|
||||
.WhereNotIn(busyTeacherIds, x => x.Id)
|
||||
.OrderBy(x => Guid.NewGuid())
|
||||
.Take(needed)
|
||||
var candidates = await InvigilatorCandidateQuery
|
||||
.Create(db, busyTeacherIds)
|
||||
.ToListAsync(cancellationToken);
|
||||
|
||||
return candidates
|
||||
.OrderBy(_ => Random.Shared.Next())
|
||||
.Take(needed)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user