CommonController.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Microsoft.AspNetCore.Hosting;
  2. using Microsoft.AspNetCore.Mvc;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Text.Json;
  9. using System.Threading.Tasks;
  10. using TEAMModelOS.SDK.Context.Exception;
  11. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcRequest;
  12. using TEAMModelOS.SDK.Extension.DataResult.JsonRpcResponse;
  13. using TEAMModelOS.SDK.Helper.Common.JsonHelper.JsonPath;
  14. using static System.Text.Json.JsonElement;
  15. namespace TEAMModelOS.API.Controllers.Core
  16. {
  17. [Route("api/[controller]")]
  18. [ApiController]
  19. // [Authorize]
  20. public class CommonController : BaseController
  21. {
  22. public readonly IWebHostEnvironment webHostEnvironment;
  23. public CommonController(IWebHostEnvironment _webHostEnvironment)
  24. {
  25. webHostEnvironment = _webHostEnvironment;
  26. }
  27. /// <summary>
  28. /// bool =true 獲取全部 false 則從request.lang 篩選指定語言的,默認zh-CN
  29. /// </summary>
  30. /// <param name="request"></param>
  31. /// <returns></returns>
  32. [HttpPost("SubjectDefault")]
  33. public async Task<BaseJosnRPCResponse> SubjectDefault(JosnRPCRequest<bool> request)
  34. {
  35. JsonRPCResponseBuilder builder = JsonRPCResponseBuilder.custom();
  36. string contentRootPath = webHostEnvironment.ContentRootPath;
  37. JsonDocument document = await GetJson(contentRootPath, "/JsonFile/Subject/SubjectDefault.json");
  38. if (!request.@params)
  39. {
  40. List<JsonElement> jsonElements = new List<JsonElement>();
  41. foreach (JsonElement element in document.RootElement.EnumerateArray())
  42. {
  43. if (element.TryGetProperty("lang", out JsonElement json))
  44. {
  45. if (json.GetString().Equals(request.lang))
  46. {
  47. jsonElements.Add(element);
  48. }
  49. }
  50. }
  51. return builder.Data(jsonElements).build();
  52. }
  53. else
  54. {
  55. return builder.Data(document.RootElement).build();
  56. }
  57. }
  58. public static async Task<JsonDocument> GetJson(string contentRootPath, string name)
  59. {
  60. try
  61. {
  62. string path = contentRootPath + name;
  63. var fs = await System.IO.File.ReadAllTextAsync(path, Encoding.UTF8);
  64. return JsonDocument.Parse(fs);
  65. }
  66. catch (Exception e)
  67. {
  68. new BizException(e.Message);
  69. }
  70. return null;
  71. }
  72. }
  73. }