新增重新考试接口

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. 3
      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); 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>
/// 答题 /// 答题
/// </summary> /// </summary>

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

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

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

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

@ -554,10 +554,23 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
extend.ExamStatus = record.Status; extend.ExamStatus = record.Status;
extend.TotalScore = record.TotalScore; extend.TotalScore = record.TotalScore;
extend.Id = record.Id; 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; TimeSpan timeDifference = record.EndTime.Value - DateTime.Now;
extend.RemainingSecond = Convert.ToInt32(timeDifference.TotalSeconds); extend.RemainingSecond = Convert.ToInt32(timeDifference.TotalSeconds);
if (extend.RemainingSecond < 0) extend.RemainingSecond = 0; 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); 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) public async Task<ServiceResult> AnswerExamAsync(List<DefaultGhre_ExamPaperPreview> answers, long studyRecordId)
{ {
var record = await base.QuerySingle(x => x.Id == 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_ExamRecordDetail.AddRangeAsync(recordDetails);
await _context.Ghre_ExamRecordAnswer.AddRangeAsync(recordDetailAnswers); 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(); await _context.SaveChangesAsync();
#endregion
await Update(record, new List<string> { "Status", "Score", "ActualEndTime" }, null, $"Id='{record.Id}'");
return ServiceResult.OprateSuccess("提交成功!"); return ServiceResult.OprateSuccess("提交成功!");
} }
} }

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

Loading…
Cancel
Save