Преглед изворни кода

调整servicebus发送消息。

CrazyIter_Bin пре 3 година
родитељ
комит
c7c50d9b98

+ 7 - 8
TEAMModelFunction/TriggerExamLite.cs

@@ -5,6 +5,7 @@ using Microsoft.Azure.Documents;
 using Microsoft.Extensions.Configuration;
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using TEAMModelOS.SDK;
@@ -88,10 +89,9 @@ namespace TEAMModelFunction
                             // (List<TmdInfo> tmdInfos, List<ClassListInfo> classInfos) = await TriggerStuActivity.GetTchList(client, _dingDing, ids, $"{school}");
                             //(List<TmdInfo> tchList, _) = await TriggerStuActivity.GetTchList(client, _dingDing, lite.tchLists, lite.school);
                             List<StuActivity> tchActivities = new List<StuActivity>();
-
-                            List<Task> bustasks = new List<Task>();
                             if (tchList.IsNotEmpty())
                             {
+                                List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
                                 School school = null;
                                 if (string.IsNullOrEmpty(lite.school))
                                 {
@@ -120,11 +120,14 @@ namespace TEAMModelFunction
                                         classIds = lite.tchLists
                                     });
                                     if (school != null)
-                                    {
-                                        bustasks.Add(StatisticsService.SendServiceBus($"{school.standard}", $"{x.id}", $"{lite.school}", StatisticsService.TeacherExamLite, 1, _configuration, _serviceBus));
+                                    {   
+                                        //TeacherExamLite
+                                        list.Add((school.standard,x.id,school.id,new List<string> { StatisticsService.TeacherExamLite },0));
                                     }
                                 });
+                                await StatisticsService.SendServiceBus(list,  _configuration, _serviceBus);
                             }
+
                             await ActivityService.SaveStuActivity(client, _dingDing, null, null, tchActivities);
                             var messageWorkEnd = new ServiceBusMessage(new { id = input.Id, progress = "finish", code = tdata.code }.ToJsonString());
                             messageWorkEnd.ApplicationProperties.Add("name", "ExamLite");
@@ -147,10 +150,6 @@ namespace TEAMModelFunction
                                 };
                                 await _azureStorage.Save<ChangeRecord>(changeRecord);
                             }
-                            if (bustasks.IsNotEmpty())
-                            {
-                                await Task.WhenAll(bustasks);
-                            }
                             break;
                         case "finish":
                             break;

+ 9 - 7
TEAMModelFunction/TriggerStudy.cs

@@ -5,6 +5,7 @@ using Microsoft.Azure.Documents;
 using Microsoft.Extensions.Configuration;
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using TEAMModelOS.SDK;
@@ -86,9 +87,10 @@ namespace TEAMModelFunction
                             // (List<TmdInfo> tmdInfos, List<ClassListInfo> classInfos) = await TriggerStuActivity.GetTchList(client, _dingDing, ids, $"{school}");
                             //(List<TmdInfo> tchList, _) = await TriggerStuActivity.GetTchList(client, _dingDing, study.tchLists, study.school);
                             List<StuActivity> tchActivities = new List<StuActivity>();
-                            List<Task> bustasks = new List<Task>();
                             if (tchList.IsNotEmpty())
                             {
+                                List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
+
                                 School school = null;
                                 if (string.IsNullOrEmpty(study.school))
                                 {
@@ -117,10 +119,13 @@ namespace TEAMModelFunction
                                         taskStatus = -1,
                                         classIds = study.tchLists
                                     });
-                                    if (school != null) {
-                                        bustasks.Add(StatisticsService.SendServiceBus($"{school.standard}", $"{x.id}", $"{study.school}", StatisticsService.OfflineRecord, 1, _configuration, _serviceBus));
+                                    if (school != null)
+                                    {
+                                        //TeacherExamLite
+                                        list.Add((school.standard, x.id, school.id, new List<string> { StatisticsService.OfflineRecord }, 0));
                                     }
                                 });
+                                await StatisticsService.SendServiceBus(list, _configuration, _serviceBus);
                             }
                             await ActivityService.SaveStuActivity(client, _dingDing, null, null, tchActivities);
                             var messageWorkEnd = new ServiceBusMessage(new { id = input.Id, progress = "finish", code = tdata.code }.ToJsonString());
