新增重新考试接口

master
xiaochanghai 11 months ago
parent dd17d76846
commit 8e4747cfbe
  1. 12
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs
  2. 7
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 2
      Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs
  4. 1
      Tiobon.Core.Model/View/Ghre/Ghre_ExamRecord.Dto.View.cs
  5. 4
      Tiobon.Core.Model/ViewModels/Extend/Ghre_ExamRecordExtend.cs
  6. 45
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs
  7. 7
      Tiobon.Core/Tiobon.Core.xml

@ -80,6 +80,18 @@ public class Ghre_ExamRecordController : BaseController<IGhre_ExamRecordServices
return await _service.StartExamAsync(examRecordId);
}
/// <summary>
/// 重新考试
/// </summary>
/// <param name="examRecordId"></param>
/// <returns></returns>
[HttpPost("RetakeExam/{examRecordId}")]
public async Task<ServiceResult> RetakeExamAsync(long examRecordId)
{
return await _service.RetakeExamAsync(examRecordId);
}
/// <summary>
/// 答题
/// </summary>

@ -855,6 +855,13 @@
<param name="examRecordId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController.RetakeExamAsync(System.Int64)">
<summary>
重新考试
</summary>
<param name="examRecordId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController.AnswerExamAsync(System.Int64,System.Collections.Generic.List{Tiobon.Core.Model.DefaultGhre_ExamPaperPreview})">
<summary>
答题

@ -22,6 +22,8 @@ namespace Tiobon.Core.IServices
Task<ServiceResult> StartExamAsync(long examRecordId);
Task<ServiceResult> RetakeExamAsync(long examRecordId);
Task<ServiceResult> AnswerExamAsync(List<DefaultGhre_ExamPaperPreview> answers, long studyRecordId);
}
}

@ -45,6 +45,7 @@ public class Ghre_ExamRecordDto : Ghre_ExamRecord
public string StaffPhotoUrl { get; set; }
public string ExamNo { get; set; }
public string ExamName { get; set; }
public string CourseName { get; set; }
public decimal? TotalScore { get; set; } = 0;

@ -84,12 +84,12 @@ public class QueryExam : DefaultGhre_ExamPaperPageData
/// <summary>
/// 可重考
/// </summary>
public string CanRetake { get; set; }
public bool? CanRetake { get; set; }
/// <summary>
/// 出分中
/// </summary>
public string ScoreOut { get; set; }
public bool? ScoreOut { get; set; }
/// <summary>
/// 出分时间

@ -554,10 +554,23 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
extend.ExamStatus = record.Status;
extend.TotalScore = record.TotalScore;
extend.Id = record.Id;
extend.CourseName = record.CourseName;
extend.CanRetake = true;
if (extend.ExamStatus == "ExamEnd")
extend.ScoreOut = false;
TimeSpan timeDifference = record.EndTime.Value - DateTime.Now;
extend.RemainingSecond = Convert.ToInt32(timeDifference.TotalSeconds);
if (extend.RemainingSecond < 0) extend.RemainingSecond = 0;
if (record.ActualEndTime != null)
{
timeDifference = record.ActualEndTime.Value - record.ActualBeginTime.Value;
extend.UsageTime = $"{timeDifference.Minutes}分{timeDifference.Seconds}秒";
}
return ServiceResult<QueryExam>.OprateSuccess("查询成功!", extend);
}
@ -593,6 +606,25 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
}
public async Task<ServiceResult> RetakeExamAsync(long examRecordId)
{
var entity = await base.QuerySingle(examRecordId);
if (entity is null)
return ServiceResult.OprateFailed("无效的考试ID!");
if (entity.Status == "ExamEnd")
entity.Status = "Examing";
entity.RetakeTimes = entity.RetakeTimes is null ? 1 : entity.RetakeTimes + 1;
await Update(entity, new List<string>()
{
"Status","RetakeTimes"
});
return ServiceResult.OprateSuccess("成功!");
}
public async Task<ServiceResult> AnswerExamAsync(List<DefaultGhre_ExamPaperPreview> answers, long studyRecordId)
{
var record = await base.QuerySingle(x => x.Id == studyRecordId);
@ -690,8 +722,21 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
await _context.Ghre_ExamRecordDetail.AddRangeAsync(recordDetails);
await _context.Ghre_ExamRecordAnswer.AddRangeAsync(recordDetailAnswers);
await _context.SaveChangesAsync();
record.Status = "ExamEnd";
record.ActualEndTime = DateTime.Now;
#region 打分
if (record.ScoreStatus == "NoScore" && record.Status == "ExamEnd")
await ExamHelper.SystemMarkAsync(Db, record, recordDetails, recordDetailAnswers);
_context.Ghre_ExamRecordDetail.UpdateRange(recordDetails);
_context.Ghre_ExamRecordAnswer.UpdateRange(recordDetailAnswers);
await _context.SaveChangesAsync();
#endregion
await Update(record, new List<string> { "Status", "Score", "ActualEndTime" }, null, $"Id='{record.Id}'");
return ServiceResult.OprateSuccess("提交成功!");
}
}

@ -855,6 +855,13 @@
<param name="examRecordId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController.RetakeExamAsync(System.Int64)">
<summary>
重新考试
</summary>
<param name="examRecordId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController.AnswerExamAsync(System.Int64,System.Collections.Generic.List{Tiobon.Core.Model.DefaultGhre_ExamPaperPreview})">
<summary>
答题

Loading…
Cancel
Save