Browse Source

处理中间表状态刷新的问题

zhouj1203@hotmail.com 3 years ago
parent
commit
e100897831
1 changed files with 43 additions and 43 deletions
  1. 43 43
      TEAMModelOS.SDK/Models/Service/ActivityService.cs

+ 43 - 43
TEAMModelOS.SDK/Models/Service/ActivityService.cs

@@ -316,6 +316,7 @@ namespace TEAMModelOS.SDK
             }
             if (activity != null)
             {
+                List<Task<ItemResponse<StuActivity>>> tasks = new List<Task<ItemResponse<StuActivity>>>();
                 List<string> classes = ExamService.getClasses(activity.classes, activity.stuLists);
                 (List<RMember> tmdIds, List<RGroupList> classLists) = await GroupListService.GetStutmdidListids(client, _dingDing, classes, activity.school);
                 var students = tmdIds.FindAll(x => x.type == 2);
@@ -324,58 +325,57 @@ namespace TEAMModelOS.SDK
                 {
                     foreach (RMember tmdid in tmdids)
                     {
-                        var stucourse = new StuActivity
-                        {
-                            id = activity.id,
-                            scode = activity.code,
-                            name = activity.name,
-                            code = $"Activity-{tmdid.id}",
-                            source = activity.source,
-                            scope = activity.scope,
-                            school = activity.school,
-                            creatorId = activity.creatorId,
-                            pk = "Activity",
-                            type = activity.pk,
-                            subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : new List<string>() { "" },
-                            startTime = activity.startTime,
-                            endTime = activity.endTime,
-                            blob = activity.blob,
-                            owner = activity.owner,
-                            createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
-                            taskStatus = -1,
-                            classIds = classes
-                        };
-                        await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
+                        var response = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemStreamAsync(activity.id, new PartitionKey($"Activity-{tmdid.id}"));
+                        if (response.Status == 200) {
+                            using var json = await JsonDocument.ParseAsync(response.ContentStream);
+                            StuActivity stu = json.ToObject<StuActivity>();
+                            stu.id = activity.id;
+                            stu.scode = activity.code;
+                            stu.name = activity.name;
+                            stu.source = activity.source;
+                            stu.scope = activity.scope;
+                            stu.school = activity.school;
+                            stu.creatorId = activity.creatorId;
+                            stu.type = activity.pk;
+                            stu.subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : new List<string>() { "" };
+                            stu.startTime = activity.startTime;
+                            stu.endTime = activity.endTime;
+                            stu.blob = activity.blob;
+                            stu.owner = activity.owner;
+                            stu.createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
+                            tasks.Add(client.GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync(stu,stu.id, new PartitionKey(stu.code)));
+                        }                                              
                     }
                 }
                 if (students.IsNotEmpty())
                 {
                     foreach (RMember student in students)
                     {
-                        var stucourse = new StuActivity
+                        var response = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemStreamAsync(activity.id, new PartitionKey($"Activity-{activity.school}-{student.id}"));
+                        if (response.Status == 200)
                         {
-                            id = activity.id,
-                            scode = activity.code,
-                            name = activity.name,
-                            code = $"Activity-{activity.school}-{student.id}",
-                            scope = activity.scope,
-                            source = activity.source,
-                            school = activity.school,
-                            creatorId = activity.creatorId,
-                            pk = "Activity",
-                            type = activity.pk,
-                            subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : new List<string>() { "" },
-                            startTime = activity.startTime,
-                            endTime = activity.endTime,
-                            blob = activity.blob,
-                            owner = activity.owner,
-                            createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
-                            taskStatus = -1,
-                            classIds = classes
-                        };
-                        await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
+                            using var json = await JsonDocument.ParseAsync(response.ContentStream);
+                            StuActivity stu = json.ToObject<StuActivity>();
+                            stu.id = activity.id;
+                            stu.scode = activity.code;
+                            stu.name = activity.name;
+                            stu.source = activity.source;
+                            stu.scope = activity.scope;
+                            stu.school = activity.school;
+                            stu.creatorId = activity.creatorId;
+                            stu.type = activity.pk;
+                            stu.subjects = activity.pk.ToLower().Equals("exam") && activity.subjects.IsNotEmpty() ? new List<string>() { activity.subjects[0].id } : new List<string>() { "" };
+                            stu.startTime = activity.startTime;
+                            stu.endTime = activity.endTime;
+                            stu.blob = activity.blob;
+                            stu.owner = activity.owner;
+                            stu.createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
+                            tasks.Add(client.GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync(stu, stu.id, new PartitionKey(stu.code)));
+                        }
+                        //await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync(stucourse, new PartitionKey(stucourse.code));
                     }
                 }
+                await Task.WhenAll(tasks);
             }
         }
     }