@@ -144,10 +149,7 @@ namespace TEAMModelFunction
                                 };
                                 await _azureStorage.Save<ChangeRecord>(changeRecord);
                             }
-                            if (bustasks.IsNotEmpty())
-                            {
-                                await Task.WhenAll(bustasks);
-                            }
+                            
                            
                             break;
                         case "finish":

+ 10 - 11
TEAMModelFunction/TriggerSurvey.cs

@@ -20,6 +20,7 @@ using TEAMModelOS.SDK.Module.AzureBlob.Configuration;
 using TEAMModelOS.SDK.Models.Service;
 using HTEXLib.COMM.Helpers;
 using Microsoft.Extensions.Configuration;
+using System.Linq;
 
 namespace TEAMModelFunction
 {
@@ -154,9 +155,10 @@ namespace TEAMModelFunction
                             (List<RMember> tchList, List<RGroupList> classInfos) = await GroupListService.GetStutmdidListids(client, _dingDing, survey.tchLists, survey.school,ps);
                             // (List<TmdInfo> tmdInfos, List<ClassListInfo> classInfos) = await TriggerStuActivity.GetTchList(client, _dingDing, ids, $"{school}");
                             //(List<TmdInfo> tchList, _) = await TriggerStuActivity.GetTchList(client, _dingDing, survey.tchLists, survey.school);
-                            List<Task> bustasks = new List<Task>();
                             if (tchList.IsNotEmpty())
                             {
+                                List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
+
                                 School school = null;
                                 if (string.IsNullOrEmpty(survey.school))
                                 {
@@ -183,12 +185,13 @@ namespace TEAMModelFunction
                                         createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
                                         taskStatus = -1,
                                         classIds = survey.tchLists
-                                    });
-                                   if (school != null)
-                                   {
-                                        bustasks.Add(StatisticsService.SendServiceBus($"{school.standard}", $"{x.id}", $"{survey.school}", StatisticsService.TeacherSurvey, 0, _configuration, _serviceBus));
-                                   }
-                               });
+                                    }); if (school != null)
+                                    {
+                                        //TeacherExamLite
+                                        list.Add((school.standard, x.id, school.id, new List<string> { StatisticsService.TeacherSurvey }, 0));
+                                    }
+                                });
+                                await StatisticsService.SendServiceBus(list, _configuration, _serviceBus);
                             }
                             await ActivityService.SaveStuActivity(client, _dingDing, stuActivities, tmdActivities, tchActivities);
                             //向学生或醍摩豆账号发起通知
@@ -240,10 +243,6 @@ namespace TEAMModelFunction
 #if DEBUG
                             await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}问卷调查{tdata.id}将于:{tdata.etime}完成并结算!", GroupNames.成都开发測試群組);
 #endif
-                            if (bustasks.IsNotEmpty())
-                            {
-                                await Task.WhenAll(bustasks);
-                            }
                             break;
                         case "finish":
 #if DEBUG

+ 4 - 6
TEAMModelFunction/TriggerVote.cs

@@ -161,9 +161,10 @@ namespace TEAMModelFunction
                             }
                             (List<RMember> tchList, List<RGroupList> classInfos) = await GroupListService.GetStutmdidListids(client, _dingDing, vote.tchLists, vote.school,ps);
 
-                            List<Task> bustasks = new List<Task>(); 
                             if (tchList.IsNotEmpty())
                             {
+                                List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
+
                                 School school = null;
                                 if (string.IsNullOrEmpty(vote.school))
                                 {
@@ -192,9 +193,10 @@ namespace TEAMModelFunction
                                     });
                                     if (school != null)
                                     {
-                                        bustasks.Add(StatisticsService.SendServiceBus($"{school.standard}", $"{x.id}", $"{vote.school}", StatisticsService.TeacherVote, 0, _configuration, _serviceBus));
+                                        list.Add((school.standard, x.id, school.id, new List<string> { StatisticsService.TeacherVote }, 0));
                                     }
                                 });
+                                await StatisticsService.SendServiceBus(list, _configuration, _serviceBus);
                             }
                             await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}投票活动,:教研组活动:" +
                              
