CrazyIter_Bin преди 3 години
родител
ревизия
e779b17d79
променени са 2 файла, в които са добавени 33 реда и са изтрити 12 реда
  1. 3 6
      TEAMModelOS/Controllers/Third/Sc/ScDataInitController.cs
  2. 30 6
      TEAMModelOS/Controllers/XTest/FixDataController.cs

+ 3 - 6
TEAMModelOS/Controllers/Third/Sc/ScDataInitController.cs

@@ -224,14 +224,13 @@ namespace TEAMModelOS.Controllers.Third
                         x.TeacherXD = tt.TeacherXD;
                         x.Mobile = x.Mobile;
                         x.Email = tt.Email;
-                        x.tmdid = null;
                         x.areaId = $"{areaId}";
                         x.PartitionKey = "ScTeacher";
                         var school = ScSchools.Find(s => s.schoolid == x.SchoolID);
                         x.schoolCode = school?.schoolCode;
                     }
                 });
-                addTeachers = await _azureStorage.UpdateAll(addTeachers);
+                addTeachers = await _azureStorage.SaveOrUpdateAll(addTeachers);
             }
             else {
                 //省平台更新的
@@ -239,7 +238,6 @@ namespace TEAMModelOS.Controllers.Third
                 {
                     x.RowKey = $"{x.PXID}";
                     x.status = 1;
-                    x.tmdid = null;
                     x.areaId = $"{areaId}";
                     x.PartitionKey = "ScTeacher";
                     var school = ScSchools.Find(s => s.schoolid == x.SchoolID);
@@ -271,14 +269,13 @@ namespace TEAMModelOS.Controllers.Third
                         x.TeacherXD = tt.TeacherXD;
                         x.Mobile = x.Mobile;
                         x.Email = tt.Email;
-                        x.tmdid = null;
                         x.areaId = $"{areaId}";
                         x.PartitionKey = "ScTeacher";
                         var school = ScSchools.Find(s => s.schoolid == x.SchoolID);
                         x.schoolCode = school?.schoolCode;
                     }
                 }
-                addTeachers = await _azureStorage.UpdateAll(ScTeachers);
+                addTeachers = await _azureStorage.SaveOrUpdateAll(ScTeachers);
             }
             #endregion 省平台获取到最新的教师,并添加到Table中。
             //反向去补全四川省平台 Table中没有绑定tmdid的账号
@@ -334,7 +331,7 @@ namespace TEAMModelOS.Controllers.Third
             if (updateTch.IsNotEmpty()) {
                 await _azureStorage.SaveOrUpdateAll(updateTch);
             }
-            return Ok(updateTch.Select(x => new { x.areaId, x.PXID, x.TID, x.TeacherName, x.tmdid, x.SchoolName, x.DisName }));
+            return Ok(new { update = updateTch.Select(x => new { x.areaId, x.PXID, x.TID, x.TeacherName, x.tmdid, x.SchoolName, x.DisName }), ScTeachers });
         }
         /// <summary>
         ///1. 检查学校是否有同名的

+ 30 - 6
TEAMModelOS/Controllers/XTest/FixDataController.cs

@@ -1305,9 +1305,19 @@ namespace TEAMModelOS.Controllers
         {
             var client = _azureCosmos.GetCosmosClient();
             List<string> tmdids = data.GetProperty("tmdids").ToObject<List<string>>();
-            string areaId = data.GetProperty("areaId").GetString();
+            data.TryGetProperty("areaId",out JsonElement areaId);
+            data.TryGetProperty("schoolIds", out JsonElement schoolIds);
             data.TryGetProperty("areaAdmin", out JsonElement areaAdmin);
-            string sql = $"select value(c) from c where c.areaId='{areaId}'";
+            List<string> ids = new List<string>();
+            string idsSql = "";
+            if (schoolIds.ValueKind.Equals(JsonValueKind.Array)) {
+                ids = schoolIds.ToObject<List<string>>();
+                if (ids.IsNotEmpty()) {
+                    idsSql = $" or  c.id in ({string.Join(",", ids.Select(x=>$"'{x}'"))})";
+                }
+            }
+            string areaIdsql = string.IsNullOrWhiteSpace($"{areaId}")?"-0000000":$"{areaId}";
+            string sql = $"select distinct value(c) from c where c.areaId='{areaIdsql}'  {idsSql}";
             List<School> schools = new List<School>();
             await foreach (var item in client.GetContainer(Constant.TEAMModelOS, Constant.School).GetItemQueryIterator<School>(
                 queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey("Base") }))
@@ -1315,12 +1325,16 @@ namespace TEAMModelOS.Controllers
                 schools.Add(item);
             }
             long now = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
-            Area area= await  client.GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemAsync<Area>(areaId, new PartitionKey("Base-Area"));
+            Azure.Response responseArea= await  client.GetContainer(Constant.TEAMModelOS, Constant.Normal).ReadItemStreamAsync($"{areaId}", new PartitionKey("Base-Area"));
+            Area area = null;
+            if (responseArea.Status == 200) {
+                area = JsonDocument.Parse(responseArea.ContentStream).RootElement.ToObject<Area>();
+            }
             List<Teacher> teachers = new List<Teacher>();
             List<SchoolTeacher> schoolsTeachers = new List<SchoolTeacher>();
             foreach (var tmdid in tmdids) {
                 Teacher teacher=  await client.GetContainer(Constant.TEAMModelOS, Constant.Teacher).ReadItemAsync<Teacher>(tmdid, new PartitionKey("Base"));
-                if (areaAdmin.ValueKind.Equals(JsonValueKind.True)) {
+                if (areaAdmin.ValueKind.Equals(JsonValueKind.True) && !string.IsNullOrWhiteSpace($"{areaId}") && area!= null) {
                     if (teacher.areas.IsNotEmpty())
                     {
                         if (!teacher.areas.Select(x => x.areaId).Contains(area.id)) {
@@ -1370,9 +1384,19 @@ namespace TEAMModelOS.Controllers
                     }
                     if (teacher.schools.IsNotEmpty())
                     {
-                        if (!teacher.schools.Select(x => x.schoolId).Contains(school .id))
+                        if (!teacher.schools.Select(x => x.schoolId).Contains(school.id))
                         {
-                            teacher.schools.Add(new Teacher.TeacherSchool { schoolId = school.id, areaId = area.id, picture = school.picture, name = school.name, status = "join", time = now });
+                            teacher.schools.Add(new Teacher.TeacherSchool { schoolId = school.id, areaId = school.areaId, picture = school.picture, name = school.name, status = "join", time = now });
+                        }
+                        else {
+                            var sch= teacher.schools.Find(x => x.schoolId.Equals(school.id));
+                            if (sch != null) { 
+                                sch.time = now;
+                                sch.name = school.name;
+                                sch.areaId = school.areaId;
+                                sch.picture = school.picture;
+                                sch.status = "join";
+                            }
                         }
                     }
                     else