Forráskód Böngészése

更新代码解决离开名单触发相关活动列表结构。

CrazyIter_Bin 3 éve
szülő
commit
866bfae140

+ 1 - 0
BlobDownload/BlobDownload.csproj

@@ -6,6 +6,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Aspose.Slides.NET" Version="21.8.0" />
     <PackageReference Include="Azure.Storage.Blobs.Batch" Version="12.6.0" />
     <PackageReference Include="System.Drawing.Common" Version="5.0.2" />
   </ItemGroup>

+ 2 - 1
BlobDownload/Program.cs

@@ -20,7 +20,8 @@ namespace BlobDownload
         }
         static async Task Main(string[] args)
         {
-
+            var prs = new Aspose.Slides.Presentation(@"C:\Users\CrazyIter\Desktop\6.2.3平面图形的认识与测量(三)(3).pptx");
+            prs.Save(@"C:\Users\CrazyIter\Desktop\output.Gif", Aspose.Slides.Export.SaveFormat.Gif);
             string reg1 = "123aewe";
             string reg2 = "858";
             string reg3 = "858=";

+ 2 - 2
TEAMModelOS.SDK/Models/Service/StuListService.cs

@@ -23,7 +23,7 @@ namespace TEAMModelFunction
             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  where  c.pk='{type}' " +
-                    $" and (( array_contains(c.classes,'{stuListChange.listid}')) or ( array_contains(c.teachclasses,'{stuListChange.listid}')))";
+                    $" and (( array_contains(c.classes,'{stuListChange.listid}')) or ( array_contains(c.stuLists,'{stuListChange.listid}')))";
                     //$"and A1 in('{stuListChange.listid}') ";
                 List<MQActivity> datas = new List<MQActivity>();
                 if (stuListChange.scope.Equals("school", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(stuListChange.school)) {
@@ -42,7 +42,7 @@ namespace TEAMModelFunction
                     foreach (var techer in teachers) {
                         var queryTech = $"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 " +
                             $" where c.school='{stuListChange.school}'   and   c.pk='{type}'" +
-                            $" and (( array_contains(c.classes,'{stuListChange.listid}')) or ( array_contains(c.teachclasses,'{stuListChange.listid}')))";
+                            $" and (( array_contains(c.classes,'{stuListChange.listid}')) or ( array_contains(c.stuLists,'{stuListChange.listid}')))";
                       //  $" and A1 in('{stuListChange.listid}') ";
                         await foreach (var item in client.GetContainer("TEAMModelOS", "Common").GetItemQueryIterator<MQActivity>(queryText: queryTech,
                             requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"{type}-{techer.id}") }))

+ 12 - 1
TEAMModelOS.SDK/Models/Service/TmdUserService.cs

@@ -10,7 +10,7 @@ namespace TEAMModelOS.SDK
 {
     public class TmdUserService
     {
-        public async Task<TmdUser> JoinSchool(CosmosClient client, string tmdid,string picture,string name , string schoolId, string schoolName) {
+        public static async Task<TmdUser> JoinSchool(CosmosClient client, string tmdid,string picture,string name , string schoolId, string schoolName) {
             TmdUser tmdUser = null;
             try {
                 tmdUser= await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<TmdUser>(tmdid, partitionKey: new PartitionKey("Base"));
@@ -48,5 +48,16 @@ namespace TEAMModelOS.SDK
             }
             return tmdUser;
         }
+        public static async Task<TmdUser> LeaveSchool(CosmosClient client, string tmdid, string schoolId)
+        {
+            TmdUser tmdUser = await client.GetContainer(Constant.TEAMModelOS, "Student").ReadItemAsync<TmdUser>(tmdid, partitionKey: new PartitionKey("Base"));
+            var school = tmdUser.schools.Find(x => x.schoolId.Equals(schoolId));
+            if (school != null)
+            {
+                tmdUser.schools.Remove(school);
+                await client.GetContainer(Constant.TEAMModelOS, "Student").ReplaceItemAsync<TmdUser>(tmdUser, tmdid, partitionKey: new PartitionKey("Base"));
+            }
+            return tmdUser;
+        }
     }
 }

+ 66 - 6
TEAMModelOS/Controllers/School/CourseController.cs

@@ -651,7 +651,7 @@ namespace TEAMModelOS.Controllers
                                     //判断新增名单成员不在已经存在的名单
                                     foreach (var old in oldStu.students)
                                     {
-                                        if (old.id == stu.id && old.code == stu.code)
+                                        if (old.id.Equals(stu.id) && old.code.Equals(stu.code))
                                         {
                                             flag = true;
                                         }
@@ -661,6 +661,21 @@ namespace TEAMModelOS.Controllers
                                         change.stujoin.Add(stu);
                                     }
                                 }
+                                foreach (var old in oldStu.students) {
+                                    bool flag = false;
+                                    //判断已存在名单成员不在变更后的名单里
+                                    foreach (var stu in stuList.students)
+                                    {
+                                        if (old.id.Equals(stu.id) && old.code.Equals(stu.code))
+                                        {
+                                            flag = true;
+                                        }
+                                    }
+                                    if (flag == false)
+                                    {
+                                        change.stuleave.Add(old);
+                                    }
+                                }
                             }
                         }
                         if (stuList.tmids != null)
