ApiPubController.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. namespace Controllers
  17. {
  18. /// <summary>
  19. /// ApiInfo)Controller
  20. /// </summary>
  21. // [Route("ApiInfo")]
  22. // [ApiExplorerSettings(GroupName = "ApiInfo")]
  23. public class ApiPubController : BaseController
  24. {
  25. /// <summary>
  26. /// api分组接口
  27. /// </summary>
  28. private readonly IApiInfoService _ApiInfoService;
  29. private readonly IApiGroupService _ApiGroupService;
  30. public ApiPubController(IApiInfoService ApiInfoService, IApiGroupService ApiGroupService)
  31. {
  32. _ApiInfoService = ApiInfoService;
  33. _ApiGroupService = ApiGroupService;
  34. }
  35. [AllowAnonymous]
  36. [HttpPost]
  37. [Route("/noauth/apiinfo/groupsforadmin")]
  38. public IActionResult GroupsForAdmin(string value)
  39. {
  40. var response = _ApiGroupService.GroupsForAdmin(value);
  41. return SUCCESS(response);
  42. }
  43. [AllowAnonymous]
  44. [HttpPost]
  45. [Route("/noauth/apiinfo/listforadmin")]
  46. public IActionResult ListForAdmin(string value)
  47. {
  48. string jsonString = Dbconn.DesDecrypt(value, "&L^kg4N9");
  49. Dictionary<string, object> data = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonString);
  50. Dictionary<string, int> groupobj = new Dictionary<string, int>();
  51. Dictionary<string, object> obj = new Dictionary<string, object>();
  52. if(jsonString.Contains("\"groups\""))
  53. {
  54. List<Dictionary<string, object>> groupJson = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(data["groups"].ToString());
  55. for(int i = 0; i < groupJson.Count; i ++)
  56. {
  57. string name = groupJson[i]["name"].ToString();
  58. int version = int.Parse(groupJson[i]["version"].ToString());
  59. groupobj.Add(name, version);
  60. }
  61. }
  62. var groups = _ApiGroupService.GetList(m => m.groupKind == 1);
  63. foreach(var group in groups)
  64. {
  65. int curVersion = int.Parse(Function.CheckInt(group.groupVersion));
  66. if(groupobj.Any(m => m.Key == group.groupName && m.Value < curVersion))
  67. {
  68. Dictionary<string, object> groupData = new Dictionary<string, object>();
  69. var apis = _ApiInfoService.GetList(m => m.groupId == group.id).ToList();
  70. foreach(var api in apis)
  71. {
  72. Dictionary<string, object> apiData = new Dictionary<string, object>();
  73. string url = api.apiHost;
  74. if(api.apiPort != 80 && api.apiPort != 443)
  75. {
  76. url += ":" + api.apiPort;
  77. }
  78. url += api.apiRouter;
  79. apiData.Add("name", api.apiName);
  80. apiData.Add("url", url);
  81. apiData.Add("method", api.apiMethod);
  82. groupData.Add(api.apiKey, apiData);
  83. }
  84. groupData.Add("groupVersion", group.groupVersion);
  85. groupData.Add("groupInfo", group.groupRemark);
  86. obj.Add(group.groupName, groupData);
  87. }
  88. }
  89. return SUCCESS(obj);
  90. }
  91. }
  92. }