|
@@ -33,7 +33,7 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
/// <returns></returns>
|
|
|
public static async Task<(EvaluationSyncInfo evaluation, bool change,string newGrouplistHash, List<RMember> members, List<RGroupList> groupLists)> CheckEvaluationGroupList(EvaluationSyncInfo evaluationSyncInfo, CoreAPIHttpService _coreAPIHttpService, AzureCosmosFactory _azureCosmos, DingDing _dingDing)
|
|
|
{
|
|
|
- var listInfo = await GroupListService.GetMemberByListids(_coreAPIHttpService, _azureCosmos.GetCosmosClient(), _dingDing, evaluationSyncInfo.grouplist, evaluationSyncInfo.owner);
|
|
|
+ var listInfo = await GroupListService.GetMemberByListids(_coreAPIHttpService, _azureCosmos.GetCosmosClient(), _dingDing, evaluationSyncInfo.grouplist, evaluationSyncInfo.ownerId);
|
|
|
//计算数据的hash值
|
|
|
StringBuilder groupListData = new StringBuilder();
|
|
|
//名单的hash值
|
|
@@ -163,6 +163,7 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
evaluationSyncInfo.subjects = exam.subjects?.Select(x=>new IES.ExamServer.Models.SubjectExam { subjectId=x.id,subjectName=x.name,examId=id}).ToList();
|
|
|
evaluationSyncInfo.dataTime= DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
|
|
evaluationSyncInfo.scode=exam.code;
|
|
|
+ evaluationSyncInfo.owner=exam.owner;
|
|
|
stime=exam.startTime;
|
|
|
etime=exam.endTime;
|
|
|
HashSet<string> grouplist = new HashSet<string>();
|
|
@@ -223,6 +224,7 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
evaluationSyncInfo.pid= art.pId;
|
|
|
evaluationSyncInfo.scode=art.code;
|
|
|
evaluationSyncInfo.dataTime = DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
|
|
+ evaluationSyncInfo.owner=art.owner;
|
|
|
HashSet<string> grouplist = new HashSet<string>();
|
|
|
if (art.classes.IsNotEmpty())
|
|
|
{
|
|
@@ -241,8 +243,8 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
dataTime= art._ts*1000;
|
|
|
stime=art.startTime;
|
|
|
etime=art.endTime;
|
|
|
- var quota_22 = art.settings.Find(x => x.id.Equals("quota_21"));
|
|
|
- foreach (var item in quota_22.task)
|
|
|
+ var quota_21 = art.settings.Find(x => x.id.Equals("quota_21"));
|
|
|
+ foreach (var item in quota_21.task)
|
|
|
{
|
|
|
if (!string.IsNullOrWhiteSpace(item.acId))
|
|
|
{
|
|
@@ -287,6 +289,43 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ var quota_22 = art.settings.Find(x => x.id.Equals("quota_22"));
|
|
|
+ if (quota_22!=null)
|
|
|
+ {
|
|
|
+ foreach (var item in quota_22.task)
|
|
|
+ {
|
|
|
+ //获取基本技能(智音音乐曲目)
|
|
|
+ if (item.subject.Equals("subject_music"))
|
|
|
+ {
|
|
|
+ string AIMuiscId = string.Empty;
|
|
|
+ if (!string.IsNullOrWhiteSpace(art.pId))
|
|
|
+ {
|
|
|
+ AIMuiscId=art.pId;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ AIMuiscId=art.id;
|
|
|
+ }
|
|
|
+ var artMusicResponse = await azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Common).ReadItemStreamAsync(AIMuiscId, new PartitionKey("ArtMusic"));
|
|
|
+ if (artMusicResponse.IsSuccessStatusCode)
|
|
|
+ {
|
|
|
+ ArtMusic artMusic = JsonDocument.Parse(artMusicResponse.Content).RootElement.Deserialize<ArtMusic>() ;
|
|
|
+ if (artMusic!=null)
|
|
|
+ {
|
|
|
+ evaluationSyncInfo.music= new AIMusic()
|
|
|
+ {
|
|
|
+ examId= art.id,
|
|
|
+ examName= art.name,
|
|
|
+ pid=art.pId,
|
|
|
+ questionId=artMusic.questionId,
|
|
|
+ questionName=artMusic.questionName,
|
|
|
+ mustSong=artMusic.mustSong?.Select(x=>new AISong { songId=x.songId,songName=x.songName}).ToList(),
|
|
|
+ optionSong=artMusic.optionSong?.Select(x => new AISong { songId=x.songId, songName=x.songName }).ToList(),
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
@@ -313,6 +352,7 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
var evaluationExam = evaluationExams.FindAll(x => x.subjectId.Equals(subject.subjectId)).FirstOrDefault();
|
|
|
foreach (var paper in subject.papers)
|
|
|
{
|
|
|
+ EvaluationPaper evaluationPaper = null;
|
|
|
List<BlobHashInfo> blobs = new List<BlobHashInfo>();
|
|
|
try
|
|
|
{
|
|
@@ -334,7 +374,7 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
size = size.HasValue ? size.Value : 0
|
|
|
});
|
|
|
};
|
|
|
- var evaluationPaper= evaluationExam.papers.Find(x => x.paperId.Equals(paper.paperId));
|
|
|
+ evaluationPaper = evaluationExam.papers.Find(x => x.paperId.Equals(paper.paperId));
|
|
|
evaluationPaper.blobs=blobs;
|
|
|
}
|
|
|
catch
|
|
@@ -350,7 +390,9 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
var order = blobs.OrderBy(x => $"{x.path}-{x.hash}-{x.size}-{x.last}");
|
|
|
string blobStr = string.Join(",", order.Select(x=> $"{x.path}-{x.hash}-{x.size}-{x.last}"));
|
|
|
// 计算hash,校准路径,文件hash,文件大小,最后修改时间
|
|
|
- paper.paperHash= ShaHashHelper.GetSHA1(blobStr);
|
|
|
+ string paperHash = ShaHashHelper.GetSHA1(blobStr);
|
|
|
+ paper.paperHash= paperHash;
|
|
|
+ evaluationPaper.paperHash= paperHash;
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -393,10 +435,13 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
dataStr.Append(evaluationSyncInfo.shortCode);
|
|
|
dataStr.Append($"{stime}{etime}");
|
|
|
dataStr.Append(string.Join("", order.Select(x=>x.subjectId)));
|
|
|
+ if (evaluationSyncInfo.music!=null)
|
|
|
+ {
|
|
|
+ dataStr.Append($"{evaluationSyncInfo.music.questionId}{string.Join("", evaluationSyncInfo.music.mustSong?.Select(x=>x.songId))}{string.Join("",evaluationSyncInfo.music.optionSong?.Select(x=>x.songId))}");
|
|
|
+ }
|
|
|
//计算dataHash
|
|
|
evaluationSyncInfo.dataHash = ShaHashHelper.GetSHA1(dataStr.ToString());
|
|
|
}
|
|
|
-
|
|
|
evaluationClient= new EvaluationClient
|
|
|
{
|
|
|
id = evaluationSyncInfo.id,
|
|
@@ -429,6 +474,7 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
ownerId = evaluationSyncInfo.ownerId,
|
|
|
ownerPicture =evaluationSyncInfo.ownerPicture,
|
|
|
ownerName = evaluationSyncInfo.ownerName,
|
|
|
+ music = evaluationSyncInfo.music,
|
|
|
//password = evaluationSyncInfo.password,
|
|
|
//recordUrl = evaluationSyncInfo.recordUrl
|
|
|
};
|
|
@@ -455,9 +501,9 @@ namespace TEAMModelOS.SDK.Models.Service
|
|
|
string evaluationSyncInfoSJson = evaluationSyncInfo.ToJsonString();
|
|
|
dataSize+= Encoding.UTF8.GetByteCount(evaluationSyncInfoSJson);
|
|
|
evaluationClient.dataSize = dataSize;
|
|
|
- await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(sourceJson, $"package/{id}/exam", "source.json");
|
|
|
- await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(groupListJson, $"package/{id}/exam", "grouplist.json");
|
|
|
- await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(new { evaluationClient, evaluationExams }.ToJsonString(), $"package/{id}/exam", "evaluation.json");
|
|
|
+ await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(sourceJson, $"package/exam/{id}", "source.json");
|
|
|
+ await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(groupListJson, $"package/exam/{id}", "grouplist.json");
|
|
|
+ await azureStorage.GetBlobContainerClient(ownerId).UploadFileByContainer(new { evaluationClient, evaluationExams }.ToJsonString(), $"package/exam/{id}", "evaluation.json");
|
|
|
evaluationSyncInfo.dataSize = dataSize;
|
|
|
|
|
|
await azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, Constant.Normal).UpsertItemAsync<EvaluationSyncInfo>(evaluationSyncInfo, new PartitionKey("EvaluationSyncInfo"));
|