@@ -248,10 +250,6 @@ namespace TEAMModelFunction
 #if DEBUG
                             await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")}投票活动{tdata.id}将于:{tdata.etime}完成并结算!", GroupNames.成都开发測試群組);
 #endif
-                            if (bustasks.IsNotEmpty())
-                            {
-                                await Task.WhenAll(bustasks);
-                            }
                             break;
                         case "finish":
 #if DEBUG

+ 22 - 14
TEAMModelOS.SDK/Models/Service/StatisticsService.cs

@@ -45,20 +45,28 @@ namespace TEAMModelOS.SDK
         /// </summary>
         public const string TeacherExamLite = "TeacherExamLite";
 
-        public static async Task SendServiceBus(string standard,string tmdid,string school,string update,int statistics, IConfiguration _configuration, AzureServiceBusFactory _serviceBus) {
-
-            TeacherTrainChange change = new TeacherTrainChange
-            {
-                standard = standard,
-                tmdid =tmdid,
-                school =school,
-                update = new HashSet<string>(new List<string> { update }),
-                statistics = statistics
-            };
-            var messageChange = new ServiceBusMessage(change.ToJsonString());
-            messageChange.ApplicationProperties.Add("name", "TeacherTrainChange");
-            var ActiveTask = _configuration.GetValue<string>("Azure:ServiceBus:ActiveTask");
-            await _serviceBus.GetServiceBusClient().SendMessageAsync(ActiveTask, messageChange);
+        public static async Task SendServiceBus(List<(string standard, string tmdid, string school, List<string> update, int statistics)> list, IConfiguration _configuration, AzureServiceBusFactory _serviceBus) {
+            List<ServiceBusMessage> serviceBusMessages = new List<ServiceBusMessage>();
+            list.ForEach(x => {
+                if (x.update.IsNotEmpty()) {
+                    TeacherTrainChange change = new TeacherTrainChange
+                    {
+                        standard = x.standard,
+                        tmdid = x.tmdid,
+                        school = x.school,
+                        update = new HashSet<string>(x.update),
+                        statistics = x.statistics
+                    };
+                    var messageChange = new ServiceBusMessage(change.ToJsonString());
+                    messageChange.ApplicationProperties.Add("name", "TeacherTrainChange");
+                    serviceBusMessages.Add(messageChange);
+                }
+            });
+            if (serviceBusMessages.IsNotEmpty()) {
+                var ActiveTask = _configuration.GetValue<string>("Azure:ServiceBus:ActiveTask");
+                await _serviceBus.GetServiceBusClient().SendBatchMessageAsync(ActiveTask, serviceBusMessages);
+            }
+           
         }
 
         public static async Task GetAreaAndAreaSetting(  string schoolId, string _standard, CosmosClient client, HttpContext httpContext)

+ 1 - 1
TEAMModelOS/Controllers/Common/ExamLiteController.cs

@@ -142,7 +142,7 @@ namespace TEAMModelOS.Controllers.Common
                     await client.GetContainer("TEAMModelOS", "Common").ReplaceItemAsync(trExam, trExam.id, new PartitionKey($"{trExam.code}"));
                     if (!string.IsNullOrEmpty(standard) && !string.IsNullOrEmpty(school))
                     {
-                        await StatisticsService.SendServiceBus($"{standard}", $"{userid}", $"{school}", StatisticsService.TeacherExamLite, 1, _configuration, _serviceBus);
+                        await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)>() { ($"{standard}", $"{userid}", $"{school}", new List<string>() { StatisticsService.TeacherExamLite }, 1) }, _configuration, _serviceBus);
                     }
                 }
                 else

+ 2 - 2
TEAMModelOS/Controllers/Common/HomeworkController.cs

@@ -668,7 +668,7 @@ namespace TEAMModelOS.Controllers.Learn
                                         {
                                            
                                         }
-                                        await StatisticsService.SendServiceBus($"{standard}", $"{one.id}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
+                                        await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)>() { ($"{standard}", $"{one.id}", $"{school}", new List<string>() { StatisticsService.TeacherClass }, 1) }, _configuration, _serviceBus);
                                         
                                     }
                                 }
