CrazyIter_Bin 3 anos atrás
pai
commit
d19dd233ae

+ 2 - 2
TEAMModelOS.SDK/Models/Cosmos/Research/TeacherFile.cs

@@ -30,7 +30,7 @@ namespace TEAMModelOS.SDK.Models
         /// <summary>
         /// 观看时长
         /// </summary>
-        public long view { get; set; }
+        public double view { get; set; }
         /// <summary>
         /// video ,doc,
         /// </summary>
@@ -45,7 +45,7 @@ namespace TEAMModelOS.SDK.Models
     public  class TeacherFileRcd {
         public string hash { get; set; }
         public double duration { get; set; }
-        public long view { get; set; }
+        public double view { get; set; }
         public bool  done { get; set; }
         public string abilityId { get; set; }
         public string taskId { get; set; }

+ 11 - 3
TEAMModelOS.SDK/Models/Cosmos/Research/TeacherTrain.cs

@@ -151,7 +151,7 @@ namespace TEAMModelOS.SDK.Models
         /// <summary>
         /// 线上观看视频的学时
         /// </summary>
-        public long videoTime { get; set; }
+        public double videoTime { get; set; }
         /// <summary>
         /// 认证材料学时
         /// </summary>
@@ -186,11 +186,11 @@ namespace TEAMModelOS.SDK.Models
         /// <summary>
         /// 线上观看视频的学时
         /// </summary>
-        public long onlineTime { get; set; }
+        public double onlineTime { get; set; }
         /// <summary>
         /// 线上观看视频的时长
         /// </summary>
-        public long videoTime { get; set; }
+        public double videoTime { get; set; }
         /// <summary>
         /// 限制学习时长
         /// </summary>
@@ -247,6 +247,14 @@ namespace TEAMModelOS.SDK.Models
         /// 互评记录
         /// </summary>
         public List<TeacherHprecord> hprecord { get; set; } = new List<TeacherHprecord>();
+        /// <summary>
+        /// -1 未评论任何人。
+        /// </summary>
+        public int debateOrther { get; set; } = -1;
+        /// <summary>
+        /// 评论别人的id集合
+        /// </summary>
+        public List<string> replyIds { get; set; } = new List<string>();
     }
     /// <summary>
     /// 线下研修记录

+ 4 - 0
TEAMModelOS.SDK/Models/Cosmos/School/Debate.cs

@@ -37,6 +37,10 @@ namespace TEAMModelOS.SDK.Models
         /// 评论/话题的统一id,用于被关联
         /// </summary>
         public string comid { get; set; }
+        ///// <summary>
+        ///// 统一id集合。
+        ///// </summary>
+        //public string unionid { get; set; }
         /// <summary>
         /// 点赞数
         /// </summary>

