SchoolController.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Azure.Cosmos;
  2. using Microsoft.AspNetCore.Http;
  3. using Microsoft.AspNetCore.Mvc;
  4. using Microsoft.Extensions.Options;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Text.Json;
  8. using System.Threading.Tasks;
  9. using TEAMModelOS.Models;
  10. using TEAMModelOS.SDK.DI;
  11. using TEAMModelOS.SDK.Extension;
  12. using TEAMModelOS.SDK.Models;
  13. namespace TEAMModelBI.Controllers.Census
  14. {
  15. [Route("school")]
  16. [ApiController]
  17. public class SchoolController : ControllerBase
  18. {
  19. private readonly AzureCosmosFactory _azureCosmos;
  20. private readonly AzureStorageFactory _azureStorage;
  21. private readonly DingDing _dingDing;
  22. private readonly Option _option;
  23. public SchoolController(AzureCosmosFactory azureCosmos, AzureStorageFactory azureStorage, DingDing dingDing, IOptionsSnapshot<Option> option)
  24. {
  25. _azureCosmos = azureCosmos;
  26. _azureStorage = azureStorage;
  27. _dingDing = dingDing;
  28. _option = option?.Value;
  29. }
  30. /// <summary>
  31. /// 依据Id查询School容器 数据管理工具——查询工具
  32. /// </summary>
  33. /// <param name="jsonElement"></param>
  34. /// <returns></returns>
  35. [HttpPost("get-info")]
  36. public async Task<IActionResult> GetSchool(JsonElement jsonElement)
  37. {
  38. if (!jsonElement.TryGetProperty("id", out JsonElement id)) return BadRequest();
  39. var cosmosClient = _azureCosmos.GetCosmosClient();
  40. List<object> infos = new List<object>();
  41. string sqlTxt = $"select value(c) from c where c.id='{id}'";
  42. await foreach (var item in cosmosClient.GetContainer("TEAMModelOS", "School").GetItemQueryStreamIterator(queryText: sqlTxt, requestOptions: new QueryRequestOptions() { }))
  43. {
  44. using var json = await JsonDocument.ParseAsync(item.ContentStream);
  45. foreach (var obj in json.RootElement.GetProperty("Documents").EnumerateArray())
  46. {
  47. infos.Add(obj.ToObject<object>());
  48. }
  49. }
  50. return Ok(new { state = 200, infos });
  51. }
  52. }
  53. }