@@ -674,7 +689,7 @@ namespace TEAMModelOS.Controllers
                                     //判断新增名单成员不在已经存在的名单
                                     foreach (var old in oldStu.tmids)
                                     {
-                                        if (old == tmdid)
+                                        if (old.Equals(tmdid) )
                                         {
                                             flag = true;
                                         }
@@ -684,6 +699,22 @@ namespace TEAMModelOS.Controllers
                                         change.tmdjoin.Add(tmdid);
                                     }
                                 }
+                                foreach (var old in oldStu.tmids)
+                                {
+                                    bool flag = false;
+                                    //判断已存在名单成员不在变更后的名单里
+                                    foreach (var tmdid in stuList.tmids)
+                                    {
+                                        if (old.Equals(tmdid) )
+                                        {
+                                            flag = true;
+                                        }
+                                    }
+                                    if (flag == false)
+                                    {
+                                        change.tmdhleave.Add(old);
+                                    }
+                                }
                             }
                         }
                         if (change.tmdjoin.Count != 0 || change.tmdhleave.Count != 0 || change.stujoin.Count != 0 || change.stuleave.Count != 0)
@@ -743,6 +774,22 @@ namespace TEAMModelOS.Controllers
                                         change.stujoin.Add(stu);
                                     }
                                 }
+                                foreach (var old in oldStu.students)
+                                {
+                                    bool flag = false;
+                                    //判断已存在名单成员不在变更后的名单里
+                                    foreach (var stu in stuList.students)
+                                    {
+                                        if (old.id.Equals(stu.id) && old.code.Equals(stu.code))
+                                        {
+                                            flag = true;
+                                        }
+                                    }
+                                    if (flag == false)
+                                    {
+                                        change.stuleave.Add(old);
+                                    }
+                                }
                             }
                         }
                         if (stuList.tmids != null)
@@ -765,11 +812,24 @@ namespace TEAMModelOS.Controllers
                                     {
                                         change.tmdjoin.Add(tmdid);
                                     }
-                                }
-                            }
-                            else
-                            {
 
+                                }
+                                foreach (var old in oldStu.tmids)
+                                {
+                                    bool flag = false;
+                                    //判断已存在名单成员不在变更后的名单里
+                                    foreach (var tmdid in stuList.tmids)
+                                    {
+                                        if (old.Equals(tmdid))
+                                        {
+                                            flag = true;
+                                        }
+                                    }
+                                    if (flag == false)
+                                    {
+                                        change.tmdhleave.Add(old);
+                                    }
+                                }
                             }
                         }
                         if (change.tmdjoin.Count != 0 || change.tmdhleave.Count != 0 || change.stujoin.Count != 0 || change.stuleave.Count != 0)

+ 10 - 1
TEAMModelOS/Controllers/School/SchoolTeacherController.cs

@@ -6,7 +6,6 @@ using System.Threading.Tasks;
 using TEAMModelOS.Models;
 using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.DI;
-using TEAMModelOS.SDK;
 using System.Text.Json;
 using TEAMModelOS.SDK.Models;
 using Microsoft.AspNetCore.Http;
@@ -328,7 +327,12 @@ namespace TEAMModelOS.Controllers
                         writer.Flush();
                         await client.GetContainer(Constant.TEAMModelOS, "School").CreateItemStreamAsync(stream, new PartitionKey($"Teacher-{school_code}"));
                     }
+                    if (grant_type.ToString().Equals("join"))
+                    {
+                        await TmdUserService.JoinSchool(client, $"{id}", $"{picture}", $"{name}", $"{school_code}", $"{schname}");
+                    }
                 }
+               
                 string bizcode = grant_type.GetString();
                 if (grant_type.GetString() .Equals("join"))
                 {
@@ -450,6 +454,10 @@ namespace TEAMModelOS.Controllers
                     };
                     var response = await client.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync(st, new PartitionKey($"Teacher-{school_code}"));
                 }