@@ -739,7 +739,7 @@ namespace TEAMModelOS.Controllers.Learn
                                 }
                                 if (content.Exists(x => x.prime == true))
                                 {
-                                    await StatisticsService.SendServiceBus($"{standard}", $"{userid}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
+                                    await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)>() { ($"{standard}", $"{userid}", $"{school}", new List<string>() { StatisticsService.TeacherClass }, 1) }, _configuration, _serviceBus);
                                 }
                             }
                             return Ok(new { msgid, taskStatus });

+ 7 - 94
TEAMModelOS/Controllers/Common/StudyController.cs

@@ -441,6 +441,7 @@ namespace TEAMModelOS.Controllers.Common
                 List<Task<ItemResponse<StudyRecord>>> tasky = new();
                 List<(string op, string tId)> opp = new List<(string op, string tId)>();
                 int statu = type.GetInt32();
+                List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
                 foreach (var aId in acId)
                 {
                     foreach (KeyValuePair<string, List<string>> pair in aId)
@@ -459,7 +460,8 @@ namespace TEAMModelOS.Controllers.Common
                                 {
                                     continue;
                                 }
-                                else {
+                                else
+                                {
                                     study.status = statu;
                                     study.aTime = now;
                                 }
@@ -477,15 +479,14 @@ namespace TEAMModelOS.Controllers.Common
                                 };
                                 tasky.Add(client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync(setting, new PartitionKey($"{setting.code}")));
                             }
-                            tasks.Add(StatisticsService.SendServiceBus($"{standard}", $"{teacId}", $"{school}", StatisticsService.OfflineRecord, 1, _configuration, _serviceBus));
+                            list.Add((($"{standard}", $"{teacId}", $"{school}", new List<string>() { StatisticsService.OfflineRecord }, 1)));
                         }
 
                     }
                 }
-                await Task.WhenAll(tasks);
                 await Task.WhenAll(tasky);
-                //await foreach (var s in AuditTask(acId, client, type.GetInt32(), now, standard, school)) ;
-                return Ok(new { code = HttpStatusCode.OK});
+                await StatisticsService.SendServiceBus(list, _configuration, _serviceBus);
+                return Ok(new { code = HttpStatusCode.OK });
             }
             catch (Exception ex)
             {
@@ -494,94 +495,6 @@ namespace TEAMModelOS.Controllers.Common
             }
 
         }
