public async Task <dynamic> OnSubmitHomeworkAsync([FromForm] UserHomework homework, [FromForm] List <int> files, [FromForm] string token) { try { var t = await tokenService.GetTokenAsync(token); if (t == null) { throw new Exception("请先登录"); } var role = t.Role; if (role == UserRole.Admin) { throw new Exception("无效操作"); } role = await homeworkService.GetHWRoleAsync(homework.HwId, t.UserID); if (role != UserRole.Student) { throw new Exception("无效操作"); } homework.UserId = t.UserID; homework.Mark = null; homework.Comment = null; var hw = await homeworkService.GetHomeworkAsync(homework.HwId); if (hw.Type == HWType.Group) { if (await homeworkService.GetGroupIdentityAsync(t.UserID, hw.CourseId) != GroupIdentity.Leader) { throw new Exception("小组作业只能组长提交!"); } } if (hw.Status != HWStatus.Active && hw.Status != HWStatus.NearDDL) { throw new Exception("作业尚未开始提交或已经结束!"); } if (await homeworkService.HasSubmittedAsync(homework.HwId, homework.UserId)) { await homeworkService.RemoveStuHomeworkFilesAsync(homework.HwId, homework.UserId); await homeworkService.UpdateStuHomeworkAsync(homework); foreach (var file in files) { await homeworkService.AddFileToStuHomeworkAsync(file, homework.UserId, homework.HwId); } } else { await homeworkService.AddStuHomeworkAsync(homework); foreach (var file in files) { await homeworkService.AddFileToStuHomeworkAsync(file, t.UserID, homework.HwId); } } return(new { Res = true }); } catch (Exception e) { return(new { Res = false, Error = e.Message }); } }