From bd8da3bcf4d03bfa5eb25d42425642796a056baa Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Fri, 5 Jul 2024 16:59:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=83=E8=AF=95=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=98=8E=E7=BB=86=E6=89=A9=E5=B1=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ghre/Ghre_ExamRecordController.cs | 13 +++- .../Ghre/IGhre_ExamRecordServices.cs | 2 + .../Extend/Ghre_ExamRecordExtend.cs | 18 +++++ .../Ghre/Ghre_ExamRecordServices.cs | 73 ++++++++++++++++++- 4 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 Tiobon.Core.Model/ViewModels/Extend/Ghre_ExamRecordExtend.cs diff --git a/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs b/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs index b780cd8e..ce35d0f2 100644 --- a/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs +++ b/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs @@ -28,9 +28,20 @@ public class Ghre_ExamRecordController : BaseController ModifyAdjustScore(string examRecordId, [FromBody] EditGhre_ExamRecordInput edit) { return await _service.ModifyAdjustScore(examRecordId, edit); } + + /// + /// 获取考试记录明细扩展接口 + /// + /// + /// + [HttpPost("QueryExtend/{examRecordId}")] + public async Task> ExtendAsync(string examRecordId) + { + return await _service.ExtendAsync(examRecordId); + } } \ No newline at end of file diff --git a/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs b/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs index 270a5a44..f04fe0c1 100644 --- a/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs +++ b/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs @@ -13,5 +13,7 @@ namespace Tiobon.Core.IServices Task> Query(string examId, QueryBody body); Task ModifyAdjustScore(string examRecordId, EditGhre_ExamRecordInput edit); + + Task> ExtendAsync(string examRecordId); } } \ No newline at end of file diff --git a/Tiobon.Core.Model/ViewModels/Extend/Ghre_ExamRecordExtend.cs b/Tiobon.Core.Model/ViewModels/Extend/Ghre_ExamRecordExtend.cs new file mode 100644 index 00000000..6e51dff0 --- /dev/null +++ b/Tiobon.Core.Model/ViewModels/Extend/Ghre_ExamRecordExtend.cs @@ -0,0 +1,18 @@ +namespace Tiobon.Core.Model; + +public class Ghre_ExamRecordExtend : DefaultGhre_ExamPaperPageData +{ + + public Ghre_ExamRecordExtendComment commentData { get; set; } +} + +public class Ghre_ExamRecordExtendComment +{ + public string commentText { get; set; } + public string commentStaffName { get; set; } + public string commentStaffNo { get; set; } + public string commentStaffPhoto { get; set; } + public string commentDeptName { get; set; } + public string commentTitleName { get; set; } + public bool? isFirstTime { get; set; } +} diff --git a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs index b26af797..2394504c 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs @@ -1,5 +1,4 @@ - -using Tiobon.Core.IServices; +using Tiobon.Core.IServices; using Tiobon.Core.Model.Models; using Tiobon.Core.Services.BASE; using Tiobon.Core.IRepository.Base; @@ -9,6 +8,7 @@ using Tiobon.Core.Common; using Tiobon.Core.Model; using Newtonsoft.Json; using System.Text.RegularExpressions; +using System.Net; namespace Tiobon.Core.Services; @@ -155,4 +155,73 @@ public class Ghre_ExamRecordServices : BaseServices> ExtendAsync(string examRecordId) + { + var extend = new Ghre_ExamRecordExtend(); + var entity = await QuerySingle(examRecordId); + + var exampaper = await Db.Queryable().FirstAsync(x => x.Id == entity.ExamPaperId); + var baseData = new DefaultGhre_ExamPaperBaseData(); + baseData.PaperNo = exampaper.PaperNo; + baseData.PaperName = exampaper.PaperName; + baseData.AnswerTime = exampaper.AnswerTime; + baseData.ScoreMethod = exampaper.ScoreMethod; + baseData.TotalScore = exampaper.TotalScore; + baseData.PassScore = exampaper.PassScore; + baseData.RetakeTimes = exampaper.RetakeTimes; + baseData.RemarkSz = exampaper.RemarkSz; + baseData.LinkType = exampaper.LinkType; + baseData.CourseId = exampaper.LinkType == "CourseId" ? exampaper.LinkId : null; + baseData.CourseSceneId = exampaper.LinkType == "CourseSceneId" ? exampaper.LinkId : null; + extend.baseData = baseData; + + + extend.styleInfo.coverImage = exampaper.CoverUrl; + extend.styleInfo.paperStyle = exampaper.Style; + extend.styleInfo.coverBackGround = exampaper.CoverBackGround; + + var questions = await Db.Queryable().Where(x => x.ExamPaperId == exampaper.Id).OrderBy(x => x.TaxisNo).ToListAsync(); + var previews = questions.Where(x => x.QuestionId != null).Select(x => new DefaultGhre_ExamPaperPreview() + { + Id = x.Id, + ConfigId = x.ConfigId, + parentId = x.ConfigId, + QuestionId = x.QuestionId.Value, + ExamPaperId = x.ExamPaperId + }).ToList(); + + var questionIds = previews.Select(x => x.QuestionId).Distinct().ToList(); + + var questions1 = await Db.Queryable().Where(x => questionIds.Contains(x.Id)).ToListAsync(); + var answers = await Db.Queryable().Where(x => x.QuestionId != null && questionIds.Contains(x.QuestionId.Value)).OrderBy(x => x.TaxisNo).ToListAsync(); ; + + previews.ForEach(x => + { + var answers1 = answers.Where(y => y.QuestionId == x.QuestionId).ToList(); + x.QuestionType = questions1.FirstOrDefault(a => a.Id == x.QuestionId)?.QuestionType; + x.QuestionContent = questions1.FirstOrDefault(a => a.Id == x.QuestionId)?.QuestionContent; + if (!string.IsNullOrEmpty(x.QuestionContent)) + x.QuestionContent = WebUtility.HtmlDecode(x.QuestionContent); + + var detail = new FromGhre_QuestionQuestionTypeDetail(); + detail.content = x.QuestionContent; + detail.difficulty = questions1.FirstOrDefault(a => a.Id == x.QuestionId)?.DifficultyLevel; + detail.answer = answers1.Where(x => x.IsCorrect == true).FirstOrDefault()?.QuestionNo; + detail.answer1 = answers1.Where(x => x.IsCorrect == true).Select(x => x.QuestionNo).ToList(); + detail.answerList = answers1.Select(x => new FromGhre_QuestionQuestionAnswerList() + { + No = x.QuestionNo, + label = x.AnswerContent, + imageUrl = x.ImageUrl, + imgWidthPc = x.ImageWidthPc, + imgWidthApp = x.ImageWidthApp, + }).ToList(); + + x.detail = detail; + }); + + extend.previewList = previews; + + return ServiceResult.OprateSuccess("查询成功!", extend); + } } \ No newline at end of file