-        private async IAsyncEnumerable<(string op, string tId)> AuditTask(List<Dictionary<string, List<string>>> ids, CosmosClient client, int type, long now, object standard, string school)
-        {
-            List<Task> tasks = new();
-            List<Task<ItemResponse<StudyRecord>>> tasky = new();
-            foreach (var id in ids)
-            {
-                foreach (KeyValuePair<string, List<string>> pair in id)
-                {
-                    foreach (var teacId in pair.Value)
-                    {
-                        //var response = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemStreamAsync(pair.Key, new PartitionKey($"StudyRecord-{teacId}"));
-                        List<StudyRecord> studyRecords = new();
-                        await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<StudyRecord>(queryText: $"select value(c) from c where c.id = '{pair.Key}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"StudyRecord-{teacId}") }))
-                        {
-                            studyRecords.Add(item);
-                        }
-                        if (studyRecords.Count > 0)
-                        {
-
-                            if (studyRecords[0].tId.Equals(teacId))
-                            {
-                                studyRecords[0].status = type;
-                                studyRecords[0].aTime = now;
-                            }
-                            tasky.Add(client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync(studyRecords[0], studyRecords[0].id, new PartitionKey($"{studyRecords[0].code}")));
-                        }
-                        else
-                        {
-                            StudyRecord setting = new()
-                            {
-                                id = pair.Key,
-                                tId = teacId,
-                                code = "StudyRecord-" + teacId,
-                                status = type,
-                                aTime = now
-                            };
-                            tasky.Add(client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync(setting, new PartitionKey($"{setting.code}")));
-                        }
-                        tasks.Add(StatisticsService.SendServiceBus($"{standard}", $"{teacId}", $"{school}", StatisticsService.OfflineRecord, 1, _configuration, _serviceBus));
-                    }
-                    yield return ("", "");
-
-                }
-
-            }
-            await Task.WhenAll(tasks);
-            await Task.WhenAll(tasky);
-        }
-        private async IAsyncEnumerable<(string op, string tId)> TeacTask(string id,List<string> ids, CosmosClient client, int type, long now, object standard, string school)
-        {
-
-            List<Task> tasks = new();
-            foreach (var teacId in ids)
-            {
-                /* var response = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemStreamAsync(id, new PartitionKey($"StudyRecord-{teacId}"));*/
-                List<StudyRecord> studyRecords = new();
-                await foreach (var item in client.GetContainer("TEAMModelOS", "Teacher").GetItemQueryIterator<StudyRecord>(queryText: $"select value(c) from c where c.id = '{id}'", requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"StudyRecord-{teacId}") }))
-                {
-                    studyRecords.Add(item);
-                }
-                string op;
-                if (studyRecords.Count > 0)
-                {
-                    if (studyRecords[0].tId.Equals(teacId))
-                    {
-                        studyRecords[0].status = type;
-                        studyRecords[0].aTime = now;
-                    }
-                    op = "update";
-                    await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync(studyRecords[0], studyRecords[0].id, new PartitionKey($"{studyRecords[0].code}"));
-                }
-                else
-                {
-                    StudyRecord setting = new()
-                    {
-                        id = id,
-                        tId = teacId,
-                        code = "StudyRecord-" + teacId,
-                        status = type,
-                        aTime = now
-                    };
-                    op = "insert";
-                    await client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync(setting, new PartitionKey($"{setting.code}"));
-                }
-                tasks.Add(StatisticsService.SendServiceBus($"{standard}", $"{teacId}", $"{school}", StatisticsService.OfflineRecord, 1, _configuration, _serviceBus));
-                yield return (op, teacId);
-            }
-            await Task.WhenAll(tasks);
-        }
+         
     }
 }

+ 11 - 22
TEAMModelOS/Controllers/Research/AbilitySubController.cs

@@ -111,7 +111,7 @@ namespace TEAMModelOS.Controllers
                     }
                 }
                 if (!HttpContext.Items.TryGetValue("Standard", out object standard)) return BadRequest();
-                await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{school}", StatisticsService.TeacherAility,0, _configuration, _serviceBus);
+                await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{school}",new List<string> { StatisticsService.TeacherAility }, 0) }, _configuration, _serviceBus);
                 return Ok(new { abilityIds });
             }
             catch (Exception ex)
@@ -391,9 +391,10 @@ namespace TEAMModelOS.Controllers
 
                         abilitySubTasks.Add(client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync(sub, sub.id, new PartitionKey(sub.code)));
                     });
-                    List<Task> tasks = new List<Task>();
+                    List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
                     tmdids.ForEach(x => {
-                        tasks.Add(StatisticsService.SendServiceBus($"{standard}", $"{x}", $"{school}", StatisticsService.TeacherAility, 1, _configuration, _serviceBus));
+                        list.Add(($"{standard}", $"{x}", $"{school}", new List<string> { StatisticsService.TeacherAility }, 1));
+                        
                     });
                     int pagesize = 50;
                     if (abilitySubTasks.Count <= pagesize)
@@ -409,19 +410,7 @@ namespace TEAMModelOS.Controllers
                             await Task.WhenAll(lists);
                         }
                     }
-                    if (tasks.Count <= pagesize)
-                    {
-                        await Task.WhenAll(tasks);
-                    }
-                    else
-                    {
-                        int pages = (tasks.Count + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max;
-                        for (int i = 0; i < pages; i++)
-                        {
-                            var listssb = tasks.Skip((i) * pagesize).Take(pagesize).ToList();
-                            await Task.WhenAll(listssb);
-                        }
-                    }
+                    await StatisticsService.SendServiceBus(list, _configuration, _serviceBus);
                     return Ok(new { status = 200 });
                 }
             }
