Просмотр исходного кода

优化加区和移区,编写解析防火墙日志文件。

Li 3 лет назад
Родитель
Сommit
b9fc0fceee

+ 5 - 13
TEAMModelBI/Controllers/BIHome/AnalyseFileController.cs

@@ -37,14 +37,9 @@ namespace TEAMModelBI.Controllers.BIHome
             while ((text = streamReader.ReadLine()) != null) 
             {
                 if (streamReader.EndOfStream)
-                {
                     visits.Append($"{text.ToString()}");
-                }
                 else
-                {
-                    visits.Append($"{text.ToString()},");
-                }
-                objs.Add(text.ToJsonString());
+                    visits.Append($"{text.ToString()},");                
             }
             visits.Append("]");
             streamReader.Close();
@@ -55,18 +50,15 @@ namespace TEAMModelBI.Controllers.BIHome
 
             List<RecGWInfo> recInfo = aGInfos.Select(s => new RecGWInfo { hour = DateTimeOffset.Parse(s.time).ToString("yyyyMMddHH"), ip = s.properties.clientIp, api = s.properties.requestUri.Split("?").ToList().Count() > 1 ? s.properties.requestUri.Split("?").ToList()[0] : s.properties.requestUri, hostName = s.properties.hostname }).ToList();
 
+            var apiCnt = recInfo.GroupBy(a => a.api).Select(g => new { api = g.Key, count = g.Count(), hour = g.Select(h => h.hour).First(), hostName = g.Select(h => h.hostName).First(), ip = g.Select(i => i.ip).First() }).ToList();
 
 
+            var ipCnt = recInfo.GroupBy(a => a.ip).Select(g => new { ip = g.Key, count = g.Count(), hour = g.Select(h => h.hour).First(), hostName = g.Select(h => h.hostName).First(), api = g.Select(i => i.api).First() }).ToList();
 
 
+            return Ok(new { state = 200, apiCon = apiCnt.Count(), apiSum = apiCnt.Select(ap => ap.count).Sum(), ipCount = ipCnt.Count, ipSum = ipCnt.Select(ip => ip.count).Sum(), ipCnt, apiCnt }); ;
 
-            List<StatisNameCnt> ipCnt = aGInfos.GroupBy(g => g.properties.clientIp).Select(x => new StatisNameCnt { name = x.Key, cnt = x.Count() }).ToList();
-            ipCnt.Sort((x, y) => y.cnt.CompareTo(x.cnt));
-
-            DateTimeOffset dateTime = DateTimeOffset.UtcNow;
-            var apiCnt = aGInfos.Select(s => s.properties.requestUri.Split("?").ToList().Count()>1 ? s.properties.requestUri.Split("?").ToList()[0]: s.properties.requestUri).GroupBy(g => g).Select(x=>new { key = x.Key,cnt =x.Count()}).ToList();
-
-            return Ok(new { state = 200, cnt = recInfo.Count, recInfo, apiCnt, ipCnt });
+            //return Ok(new { state = 200, cnt = recInfo.Count, apiCon = apiCnt.Count(), apiSum = apiCnt.Select(ap=> ap.count).Sum(), ipCount = ipCnt.Count, ipSum = ipCnt.Select(ip=>ip.count).Sum(), ipCnt,apiCnt, recInfo   });;
         }
         public record RecGWInfo
         {

+ 7 - 6
TEAMModelBI/Controllers/BISchool/AreaRelevantController.cs

@@ -48,17 +48,18 @@ namespace TEAMModelBI.Controllers.BISchool
             try
             {
                 jsonElement.TryGetProperty("areaId", out JsonElement _areaId);
-                jsonElement.TryGetProperty("isManyArea", out JsonElement isManyArea);
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 List<JoinAreaSchool> joinAreaSchools = new List<JoinAreaSchool>();
-                string slqtxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period FROM c WHERE c.areaId='{_areaId}'";
+                string sqltxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period FROM c WHERE c.areaId='{_areaId}'";
 
-                if (!string.IsNullOrEmpty($"{isManyArea}"))
+                if (!string.IsNullOrEmpty($"{_areaId}"))
                 {
-                    slqtxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period FROM c join m in c.manyAreas where m.areaId='{_areaId}' or c.areaId='{_areaId}'";
+                    sqltxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period,c.manyAreas FROM c WHERE c.areaId ='{_areaId}' and ARRAY_CONTAINS(c.manyAreas,'{_areaId}',true) or ARRAY_LENGTH(c.manyAreas) = 0 ";
+
+                    //sqltxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period FROM c join m in c.manyAreas where m.areaId='{_areaId}' or c.areaId='{_areaId}'";
                 }
 
-                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: slqtxt,requestOptions:new QueryRequestOptions() { PartitionKey = new PartitionKey("Base")})) 
+                await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: sqltxt, requestOptions:new QueryRequestOptions() { PartitionKey = new PartitionKey("Base")})) 
                 {
                     using var json = await JsonDocument.ParseAsync(item.ContentStream);
                     if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0) 
@@ -117,7 +118,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 School tempSchool = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{schoolId}", new PartitionKey("Base"));
-                if (string.IsNullOrEmpty($"{isDefault}"))
+                if (bool.Parse($"{isDefault}") == true)
                 {
                     tempSchool.areaId = null;
                     tempSchool.standard = null;

+ 3 - 2
TEAMModelBI/Controllers/BISchool/SchoolController.cs

@@ -65,7 +65,8 @@ namespace TEAMModelBI.Controllers.BISchool
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 string sqltxt = "SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period,c.manyAreas FROM c WHERE c.standard=null or c.areaId=null";
                 if (!string.IsNullOrEmpty($"{areaId}"))
-                    sqltxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period,c.manyAreas FROM c join m in c.manyAreas WHERE c.areaId!='{areaId}' or m.areaId!='{areaId}'";
+                    sqltxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period,c.manyAreas FROM c WHERE c.areaId !='{areaId}' or ARRAY_CONTAINS(c.manyAreas,'{areaId}',false) or ARRAY_LENGTH(c.manyAreas) = 0 ";
+                //sqltxt = $"SELECT c.id,c.name,c.schoolCode,c.province,c.city,c.dist,c.picture,c.period,c.manyAreas FROM c join m in c.manyAreas WHERE c.areaId!='{areaId}' or m.areaId!='{areaId}'";
 
                 List<NotAreaSchool> notAreaSchools = new List<NotAreaSchool>();
                 await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS, "School").GetItemQueryStreamIterator(queryText: sqltxt, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Base") }))
@@ -138,7 +139,7 @@ namespace TEAMModelBI.Controllers.BISchool
                         School school = await cosmosCliet.GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>(tempCode, new PartitionKey("Base"));
                         if (school != null)
                         {
-                            if (string.IsNullOrEmpty($"{isDefault}"))
+                            if (bool.Parse($"{isDefault}") == true)
                             {
                                 school.standard = $"{standard}";
                                 school.areaId = $"{_areaId}";