Bläddra i källkod

优化修改学校和顾问的接口

Li 3 år sedan
förälder
incheckning
1f99cf9cee
1 ändrade filer med 76 tillägg och 48 borttagningar
  1. 76 48
      TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

+ 76 - 48
TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

@@ -566,13 +566,8 @@ namespace TEAMModelBI.Controllers.BISchool
                 List<string> assistId = _assistId.ToObject<List<string>>();
                 List<string> periodS = period.ToObject<List<string>>();
 
-                SchoolAssist schoolAssist = new();
                 Dictionary<string, List<Dictionary<string, string>>> haveSchoolManger = new Dictionary<string, List<Dictionary<string, string>>>();
 
-                //操作记录
-                string blobOrTable = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
-
-
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 School tempShool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{_schoolId}", new PartitionKey("Base"));
                 if (tempShool != null)
@@ -590,6 +585,30 @@ namespace TEAMModelBI.Controllers.BISchool
                     //修改学校
                     await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(tempShool, tempShool.id, new PartitionKey("Base"));
 
+                    string sqlTxt = $"SELECT value(c) From c WHERE ARRAY_CONTAINS(c.roles,'assist',true)";
+
+                    List<SchoolTeacher> schoolTeachers = new List<SchoolTeacher>();
+
+                    await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryIterator<SchoolTeacher>(queryText: sqlTxt, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Teacher-{tempShool.id}") }))
+                    {
+                        if (!assistId.Contains(item.id)) 
+                        {
+                            if (item.roles.Contains("assist"))
+                            {
+                                item.roles.Remove("assist");
+                                if (item.roles.Count > 0)
+                                {
+                                    var tem = await cosmosClient.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<SchoolTeacher>(item, item.id, new PartitionKey(item.code));
+                                }
+                                else
+                                {
+                                    var tems = await cosmosClient.GetContainer("TEAMModelOS", "School").DeleteItemAsync<SchoolTeacher>(item.id, new PartitionKey(item.code));
+                                }
+                            }
+                        }
+                        //bool temp = item.roles.Contains("assist");                        
+                    }
+
                     if (assistId.Count > 0)
                     {
                         foreach (var itemTeacher in assistId)
@@ -601,7 +620,15 @@ namespace TEAMModelBI.Controllers.BISchool
                                 if (haveTeacher != null)
                                 {
                                     //查询该教师是否存在该校
-                                    SchoolTeacher schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolTeacher>($"{itemTeacher}", new PartitionKey($"Teacher-{tempShool.id}"));
+                                    SchoolTeacher schoolTeacher = null;
+                                    try
+                                    {
+                                        schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<SchoolTeacher>($"{itemTeacher}", new PartitionKey($"Teacher-{tempShool.id}"));
+                                    }
+                                    catch
+                                    {
+                                    }
+
                                     if (schoolTeacher != null)
                                     {
                                         if (!schoolTeacher.roles.Contains("assist"))
@@ -626,7 +653,7 @@ namespace TEAMModelBI.Controllers.BISchool
                                             createTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
                                         };
                                         //添加学校顾问
-                                        await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(schoolTeacher, new PartitionKey($"Teacher-{tempShool.id}"));
+                                        await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(addSchoolTeacher, new PartitionKey($"Teacher-{tempShool.id}"));
                                     }
                                 }
                                 else
@@ -664,53 +691,54 @@ namespace TEAMModelBI.Controllers.BISchool
                         }
                     }
 