@@ -513,7 +502,7 @@ namespace TEAMModelOS.Controllers
                             abilitySub.exerciseScore = int.Parse($"{_exercise}");
                             await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<AbilitySub>(abilitySub, $"{_abilityId}", new PartitionKey(code));
                             status = 1;
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{_school}", StatisticsService.TeacherAility, 1, _configuration, _serviceBus);
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{_school}",new List<string> { StatisticsService.TeacherAility }, 1) }, _configuration, _serviceBus);
                             return Ok(new { status });
                         }
                         else
@@ -561,7 +550,7 @@ namespace TEAMModelOS.Controllers
                             abilitySub.selfTime = now;
                             await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<AbilitySub>(abilitySub, $"{_abilityId}", new PartitionKey(code));
                             status = 1;
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{_school}", StatisticsService.TeacherAility, 0, _configuration, _serviceBus);
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{_school}", new List<string> { StatisticsService.TeacherAility }, 0) }, _configuration, _serviceBus);
                         }
                         else
                         {
@@ -742,8 +731,8 @@ namespace TEAMModelOS.Controllers
                                     });
                                 }
                             }
-                            await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<AbilitySub>(abilitySub, $"{_abilityId}", new PartitionKey(code)); 
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{_school}", StatisticsService.TeacherAility, 1, _configuration, _serviceBus);
+                            await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<AbilitySub>(abilitySub, $"{_abilityId}", new PartitionKey(code));
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{_school}", new List<string> { StatisticsService.TeacherAility }, 1) }, _configuration, _serviceBus);
                             status = 1;
                         }
                         return Ok(new { status, abilitySub });
@@ -899,7 +888,7 @@ namespace TEAMModelOS.Controllers
                             await client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync<TeacherFile>(teacherFile, new PartitionKey($"TeacherFile-{_school}"));
                         }
                         if (fileRcds.Exists(x => x.type.Equals("video"))) {
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{_school}", StatisticsService.TeacherAility, 1, _configuration, _serviceBus);
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{_school}", new List<string> { StatisticsService.TeacherAility }, 1) }, _configuration, _serviceBus);
                         }
                         //获取视文件学习记录
                         List<dynamic> _files = new List<dynamic>();
@@ -948,7 +937,7 @@ namespace TEAMModelOS.Controllers
                                         urls.Add(new { ability = file, view = x.view, hash = x.hash, done = x.done });
                                     }
                                 });
-                                abilityFiles.Add(new { view, urls , abilityId= abid });
+                                abilityFiles.Add(new { view, abilityId= abid });
                             }
                             return Ok(new { status, files, abilityFiles });
                         } catch (Exception ex) { 

+ 1 - 1
TEAMModelOS/Controllers/Research/AppraiseController.cs

@@ -130,7 +130,7 @@ namespace TEAMModelOS.Controllers.Research
                         else {
                             await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<Appraise>(appraise, appraise.id, new PartitionKey(code));
                         }
-                        await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
+                        await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{school}", new List<string> { StatisticsService.TeacherClass }, 1) }, _configuration, _serviceBus);
                         return Ok(new { dimensions, score });
                     case bool when $"{_opt}".Equals("Comment", StringComparison.OrdinalIgnoreCase):
                         if (!request.TryGetProperty("comment", out JsonElement _comment)) return BadRequest();

+ 12 - 7
TEAMModelOS/Controllers/Research/ClassVideoController.cs

@@ -221,15 +221,21 @@ namespace TEAMModelOS.Controllers.Research
                 }
                 List<Task<ItemResponse<ClassVideo>>> teacherTrains = new List<Task<ItemResponse<ClassVideo>>>();
                 List<Task> tasks = new List<Task>();
