CrazyIter_Bin 3 months ago
parent
commit
412a5c4e8e

+ 4 - 0
TEAMModelOS.Extension/IES.Exam/IES.ExamLibrary/Models/EvaluationCommon.cs

@@ -321,6 +321,10 @@ namespace IES.ExamServer.Models
         /// 试卷哈希值
         /// </summary>
         public string? paperHash { get; set; }
+        /// <summary>
+        /// 本地路径
+        /// </summary>
+        public string? local { get; set; }
     }
     public class EvaluationPaper: SubjectExamPaper
     {

+ 2 - 1
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Controllers/ManageController.cs

@@ -494,7 +494,8 @@ namespace IES.ExamServer.Controllers
                 }
 
             }
-            var checkDataResult = ManageService.CheckData(evaluationLocal, evaluationCloud, successMsgs, errorMsgs, _liteDBFactory);
+            EvaluationCheckDataResult checkDataResult;
+             (checkDataResult, evaluationLocal) = ManageService.CheckData( evaluationLocal, evaluationCloud, successMsgs, errorMsgs, _liteDBFactory);
             Dictionary<string, object?>? evaluation = null;
             if (evaluationLocal!=null)
             {

+ 4 - 2
TEAMModelOS.Extension/IES.Exam/IES.ExamServer/Services/ManageService.cs

@@ -297,7 +297,7 @@ namespace IES.ExamServer.Services
             return (successMsgs , errorMsgs);
         }
 
-        public static EvaluationCheckDataResult  CheckData(EvaluationClient? evaluationLocal, EvaluationClient? evaluationCloud, List<string> successMsgs,List<string> errorMsgs, LiteDBFactory _liteDBFactory )
+        public static (EvaluationCheckDataResult result, EvaluationClient? evaluationLocal)  CheckData( EvaluationClient? evaluationLocal, EvaluationClient? evaluationCloud, List<string> successMsgs,List<string> errorMsgs, LiteDBFactory _liteDBFactory )
         {
             //数据,文件,页面 0 没有更新,1 有更新
             int data=0, blob=0, groupList=0, status=0,zip=0;
@@ -338,6 +338,8 @@ namespace IES.ExamServer.Services
                     studentCount=evaluationCloud.studentCount;
                     errorMsgs.Add($"名单信息校验失败,需要更新名单信息!");
                 }
+                evaluationLocal=evaluationCloud;
+                _liteDBFactory.GetLiteDatabase().GetCollection<EvaluationClient>().Upsert(evaluationLocal);
             }
             else if (evaluationLocal!=null && evaluationCloud==null)
             {
@@ -368,7 +370,7 @@ namespace IES.ExamServer.Services
                 errorMsgs.Add($"获取到最新的评测数据,需要下载数据包,文件包,名单信息!");
             }
             EvaluationCheckDataResult checkDataResult= new EvaluationCheckDataResult { data = data, blob = blob, groupList = groupList, status = status, dataSize = dataSize, blobSize = blobSize, studentCount = studentCount,zip=zip ,successMsgs=successMsgs,errorMsgs=errorMsgs};
-            return checkDataResult;
+            return (checkDataResult, evaluationLocal);
         }
        
         public class EvaluationCheckDataResult

+ 25 - 23
TEAMModelOS.SDK/Models/Service/EvaluationSyncInfoService.cs

@@ -140,7 +140,7 @@ namespace TEAMModelOS.SDK.Models.Service
                     scope = scope,
                     type = type,
                     pk="EvaluationSyncInfo",
-                    code="c",
+                    code="EvaluationSyncInfo",
                     ownerId = ownerId,
                     ownerPicture = ownerPicture,
                     ownerName = ownerName,
@@ -158,7 +158,7 @@ namespace TEAMModelOS.SDK.Models.Service
                             ExamInfo exam= JsonDocument.Parse(response.Content).RootElement.Deserialize<ExamInfo>();
                             dataTime= exam._ts*1000;
                             evaluationSyncInfo.name=exam.name;
-                            evaluationSyncInfo.subjects = exam.subjects?.Select(x=>new IES.ExamServer.Models.SubjectExam { subjectId=x.id,subjectName=x.name,examId=id}).ToList();
+                            evaluationSyncInfo.subjects = exam.subjects?.Select(x=>new IES.ExamServer.Models.SubjectExam { subjectId=x.id,subjectName=x.name,examId=id,examName=exam.name}).ToList();
                             evaluationSyncInfo.dataTime= DateTimeOffset.Now.ToUnixTimeMilliseconds();
                             evaluationSyncInfo.scode=exam.code;
                             evaluationSyncInfo.owner=exam.owner;
@@ -185,7 +185,8 @@ namespace TEAMModelOS.SDK.Models.Service
                                         subjectId=subject.id,
                                         subjectName=subject.name,
                                         examId=id,
-                                        papers= group.list.Select(x=>new SubjectExamPaper {paperId= x.id,paperName=x.name,blob=x.blob }).ToList(),
+                                        examName=exam.name,
+                                        papers= group.list.Select(x=>new SubjectExamPaper {paperId= x.id,paperName=x.name, blob=x.blob, local=$"package/{evaluationSyncInfo.id}/papers/{x.id}" }).ToList(),
                                     } );
 
                                     EvaluationExam evaluationExam = new EvaluationExam()
@@ -200,7 +201,7 @@ namespace TEAMModelOS.SDK.Models.Service
                                         scope=scope,
                                         stime=stime,
                                         etime=etime,
