瀏覽代碼

名单变更逻辑优化,中间件新增科目信息

zhouj1203@hotmail.com 2 年之前
父節點
當前提交
4fb6b33c37

+ 47 - 113
TEAMModelOS.FunctionV4/ServiceBus/ActiveTaskTopic.cs

@@ -371,11 +371,12 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
         public async Task TeacherTrainChangeFunc([ServiceBusTrigger("%Azure:ServiceBus:ActiveTask%", "teacher-train-change", Connection = "Azure:ServiceBus:ConnectionString")] string msg)
         {
             var client = _azureCosmos.GetCosmosClient();
-            var  data =   msg.ToObject<TeacherTrainChangeMsg>();
+            var data = msg.ToObject<TeacherTrainChangeMsg>();
             List<TeacherTrain> trains = new List<TeacherTrain>();
             //redis锁
-            bool lockKey=  await _azureRedis.GetRedisClient(8).KeyExistsAsync($"Train:Statistics:Lock:{data.areaId}");
-            if (!lockKey) {
+            bool lockKey = await _azureRedis.GetRedisClient(8).KeyExistsAsync($"Train:Statistics:Lock:{data.areaId}");
+            if (!lockKey)
+            {
                 await _azureRedis.GetRedisClient(8).SetAddAsync($"Train:Statistics:Lock:{data.areaId}", new RedisValue(data.areaId));
                 DateTime minutes = DateTime.UtcNow.AddMinutes(15);   //15分钟 
                 await _azureRedis.GetRedisClient(8).KeyExpireAsync($"Train:Statistics:Lock:{data.areaId}", minutes);
@@ -412,8 +413,9 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                     {
                         studies.Add(item);
                     }
-                    if (school.teachers.Any()) {
-                        string trainSql = $"select value(c) from c where c.id in ({string.Join(",", school.teachers.Select(x =>$"'{x}'"))}) ";
+                    if (school.teachers.Any())
+                    {
+                        string trainSql = $"select value(c) from c where c.id in ({string.Join(",", school.teachers.Select(x => $"'{x}'"))}) ";
                         await foreach (var item in client.GetContainer("TEAMModelOS", Constant.Teacher)
                       .GetItemQueryIterator<TeacherTrain>(queryText: trainSql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"TeacherTrain-{school.school}") }))
                         {
@@ -425,7 +427,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                 area.updateTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                 await client.GetContainer(Constant.TEAMModelOS, "Normal").ReplaceItemAsync<Area>(area, $"{data.areaId}", new PartitionKey("Base-Area"));
             }
-            
+
         }
 
         /// <param name="msg"></param>
@@ -811,118 +813,51 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                             StudyRecord record = json.ToObject<StudyRecord>();
                             if (record.status == 1)
                             {
-                                if (!string.IsNullOrEmpty(study.workId))
+                                var start = DateTimeHelper.FromUnixTimestamp(study.startTime).ToString("yyyy/MM/dd");
+                                var end = DateTimeHelper.FromUnixTimestamp(study.endTime).ToString("yyyy/MM/dd");
+                                string tname = string.Empty;
+                                List<string> setName = new();
+                                foreach (string setting in study.settings)
                                 {
-                                    var response = await client.GetContainer("TEAMModelOS", "Teacher").ReadItemStreamAsync(study.workId, new PartitionKey($"HomeworkRecord-{id}"));
-                                    if (response.Status == 200)
+                                    if (setting.Equals("sign"))
                                     {
-                                        var start = DateTimeHelper.FromUnixTimestamp(study.startTime).ToString("yyyy/MM/dd");
-                                        var end = DateTimeHelper.FromUnixTimestamp(study.endTime).ToString("yyyy/MM/dd");
-                                        string tname = string.Empty;
-                                        List<string> setName = new();
-                                        foreach (string setting in study.settings)
-                                        {
-                                            if (setting.Equals("sign"))
-                                            {
-                                                setName.Add("扫码签到");
-                                            }
-                                            else if (setting.Equals("hw"))
-                                            {
-                                                setName.Add("作业提交");
-                                            }
-                                            else if (setting.Equals("survey"))
-                                            {
-                                                setName.Add("问卷反馈");
-                                            }
-                                            else if (setting.Equals("exam"))
-                                            {
-                                                setName.Add("评测活动");
-                                            }
-                                        }
-                                        switch (study.type)
-                                        {
-                                            case 1:
-                                                tname = "信息化教学案例展示与分享";
-                                                break;
-                                            case 2:
-                                                tname = "专家专题培训";
-                                                break;
-                                            case 3:
-                                                tname = "同课同构";
-                                                break;
-                                            case 4:
-                                                tname = "同课异构";
-                                                break;
-                                            case 5:
-                                                tname = "校本2.0培训";
-                                                break;
-                                            case 6:
-                                                tname = "自定义活动";
-                                                break;
-                                        };
-                                        stringBuilder.Append($@"<tr>
-                                                        <td> {study.topic} </td>
-                                                        <td> {tname} </td >
-                                                        <td> {study.hour} </td >
-                                                        <td> {study.hour} </td >
-                                                        <td> {start} 到 {end} </td>
-                                                        <td>{study.desc}</td>
-                                                        <td> {string.Join("、", setName.Select(x => $"{x}\n"))} </td>
-                                                        <td> 已完成 </td >
-                                                    </tr> ");
+                                        setName.Add("扫码签到");
                                     }
-                                    else
+                                    else if (setting.Equals("hw"))
                                     {
-                                        continue;
+                                        setName.Add("作业提交");
                                     }
-                                }
-                                else
-                                {
-                                    var start = DateTimeHelper.FromUnixTimestamp(study.startTime).ToString("yyyy/MM/dd");
-                                    var end = DateTimeHelper.FromUnixTimestamp(study.endTime).ToString("yyyy/MM/dd");
-                                    string tname = string.Empty;
-                                    List<string> setName = new();
-                                    foreach (string setting in study.settings)
+                                    else if (setting.Equals("survey"))
                                     {
-                                        if (setting.Equals("sign"))
-                                        {
-                                            setName.Add("扫码签到");
-                                        }
-                                        else if (setting.Equals("hw"))
-                                        {
-                                            setName.Add("作业提交");
-                                        }
-                                        else if (setting.Equals("survey"))
-                                        {
-                                            setName.Add("问卷反馈");
-                                        }
-                                        else if (setting.Equals("exam"))
-                                        {
-                                            setName.Add("评测活动");
-                                        }
+                                        setName.Add("问卷反馈");
                                     }
-                                    switch (study.type)
+                                    else if (setting.Equals("exam"))
                                     {
-                                        case 1:
-                                            tname = "信息化教学案例展示与分享";
-                                            break;
-                                        case 2:
-                                            tname = "专家专题培训";
-                                            break;
-                                        case 3:
-                                            tname = "同课同构";
-                                            break;
-                                        case 4:
-                                            tname = "同课异构";
-                                            break;
-                                        case 5:
-                                            tname = "校本2.0培训";
-                                            break;
-                                        case 6:
-                                            tname = "自定义活动";
-                                            break;
-                                    };
-                                    stringBuilder.Append($@"<tr>
+                                        setName.Add("评测活动");
+                                    }
+                                }
+                                switch (study.type)
+                                {
+                                    case 1:
+                                        tname = "信息化教学案例展示与分享";
+                                        break;
+                                    case 2:
+                                        tname = "专家专题培训";
+                                        break;
+                                    case 3:
+                                        tname = "同课同构";
+                                        break;
+                                    case 4:
+                                        tname = "同课异构";
+                                        break;
+                                    case 5:
+                                        tname = "校本2.0培训";
+                                        break;
+                                    case 6:
+                                        tname = "自定义活动";
+                                        break;
+                                };
+                                stringBuilder.Append($@"<tr>
                                                         <td> {study.topic} </td>
                                                         <td> {tname} </td >
                                                         <td> {study.hour} </td >
@@ -932,7 +867,6 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                                                         <td> {string.Join("、", setName.Select(x => $"{x}\n"))} </td>
                                                         <td> 已完成 </td >
                                                     </tr> ");
-                                }
                             }
                             else
                             {
@@ -1313,7 +1247,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                         {
                             //更新课堂时长
                             case "up-duration":
-                                double.TryParse($"{update.data}",out double duration);
+                                double.TryParse($"{update.data}", out double duration);
                                 lessonRecord.duration = duration;
                                 msgs.Add(update);
                                 try
@@ -2276,7 +2210,7 @@ namespace TEAMModelOS.FunctionV4.ServiceBus
                 {
                     var db = _azureCosmos.GetCosmosClient();
                     foreach (var stu in stus.EnumerateArray())
-                    {                        
+                    {
                         await foreach (Response item in db.GetContainer(Constant.TEAMModelOS, Constant.Student).GetItemQueryStreamIterator(
                             queryText: $"SELECT TOP 1 * FROM c WHERE c.stuid = '{stu.GetString()}'",
                             requestOptions: new() { PartitionKey = new($"Imei") }))

+ 2 - 0
TEAMModelOS.SDK/Models/Cosmos/Common/MQActivity.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Text;
+using System.Text.Json;
 using TEAMModelOS.SDK.Models;
 
 namespace TEAMModelOS.SDK.Models
@@ -25,6 +26,7 @@ namespace TEAMModelOS.SDK.Models
         public long startTime { get; set; }
         public long endTime { get; set; }
         public string source { get; set; }
+        public List<JsonElement> targets { get; set; } = new List<JsonElement>();
 
     }
     public class Sub { 

+ 19 - 5
TEAMModelOS.SDK/Models/Service/ActivityService.cs

@@ -23,7 +23,7 @@ namespace TEAMModelOS.SDK
         {
             try
             {
-                var query = $"SELECT distinct c.owner, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime   FROM c  " +
+                var query = $"SELECT distinct c.owner, c.id,c.code, c.classes,c.stuLists,c.subjects,c.progress,c.scope,c.startTime,c.school,c.creatorId,c.name,c.pk ,c.endTime,c.targets   FROM c  " +
                     $"where (c.status<>404 or IS_DEFINED(c.status) = false ) and  c.pk='{type}' " +
                     $" and (( array_contains(c.classes,'{groupChange.listid}')) or ( array_contains(c.stuLists,'{groupChange.listid}'))or ( array_contains(c.tchLists,'{groupChange.listid}')))";
                 //$"and A1 in('{groupChange.listid}') ";
@@ -68,6 +68,20 @@ namespace TEAMModelOS.SDK
                 long nowtime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                 foreach (MQActivity activity in datas)
                 {
+                    List<string> sub = new();
+                    if (!type.Equals("Exam")) {
+                        if (activity.targets.Count > 0)
+                        {
+                            foreach (var course in activity.targets)
+                            {
+                                var info = course.ToObject<List<string>>();
+                                if (info.Count > 1)
+                                {
+                                    sub.Add(info[0]);
+                                }
+                            }
+                        }                     
+                    }
                     //已经完结的不再允许加入,还未开始的。
                     if (string.IsNullOrEmpty(activity.progress) || activity.progress.Equals("finish") || activity.progress.Equals("pending"))
                     {
@@ -112,14 +126,14 @@ namespace TEAMModelOS.SDK
                             scode = activity.code,
                             name = activity.name,
                             source = type.Equals("Exam") ? info.source :"",
-                            ext = type.Equals("Exam") ? new Dictionary<string, JsonElement>() { { "type", info.type.ToJsonString().ToObject<JsonElement>() }, { "subjects", info.subjects.ToJsonString().ToObject<JsonElement>() } } : new Dictionary<string, JsonElement>(),
+                            ext = type.Equals("Exam") ? new Dictionary<string, JsonElement>() { { "type", info.type.ToJsonString().ToObject<JsonElement>() } } : new Dictionary<string, JsonElement>(),
                             code = $"Activity-{member.code.Replace("Base-", "")}-{member.id}",
                             scope = activity.scope,
                             school = activity.school,
                             creatorId = activity.creatorId,
                             pk = "Activity",
                             type = type,
-                            subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : new List<string>() { "" },
+                            subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : sub,
                             startTime = activity.startTime,
                             endTime = activity.endTime,
                             blob = activity.blob,
@@ -141,14 +155,14 @@ namespace TEAMModelOS.SDK
                             scode = activity.code,
                             name = activity.name,
                             source = type.Equals("Exam") ? info.source : "",
-                            ext = type.Equals("Exam") ? new Dictionary<string, JsonElement>() { { "type", info.type.ToJsonString().ToObject<JsonElement>() }, { "subjects", info.subjects.ToJsonString().ToObject<JsonElement>() } } : new Dictionary<string, JsonElement>(),
+                            ext = type.Equals("Exam") ? new Dictionary<string, JsonElement>() { { "type", info.type.ToJsonString().ToObject<JsonElement>() }} : new Dictionary<string, JsonElement>(),
                             code = $"Activity-{member.id}",
                             scope = activity.scope,
                             school = activity.school,
                             creatorId = activity.creatorId,
                             pk = "Activity",
                             type = type,
-                            subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : new List<string>() { "" },
+                            subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : sub,
                             startTime = activity.startTime,
                             endTime = activity.endTime,
                             blob = activity.blob,