+
+                List<(string standard, string tmdid, string school, List<string> update, int statistics)> list = new List<(string standard, string tmdid, string school, List<string> update, int statistics)>();
+                tmdids.ForEach(x => {
+                    
+
+                });
                 trains.ForEach(x => {
                     x.files.ForEach(y => { y.score = score; });
                     teacherTrains.Add(client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync(x, x.id, new PartitionKey(x.code)));
-                    tasks.Add(StatisticsService.SendServiceBus($"{standard}", $"{x.id}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus));
+                    list.Add(($"{standard}", $"{x.id}", $"{school}", new List<string> { StatisticsService.TeacherClass },0));
+                     
                 });
                 int pagesize = 50;
                 if (teacherTrains.Count <= pagesize)
                 {
-                    await Task.WhenAll(tasks);
                     await Task.WhenAll(teacherTrains);
                 }
                 else
@@ -238,11 +244,10 @@ namespace TEAMModelOS.Controllers.Research
                     for (int i = 0; i < pages; i++)
                     {
                         var lists = teacherTrains.Skip((i) * pagesize).Take(pagesize).ToList();
-                        var listssb = tasks.Skip((i) * pagesize).Take(pagesize).ToList();
                         await Task.WhenAll(lists);
-                        await Task.WhenAll(listssb);
                     }
                 }
+                await StatisticsService.SendServiceBus(list, _configuration, _serviceBus);
                 return Ok(new { status = 200 });
             }
             else
@@ -290,7 +295,7 @@ namespace TEAMModelOS.Controllers.Research
                             var fid= videoRd.files.Find(x => x.id.Equals($"{_videoId}"));
                             fid.score = int.Parse($"{_score}");
                             await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<ClassVideo>(videoRd,videoRd.id, new PartitionKey(code));
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{school}",new List<string> { StatisticsService.TeacherClass }, 1) }, _configuration, _serviceBus);
                             return Ok(new { status = 1 });
                         }
                         catch (CosmosException ex)
@@ -340,7 +345,7 @@ namespace TEAMModelOS.Controllers.Research
                                     await client.GetContainer("TEAMModelOS", "Teacher").CreateItemAsync<ClassVideo>(classVideo, new PartitionKey(code));
                                 }
                             }
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{school}", StatisticsService.TeacherClass, 1, _configuration, _serviceBus);
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{school}", new List<string> { StatisticsService.TeacherClass }, 0) }, _configuration, _serviceBus);
                             return Ok(new { classVideo });
                         }
                         else {
@@ -363,7 +368,7 @@ namespace TEAMModelOS.Controllers.Research
                                 });
                             }
                             await client.GetContainer("TEAMModelOS", "Teacher").ReplaceItemAsync<ClassVideo>(delvideo, $"{_tmdid}", new PartitionKey(code));
-                            await StatisticsService.SendServiceBus($"{standard}", $"{_tmdid}", $"{school}", StatisticsService.TeacherClass, 0, _configuration, _serviceBus);
+                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{_tmdid}", $"{school}", new List<string> { StatisticsService.TeacherClass }, 0) }, _configuration, _serviceBus);
                             //TODO同时删除话题和点评记录
                             return Ok(new { classVideo = delvideo });
                         }

+ 2 - 2
TEAMModelOS/Services/Common/ActivityStudentService.cs

@@ -179,7 +179,7 @@ namespace TEAMModelOS.Services.Common
                                     activity.taskStatus = taskStatus;
                                     await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, vote.id, new PartitionKey($"Activity-{userid}"));
                                     if (!string.IsNullOrEmpty(standard) && !string.IsNullOrEmpty(school)) {
-                                      await  StatisticsService.SendServiceBus($"{standard}", $"{userid}", $"{school}", StatisticsService.TeacherVote, 1, _configuration, _serviceBus);
+                                      await  StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{userid}", $"{school}", new List<string> { StatisticsService.TeacherVote }, 0) }, _configuration, _serviceBus);
                                     }
                                 }
                                 catch(CosmosException cosex) {
@@ -719,7 +719,7 @@ namespace TEAMModelOS.Services.Common
                                         await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<StuActivity>(activity, survey.id, new PartitionKey($"Activity-{userid}"));
                                         if (!string.IsNullOrEmpty(standard) && !string.IsNullOrEmpty(school))
                                         {
-                                            await StatisticsService.SendServiceBus($"{standard}", $"{userid}", $"{school}", StatisticsService.TeacherSurvey, 1, _configuration, _serviceBus);
+                                            await StatisticsService.SendServiceBus(new List<(string standard, string tmdid, string school, List<string> update, int statistics)> { ($"{standard}", $"{userid}", $"{school}", new List<string> { StatisticsService.TeacherSurvey }, 0) }, _configuration, _serviceBus);
                                         }
                                     } catch (CosmosException cosex) {
                                         if (cosex.Status == 404) {