-                                        papers= group.list.Select(x => new EvaluationPaper { paperId= x.id, paperName=x.name, blob=x.blob, point=x.point,knowledge=x.knowledge,type=x.type,field=x.field }).ToList(),
+                                        papers= group.list.Select(x => new EvaluationPaper { paperId= x.id, paperName=x.name, blob=x.blob, local=$"package/{evaluationSyncInfo.id}/papers/{x.id}", point=x.point,knowledge=x.knowledge,type=x.type,field=x.field }).ToList(),
                                     };
                                     evaluationExams.Add(evaluationExam);
                                 }
@@ -255,7 +256,7 @@ namespace TEAMModelOS.SDK.Models.Service
                                         var subjectSync = evaluationSyncInfo.subjects.Find(x => x.examId.Equals(item.acId) && x.subjectId.Equals(item.subject));
                                         if (subjectSync!=null)
                                         {
-                                            subjectSync.papers= papers?.Select(x => new SubjectExamPaper { paperId=x.id, paperName=x.name, blob=x.blob }).ToList();
+                                            subjectSync.papers= papers?.Select(x => new SubjectExamPaper { paperId=x.id, paperName=x.name, blob=x.blob, local=$"package/{evaluationSyncInfo.id}/papers/{x.id}" }).ToList();
                                             subjectSync.subjectName=subject.name;
                                         }
                                         else {
@@ -264,7 +265,8 @@ namespace TEAMModelOS.SDK.Models.Service
                                                 subjectId=item.subject,
                                                 subjectName=subject.name,
                                                 examId=item.acId,
-                                                papers = papers?.Select(x => new SubjectExamPaper { paperId=x.id, paperName=x.name, blob=x.blob }).ToList()
+                                                examName=exam.name,
+                                                papers = papers?.Select(x => new SubjectExamPaper { paperId=x.id, paperName=x.name, blob=x.blob, local=$"package/{evaluationSyncInfo.id}/papers/{x.id}" }).ToList()
                                             });
                                         }
                                         dataTime= dataTime<exam._ts*1000 ? exam._ts*1000 : dataTime;
@@ -281,7 +283,7 @@ namespace TEAMModelOS.SDK.Models.Service
                                             scope=scope,
                                             stime=stime,
                                             etime=etime,
-                                            papers= papers.Select(x => new EvaluationPaper { paperId= x.id, paperName=x.name, blob=x.blob, point=x.point, knowledge=x.knowledge, type=x.type, field=x.field }).ToList(),
+                                            papers= papers.Select(x => new EvaluationPaper { paperId= x.id, paperName=x.name, blob=x.blob, local=$"package/{evaluationSyncInfo.id}/papers/{x.id}", point=x.point, knowledge=x.knowledge, type=x.type, field=x.field }).ToList(),
                                         };
                                         evaluationExams.Add(evaluationExam);
                                     }
@@ -392,7 +394,7 @@ namespace TEAMModelOS.SDK.Models.Service
                                     last = lastModified.HasValue ? lastModified.Value.ToUnixTimeMilliseconds() : 0 ,
                                     path = path,
                                     size = size.HasValue ? size.Value : 0,
-                                    local=$"package/{evaluationSyncInfo.id}/papers{paper.paperId}/{fileName}"
+                                    local=$"package/{evaluationSyncInfo.id}/papers/{paper.paperId}/{fileName}"
                                 });
                             };
                             evaluationPaper =  evaluationExam.papers.Find(x => x.paperId.Equals(paper.paperId));
@@ -525,21 +527,21 @@ namespace TEAMModelOS.SDK.Models.Service
                 dataSize+= Encoding.UTF8.GetByteCount(evaluationSyncInfoSJson);
                 evaluationClient.dataSize = dataSize;
                //重组blob路径,使之适配局域网端读取。
-                evaluationClient.subjects.ForEach(x => {
-                    x.papers.ForEach(y => {
-                        y.blob=$"package/{evaluationClient.id}/papers{y.paperId}";
-                    });
-                });
-                evaluationExams.ForEach(x => {
-                    x.papers.ForEach(y => {
-                        y.blob=$"package/{evaluationClient.id}/papers{y.paperId}";
-                    });
-                });
-                evaluationSyncInfo.subjects.ForEach(x => {
-                    x.papers.ForEach(y => {
-                        y.blob=$"package/{evaluationClient.id}/papers{y.paperId}";
-                    });
-                });
+                //evaluationClient.subjects.ForEach(x => {
+                //    x.papers.ForEach(y => {
+                //        y.blob=$"package/{evaluationClient.id}/papers/{y.paperId}";
+                //    });
+                //});
+                //evaluationExams.ForEach(x => {
+                //    x.papers.ForEach(y => {
+                //        y.blob=$"package/{evaluationClient.id}/papers/{y.paperId}";
+                //    });
+                //});
+                //evaluationSyncInfo.subjects.ForEach(x => {
+                //    x.papers.ForEach(y => {
+                //        y.blob=$"package/{evaluationClient.id}/papers/{y.paperId}";
+                //    });
+                //});
                 await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(sourceJson, $"package/{id}/data", "source.json");
                 await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(groupListJson, $"package/{id}/data", "grouplist.json");
                 await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(new { evaluationClient, evaluationExams }.ToJsonString(), $"package/{id}/data", "evaluation.json");