-                    schoolAssist.id = tempShool.id;
-                    schoolAssist.code = tempShool.code;
-                    schoolAssist.pk = tempShool.pk;
-                    schoolAssist.ttl = tempShool.ttl;
-                    schoolAssist.schoolCode = tempShool.schoolCode;
-                    schoolAssist.name = tempShool.name;
-                    schoolAssist.period = tempShool.period;
-                    schoolAssist.campuses = tempShool.campuses;
-                    schoolAssist.region = tempShool.region;
-                    schoolAssist.province = tempShool.province;
-                    schoolAssist.city = tempShool.city;
-                    schoolAssist.dist = tempShool.dist;
-                    schoolAssist.areaId = tempShool.areaId;
-                    schoolAssist.size = tempShool.size;
-                    schoolAssist.address = tempShool.address;
-                    schoolAssist.picture = tempShool.picture;
-                    schoolAssist.timeZone = tempShool.timeZone;
-                    schoolAssist.type = tempShool.type;
-                    schoolAssist.standard = tempShool.standard;
-                    schoolAssist.hpappraise = tempShool.hpappraise;
-
-                    List<Assist> assists = new List<Assist>();
-                    //查询学校的顾问
-                    string managerSql = $"SELECT DISTINCT REPLACE(c.code, 'Teacher-', '') AS schoolId, c.id, c.name FROM c WHERE ARRAY_CONTAINS(c.roles, 'assist', true) AND c.pk = 'Teacher' AND c.status = 'join' AND c.code = 'Teacher-{tempShool.id}'";
-                    var cosmosClent = _azureCosmos.GetCosmosClient();
-                    await foreach (var item in cosmosClent.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: managerSql, requestOptions: new QueryRequestOptions() { }))
-                    {
-                        using var json = await JsonDocument.ParseAsync(item.ContentStream);
-                        foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
-                        {
-                            Assist assist = new Assist
-                            {
-                                tmdId = obj.GetProperty("id").GetString(),
-                                tmdName = obj.GetProperty("name").GetString()
-                            };
-                            assists.Add(assist);
-                        }
-                    }
-
-                    schoolAssist.assists = assists;
+                    //SchoolAssist schoolAssist = new();
+                    //schoolAssist.id = tempShool.id;
+                    //schoolAssist.code = tempShool.code;
+                    //schoolAssist.pk = tempShool.pk;
+                    //schoolAssist.ttl = tempShool.ttl;
+                    //schoolAssist.schoolCode = tempShool.schoolCode;
+                    //schoolAssist.name = tempShool.name;
+                    //schoolAssist.period = tempShool.period;
+                    //schoolAssist.campuses = tempShool.campuses;
+                    //schoolAssist.region = tempShool.region;
+                    //schoolAssist.province = tempShool.province;
+                    //schoolAssist.city = tempShool.city;
+                    //schoolAssist.dist = tempShool.dist;
+                    //schoolAssist.areaId = tempShool.areaId;
+                    //schoolAssist.size = tempShool.size;
+                    //schoolAssist.address = tempShool.address;
+                    //schoolAssist.picture = tempShool.picture;
+                    //schoolAssist.timeZone = tempShool.timeZone;
+                    //schoolAssist.type = tempShool.type;
+                    //schoolAssist.standard = tempShool.standard;
+                    //schoolAssist.hpappraise = tempShool.hpappraise;
+
+                    //List<Assist> assists = new List<Assist>();
+                    ////查询学校的顾问
+                    //string managerSql = $"SELECT DISTINCT REPLACE(c.code, 'Teacher-', '') AS schoolId, c.id, c.name FROM c WHERE ARRAY_CONTAINS(c.roles, 'assist', true) AND c.pk = 'Teacher' AND c.status = 'join' AND c.code = 'Teacher-{tempShool.id}'";
+                    //var cosmosClent = _azureCosmos.GetCosmosClient();
+                    //await foreach (var item in cosmosClent.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: managerSql, requestOptions: new QueryRequestOptions() { }))
+                    //{
+                    //    using var json = await JsonDocument.ParseAsync(item.ContentStream);
+                    //    foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                    //    {
+                    //        Assist assist = new Assist
+                    //        {
+                    //            tmdId = obj.GetProperty("id").GetString(),
+                    //            tmdName = obj.GetProperty("name").GetString()
+                    //        };
+                    //        assists.Add(assist);
+                    //    }
+                    //}
+
+                    //schoolAssist.assists = assists;
                 }
 
                 //保存操作记录
                 await _azureStorage.SaveLog("TeacherRoles-update", $"{_tmdName}【{_tmdId}】修改学校功能,修改的学校:{_schoolId},{string.Join("|", periodS.ToArray())},{picture},{size},{string.Join("|", assistId.ToArray())}", _dingDing, httpContext: HttpContext);
 
 
-                return Ok(new { state = 200, schoolAssist });
+                return Ok(new { state = 200 });
             }
             catch (Exception ex)
             {