+                if (grant_type.ToString().Equals("join"))
+                {
+                    await TmdUserService.JoinSchool(client, $"{teacher.id}", $"{teacher.picture}", $"{teacher.name}", $"{school_code}", $"{schname}");
+                }
                 string bizcode = grant_type.GetString();
                 if (grant_type.GetString() .Equals("join"))
                 {
@@ -501,6 +509,7 @@ namespace TEAMModelOS.Controllers
                 await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, id.ToString(), new PartitionKey("Base"));
                 //移除學校表中的老師document
                 var sresponse = await client.GetContainer(Constant.TEAMModelOS, "School").DeleteItemStreamAsync(id.GetString(), new PartitionKey($"Teacher-{school_code}"));
+                //await TmdUserService.LeaveSchool(client, $"{teacher.id}",  $"{school_code}" );
                 //取得學校資訊
                 var schresponse = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(school_code.ToString(), new PartitionKey("Base"));
                 string schname = string.Empty;

+ 10 - 1
TEAMModelOS/Controllers/Teacher/InitController.cs

@@ -22,6 +22,7 @@ using HTEXLib.COMM.Helpers;
 using TEAMModelOS.SDK.Models.Service;
 using Microsoft.Extensions.Configuration;
 using System.Net.Http;
+using TEAMModelOS.SDK;
 
 namespace TEAMModelOS.Controllers
 {
@@ -135,7 +136,6 @@ namespace TEAMModelOS.Controllers
                                 schoolExtobj.status =sc.status;
                                 schoolExtobj.time = sc.time;
                                 schoolExtobj.picture = school.RootElement.GetProperty("picture");
-                                
                                 var sctch = await client.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(id, new PartitionKey($"Teacher-{sc.schoolId}"));
                                 if (sctch.Status == 200)
                                 {
@@ -154,6 +154,9 @@ namespace TEAMModelOS.Controllers
                                 else {
                                     schoolExtobj.size=0;
                                 }
+                                if (statusNow.Equals("join")) {
+                                  await  TmdUserService.JoinSchool(client, teacher.id, teacher.picture, teacher.name, sc.schoolId, sc.name);
+                                }
                                 schools.Add(schoolExtobj);
                             }
                         }
@@ -610,6 +613,7 @@ namespace TEAMModelOS.Controllers
                     }
                     await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, id, new PartitionKey("Base"));
                     var sresponse = await client.GetContainer(Constant.TEAMModelOS, "School").DeleteItemStreamAsync(id, new PartitionKey($"Teacher-{school_code}"));
+                    //await TmdUserService.LeaveSchool(client, teacher.id, school.schoolId);
                     return Ok(new { stauts = 1 });
                 }
                 else {
@@ -639,6 +643,8 @@ namespace TEAMModelOS.Controllers
                             else {
                                 steacher.permissions = dft;
                             }
+                             
+                            
                         }
                         var response = await client.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync(steacher, id, new PartitionKey($"Teacher-{school_code}"));
                     }
@@ -659,6 +665,9 @@ namespace TEAMModelOS.Controllers
                         };
                         var response = await client.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync(st, new PartitionKey($"Teacher-{school_code}"));
                     }
+                    if (grant_type.ToString().Equals("join")) {
+                        await TmdUserService.JoinSchool(client, teacher.id, teacher.picture, teacher.name, school.schoolId, school.name);
+                    }
                     Notification notification = null;
                     
                     List<SchoolTeacher> teachers = new List<SchoolTeacher>();

+ 22 - 0
TEAMModelOS/Controllers/XTest/DataMigrationController.cs

@@ -49,6 +49,28 @@ namespace TEAMModelOS.Controllers
             _azureStorage = azureStorage;
             _dingDing = dingDing;
         }
+        /// <summary>
+        /// 迁移教师基础信息,并处理历史数据。
+        /// </summary>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        //[AuthToken(Roles = "teacher")]
+        [HttpPost("restore-tmd-course&activity")]
+        public async Task<IActionResult> RestoreTmdCourseAndActivity(JsonElement data) {
+            var client = _azureCosmos.GetCosmosClient();
+            //List<StuActivity> activities = new List<StuActivity>();
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<StuActivity>(queryText: "select value(c) from c where c.pk='Activity'"))
+            {
+                await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync<StuActivity>(item, partitionKey: new PartitionKey(item.code));
+            }
+            await foreach (var item in client.GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<StuCourse>(queryText: "select value(c) from c where c.pk='StuCourse'"))
+            {
+                await client.GetContainer(Constant.TEAMModelOS, "Student").UpsertItemAsync<StuCourse>(item, partitionKey: new PartitionKey(item.code));
+            }
+            return Ok();    
+        }
+
         /// <summary>
         /// 迁移教师基础信息,并处理历史数据。
         /// </summary>