+ 25 - 2
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -753,17 +753,31 @@ namespace TEAMModelOS.SDK
            
             }
             await foreach (var item in client.GetContainer("TEAMModelOS", "Normal")
-                .GetItemQueryIterator<Ability>(queryText: $"select c.id,c.name,c.currency,c.no,c.dimension,c.hour,c.stds,c.abilityCount from c {insql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Ability-{area.standard}") }))
+                .GetItemQueryIterator<Ability>(queryText: $"select c.comid, c.id,c.name,c.currency,c.no,c.dimension,c.hour,c.stds,c.abilityCount from c {insql} ", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Ability-{area.standard}") }))
             {
                 abilities.Add(item);
 
             }
+            List<Debate> debates= new List<Debate>();
+            if (abilities.IsNotEmpty()) {
+                await foreach (var item in client.GetContainer("TEAMModelOS", "School")
+                .GetItemQueryIterator<Debate>(queryText: $"select distinct value(c) from c join b in  c.replies  where b.tmdid='{_tmdid}'and  c.source='uploadscore' and c.comid in ({string.Join(",", abilities.Select(o => $"'{o.comid}'"))})",
+                requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Debate-{_school}") }))
+                {
+                    debates.Add(item);
+                }
+            }
             Currency currency= new Currency();
             Currency currencyAll = new Currency();
+
+
             abilitySubs.ForEach(item => {
                 int currencyInt = item.from == 1 ? 1 : 0;
                 Ability ability = abilities.Find(x=>x.id.Equals(item.id));
                 if (ability != null) {
+
+                  
+
                     if (ability != null)
                     {
                         currencyInt = item.from == 0 ? ability.currency : 1;
@@ -804,8 +818,17 @@ namespace TEAMModelOS.SDK
                     }
 
                     List<TeacherHprecord> hprecords = new List<TeacherHprecord>();
+                    List<Debate> debateOrthers = debates.FindAll(x => x.comid.Equals(ability.comid));
+                    int debateOrther = -1;
+                    List<string> replyIds = new List<string>();
+                    if (debateOrthers.IsNotEmpty()) {
+                        debateOrther = debateOrthers.Count;
+                        debateOrthers.SelectMany(x => x.replies).Where(z => z.tmdid.Equals()){ 
+                        }
+                    }
                     TeacherAbility teacherAbility = new Models.TeacherAbility
                     {
+                        debateOrther = debateOrther,
                         id = ability.id,
                         currency = currencyInt,
                         no = ability.no,
@@ -818,7 +841,7 @@ namespace TEAMModelOS.SDK
 
                     if (file != null)
                     {
-                        long view = 0;
+                        double view = 0;
                         file.fileRecords.ForEach(record => {
                             var abilityVideo = record.files.FindAll(x => x.abilityId.Equals(item.id));
                             if (abilityVideo.IsNotEmpty())

+ 19 - 14
TEAMModelOS/Controllers/Research/AbilitySubController.cs

@@ -834,27 +834,28 @@ namespace TEAMModelOS.Controllers
                         try
                         {
                             teacherFile = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemAsync<TeacherFile>($"{_tmdid}", new PartitionKey($"TeacherFile-{_school}"));
-                            fileRcds.ForEach(fileRcd => {
+                            fileRcds.ForEach(fileRcd =>
+                            {
                                 var file = teacherFile.fileRecords.Find(x => x.hash.Equals(fileRcd.hash));
                                 if (file != null)
                                 {
                                     file.hash = fileRcd.hash;
                                     file.view = fileRcd.view;
                                     file.done = fileRcd.done;
-                                    FileAbility ability = file.files.Find(x => x.abilityId.Equals(fileRcd.abilityId) 
-                                    && x.url.Equals(fileRcd.url)&& x.taskId.Equals(fileRcd.taskId) 
-                                    && x.nodeId.Equals(fileRcd.nodeId));
+                                    FileAbility ability = file.files.Find(x => x.abilityId.Equals(fileRcd.abilityId)
+                                    && x.url.Equals(fileRcd.url) && x.taskId.Equals(fileRcd.taskId)
+                                    && x.nodeId.Equals(fileRcd?.nodeId));
                                     if (ability != null)
                                     {
                                         ability.url = fileRcd.url;
                                         ability.abilityId = fileRcd.abilityId;
                                         ability.taskId = fileRcd.taskId;
                                         ability.nodeId = fileRcd.nodeId;
-                                       
+
                                     }
                                     else
                                     {
-                                        file.files.Add(new FileAbility { url = fileRcd.url, abilityId = fileRcd.abilityId, taskId = fileRcd.taskId, nodeId = fileRcd.nodeId,  });
+                                        file.files.Add(new FileAbility { url = fileRcd.url, abilityId = fileRcd.abilityId, taskId = fileRcd.taskId, nodeId = fileRcd.nodeId, });
                                     }
                                 }
                                 else
@@ -866,8 +867,8 @@ namespace TEAMModelOS.Controllers
                                         duration = fileRcd.duration,
                                         view = fileRcd.view,
                                         type = fileRcd.type,
-                                      done = fileRcd.done,
-                                    files = new List<FileAbility> { new FileAbility { url = fileRcd.url, abilityId = fileRcd.abilityId, taskId = fileRcd.taskId, nodeId = fileRcd.nodeId,  } }
+                                        done = fileRcd.done,
+                                        files = new List<FileAbility> { new FileAbility { url = fileRcd.url, abilityId = fileRcd.abilityId, taskId = fileRcd.taskId, nodeId = fileRcd.nodeId, } }
                                     });
                                 }
                             });
@@ -875,15 +876,16 @@ namespace TEAMModelOS.Controllers
                         }
                         catch (CosmosException)
                         {
-                            fileRcds.ForEach(fileRcd => {
+                            fileRcds.ForEach(fileRcd =>
+                            {
                                 teacherFile = new TeacherFile
                                 {
                                     pk = "TeacherFile",
                                     id = $"{_tmdid}",
                                     code = $"TeacherFile-{_school}",
-                                    fileRecords = new List<FileRecord> 
+                                    fileRecords = new List<FileRecord>
                                     {
-                                        new FileRecord 
+                                        new FileRecord
                                         {
                                             hash= fileRcd.hash,
                                             size=fileRcd.size,
@@ -892,12 +894,15 @@ namespace TEAMModelOS.Controllers
                                             type=fileRcd.type,
                                             done=fileRcd.done,
                                             files= new List<FileAbility> { new FileAbility { url=fileRcd.url,abilityId=fileRcd.abilityId,taskId=fileRcd.taskId,nodeId=fileRcd.nodeId} }
-                                        } 
+                                        }
                                     },
                                 };
                             });
                             await client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync<TeacherFile>(teacherFile, new PartitionKey($"TeacherFile-{_school}"));
                         }
+                        catch (Exception ex ){
+                            return BadRequest();
+                        }
                         if (fileRcds.Exists(x => x.type.Equals("video"))) {
                             await StatisticsService.SendServiceBus( ($"{standard}",new List<string> { $"{_tmdid}" }, $"{_school}", new List<string> { StatisticsService.TeacherAbility },0) , _configuration, _serviceBus, client);
                         }
@@ -916,7 +921,7 @@ namespace TEAMModelOS.Controllers
                         }
                         catch (Exception ex)
                         {
-
+                            return BadRequest(ex);
                         }
                         return Ok(new { status, files=_files });
                     case "ReadSelfVideoRcd":
@@ -938,7 +943,7 @@ namespace TEAMModelOS.Controllers
 
                             foreach (var abid in abilityIds) {
                                var record= teacherFilercd.fileRecords.FindAll(x => x.files.Where(y => y.abilityId.Equals(abid)).Count() > 0);
-                                long  view = 0;
+                                double  view = 0;
                                 List<dynamic> urls = new List<dynamic>();
                                 record.ForEach(x => {
                                     var file= x.files.FindAll(y => y.abilityId.Equals($"{abid}"));