ApiPubController.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Attribute;
  2. using Common;
  3. using Dto;
  4. using Vo;
  5. using Enums;
  6. using Filters;
  7. using Infrastructure;
  8. using Infrastructure.Model;
  9. using Mapster;
  10. using Microsoft.AspNetCore.Mvc;
  11. using Middleware;
  12. using Model;
  13. using Services;
  14. using Model.Base;
  15. using Microsoft.AspNetCore.Authorization;
  16. using Model.Customer;
  17. using Base;
  18. namespace Controllers
  19. {
  20. /// <summary>
  21. /// ApiInfo)Controller
  22. /// </summary>
  23. // [Route("ApiInfo")]
  24. // [ApiExplorerSettings(GroupName = "ApiInfo")]
  25. public class ApiPubController : BaseController
  26. {
  27. /// <summary>
  28. /// api分组接口
  29. /// </summary>
  30. private readonly IApiInfoService _ApiInfoService;
  31. private readonly IApiGroupService _ApiGroupService;
  32. public ApiPubController(IApiInfoService ApiInfoService, IApiGroupService ApiGroupService)
  33. {
  34. _ApiInfoService = ApiInfoService;
  35. _ApiGroupService = ApiGroupService;
  36. }
  37. [AllowAnonymous]
  38. [HttpPost]
  39. [Route("/noauth/apiinfo/groupsforadmin")]
  40. public IActionResult GroupsForAdmin(string value)
  41. {
  42. var response = _ApiGroupService.GroupsForAdmin(value);
  43. return SUCCESS(response);
  44. }
  45. [AllowAnonymous]
  46. [HttpPost]
  47. [Route("/noauth/apiinfo/listforadmin")]
  48. public IActionResult ListForAdmin(string value)
  49. {
  50. string jsonString = Dbconn.DesDecrypt(value, "&L^kg4N9");
  51. Dictionary<string, object> data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonString);
  52. Dictionary<string, int> groupobj = new Dictionary<string, int>();
  53. Dictionary<string, object> obj = new Dictionary<string, object>();
  54. if(jsonString.Contains("\"groups\""))
  55. {
  56. List<Dictionary<string, object>> groupJson = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(data["groups"].ToString());
  57. for(int i = 0; i < groupJson.Count; i ++)
  58. {
  59. string name = groupJson[i]["name"].ToString();
  60. int version = int.Parse(groupJson[i]["version"].ToString());
  61. groupobj.Add(name, version);
  62. }
  63. }
  64. var groups = _ApiGroupService.GetList(m => m.groupKind == 1);
  65. foreach(var group in groups)
  66. {
  67. int curVersion = int.Parse(Function.CheckInt(group.groupVersion));
  68. if(groupobj.Any(m => m.Key == group.groupName && m.Value < curVersion))
  69. {
  70. Dictionary<string, object> groupData = new Dictionary<string, object>();
  71. var apis = _ApiInfoService.GetList(m => m.groupId == group.id).ToList();
  72. foreach(var api in apis)
  73. {
  74. Dictionary<string, object> apiData = new Dictionary<string, object>();
  75. string url = api.apiHost;
  76. if(api.apiPort != 80 && api.apiPort != 443)
  77. {
  78. url += ":" + api.apiPort;
  79. }
  80. url += api.apiRouter;
  81. apiData.Add("name", api.apiName);
  82. apiData.Add("url", url);
  83. apiData.Add("method", api.apiMethod);
  84. groupData.Add(api.apiKey, apiData);
  85. }
  86. groupData.Add("groupVersion", group.groupVersion);
  87. groupData.Add("groupInfo", group.groupRemark);
  88. obj.Add(group.groupName, groupData);
  89. }
  90. }
  91. return SUCCESS(obj);
  92. }
  93. #region 获取OSS参数
  94. [Route("/noauth/api/ossparam")]
  95. public JsonResult ossParam(string value)
  96. {
  97. OssConfigs ossConfigs = new();
  98. AppSettings.Bind("OssConfigs", ossConfigs);
  99. Dictionary<string, object> Obj = new Dictionary<string, object>();
  100. Obj.Add("AccessId", ossConfigs.Key);
  101. Obj.Add("AccessKey", ossConfigs.Secret);
  102. return Json(new AppResultJson() { Status = "-1", Info = "", Data = Obj });
  103. }
  104. #endregion
  105. }
  106. }