fix:成绩提交显示500实际提交成功

This commit is contained in:
biss committed 2026-08-15 08:50:56 +08:00
1 parent f00fac7bca
commit d7d2560587
4 files changed
+153 -2

No files matched your search

@@ -34,7 +34,8 @@ public sealed class ExperimentGradesController(
private const string Publishers =
SystemRoles.SuperAdmin + "," +
SystemRoles.AcademicAdmin;
SystemRoles.AcademicAdmin + "," +
SystemRoles.CollegeAdmin;
[HttpGet("management")]
[Authorize(Roles = Managers)]
@@ -1220,7 +1221,8 @@ public sealed class ExperimentGradesController(
private bool IsPublisher() =>
currentUserDataScope.Current.IsInRole(SystemRoles.SuperAdmin) ||
currentUserDataScope.Current.IsInRole(SystemRoles.AcademicAdmin);
currentUserDataScope.Current.IsInRole(SystemRoles.AcademicAdmin) ||
currentUserDataScope.Current.IsInRole(SystemRoles.CollegeAdmin);
private Task<Student?> CurrentStudentAsync(
CancellationToken cancellationToken) =>
@@ -549,6 +549,8 @@ public sealed class GradesController(
.Include(x => x.Records)
.ThenInclude(x => x.ItemScores)
.Include(x => x.TeachingTask)
.ThenInclude(x => x!.Course)
.Include(x => x.TeachingTask)
.ThenInclude(x => x!.Teachers)
.ThenInclude(x => x.Teacher)
.FirstOrDefaultAsync(x => x.Id == id, cancellationToken);
@@ -14,6 +14,58 @@ namespace Jiaowu.Api.Tests;
public sealed class ExperimentGradesControllerTests
{
[Fact]
public async Task CollegeAdmin_CanPublishApprovedExperimentGradeSheet()
{
await using var fixture = await ExperimentGradeFixture.CreateAsync();
var project = new ExperimentProject
{
TeachingTaskId = fixture.Task.Id,
Code = "LAB-COLLEGE-PUBLISH",
Name = "学院发布实验",
ArrangementMode = ExperimentArrangementMode.Centralized,
StartDate = fixture.Term.StartDate,
EndDate = fixture.Term.EndDate,
Status = ExperimentProjectStatus.Published,
PublishedAt = DateTime.UtcNow
};
fixture.Db.ExperimentProjects.Add(project);
await fixture.Db.SaveChangesAsync();
var administrator = fixture.ExperimentGrades(fixture.AdminScope);
await administrator.CreateSheet(
new ExperimentGradeSheetRequest(
project.Id,
1,
60,
[new ExperimentGradeItemRequest(
"操作",
ExperimentGradeItemKind.Operation,
100)]),
CancellationToken.None);
var sheet = await fixture.Db.ExperimentGradeSheets.SingleAsync();
sheet.Status = ExperimentGradeSheetStatus.Approved;
await fixture.Db.SaveChangesAsync();
var collegeId = await fixture.Db.TeachingTasks
.Where(x => x.Id == fixture.Task.Id)
.Select(x => x.Course!.CollegeId)
.SingleAsync();
var collegeScope = new FixedScope(new CurrentUserScope(
Guid.NewGuid(),
"学院管理员",
collegeId,
DataScope.College,
new HashSet<string>([SystemRoles.CollegeAdmin])));
Assert.IsType<NoContentResult>(await fixture
.ExperimentGrades(collegeScope)
.Publish(sheet.Id, CancellationToken.None));
Assert.Equal(
ExperimentGradeSheetStatus.Published,
(await fixture.Db.ExperimentGradeSheets.SingleAsync()).Status);
}
[Fact]
public async Task AssignedTeacher_CanSubmitExperimentGradeSheet()
{
Loaded 3 of 4 files, more files were not shown because too many files have changed in this diff. Show more