Ver Fonte

数据查询工具:容器合一通过ID查询数据详情

Li há 3 anos atrás
pai
commit
f442767ec7

+ 82 - 0
TEAMModelBI/Controllers/BICommon/JointlyController.cs

@@ -0,0 +1,82 @@
+using Azure.Cosmos;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using System.Collections.Generic;
+using System.Text.Json;
+using System.Threading.Tasks;
+using TEAMModelOS.Models;
+using TEAMModelOS.SDK.DI;
+using TEAMModelOS.SDK.Extension;
+
+namespace TEAMModelBI.Controllers.BICommon
+{
+    [Route("jointly")]
+    [ApiController]
+    public class JointlyController : ControllerBase
+    {
+        private readonly AzureCosmosFactory _azureCosmos;
+        private readonly AzureStorageFactory _azureStorage;
+        private readonly DingDing _dingDing;
+        private readonly Option _option;
+        public readonly List<string> _containers = new List<string> { "Teacher", "School", "Student", "Normal", "Common" };
+
+        public JointlyController(AzureCosmosFactory azureCosmos, AzureStorageFactory azureStorage, DingDing dingDing, IOptionsSnapshot<Option> option)
+        {
+            _azureCosmos = azureCosmos;
+            _dingDing = dingDing;
+            _azureStorage = azureStorage;
+            _option = option?.Value;
+        }
+
+        /// <summary>
+        /// 容器合一通过ID查询详情
+        /// </summary>
+        /// <param name="jsonEmelent"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [HttpPost("get-info")]
+        public async Task<IActionResult> GetInfo(JsonElement jsonEmelent)
+        {
+            if (!jsonEmelent.TryGetProperty("id", out JsonElement id)) return BadRequest();
+            jsonEmelent.TryGetProperty("type", out JsonElement type);
+            jsonEmelent.TryGetProperty("code", out JsonElement code);
+            var cosmosClient = _azureCosmos.GetCosmosClient();
+            List<object> objs = new List<object>();
+            if (!string.IsNullOrEmpty($"{type}"))
+            {
+                await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", _containers[type.GetInt32()]).GetItemQueryStreamIterator(queryText: $"select value(c) from c where c.id='{id}'", requestOptions: string.IsNullOrEmpty($"{code}") ? new QueryRequestOptions() { } : new QueryRequestOptions() { PartitionKey = new PartitionKey($"{code}") }))
+                {
+                    using var json = await JsonDocument.ParseAsync(item.ContentStream);
+                    if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                    {
+                        foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                        {
+                            objs.Add(obj.ToObject<object>());
+                        }
+                    }
+                }
+            }
+            else
+            {
+                foreach (var contaoner in _containers)
+                {
+                    await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", contaoner).GetItemQueryStreamIterator(queryText: $"select value(c) from c where c.id='{id}'", requestOptions: string.IsNullOrEmpty($"{code}") ? new QueryRequestOptions() { } : new QueryRequestOptions() { PartitionKey = new PartitionKey($"{code}") }))
+                    {
+                        using var json = await JsonDocument.ParseAsync(item.ContentStream);
+                        if (json.RootElement.TryGetProperty("_count", out JsonElement count) && count.GetUInt16() > 0)
+                        {
+                            foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
+                            {
+                                objs.Add(obj.ToObject<object>());
+                            }
+                        }
+                    }
+                }
+            }
+
+            return Ok(new { state = 200, infos = objs });
+        }
+
+    }
+}

+ 0 - 1
TEAMModelBI/TEAMModelBI.csproj

@@ -28,7 +28,6 @@
 
 	<ItemGroup>
 		<Folder Include="Controllers\Normal\" />
-		<Folder Include="Controllers\BICommon\" />
 		<Folder Include="wwwroot\" />
 	</ItemGroup>
 	<PropertyGroup>