SysCommonService.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // 大名科技(天津)有限公司版权所有 电话:18020030720 QQ:515096995
  2. //
  3. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
  4. using Microsoft.AspNetCore.Mvc.ApiExplorer;
  5. using Org.BouncyCastle.Crypto.Parameters;
  6. using Org.BouncyCastle.Utilities.Encoders;
  7. using Swashbuckle.AspNetCore.SwaggerGen;
  8. namespace Admin.NET.Core.Service;
  9. /// <summary>
  10. /// 系统通用服务 💥
  11. /// </summary>
  12. [ApiDescriptionSettings(Order = 101)]
  13. [AllowAnonymous]
  14. public class SysCommonService : IDynamicApiController, ITransient
  15. {
  16. private readonly IApiDescriptionGroupCollectionProvider _apiProvider;
  17. public SysCommonService(IApiDescriptionGroupCollectionProvider apiProvider)
  18. {
  19. _apiProvider = apiProvider;
  20. }
  21. /// <summary>
  22. /// 获取国密公钥私钥对 🏆
  23. /// </summary>
  24. /// <returns></returns>
  25. [DisplayName("获取国密公钥私钥对")]
  26. public SmKeyPairOutput GetSmKeyPair()
  27. {
  28. var kp = GM.GenerateKeyPair();
  29. var privateKey = Hex.ToHexString(((ECPrivateKeyParameters)kp.Private).D.ToByteArray()).ToUpper();
  30. var publicKey = Hex.ToHexString(((ECPublicKeyParameters)kp.Public).Q.GetEncoded()).ToUpper();
  31. return new SmKeyPairOutput
  32. {
  33. PrivateKey = privateKey,
  34. PublicKey = publicKey,
  35. };
  36. }
  37. /// <summary>
  38. /// 获取所有接口/动态API 🔖
  39. /// </summary>
  40. /// <returns></returns>
  41. [DisplayName("获取所有接口/动态API")]
  42. public List<ApiOutput> GetApiList()
  43. {
  44. var apiList = new List<ApiOutput>();
  45. foreach (var item in _apiProvider.ApiDescriptionGroups.Items)
  46. {
  47. foreach (var apiDescription in item.Items)
  48. {
  49. var displayName = apiDescription.TryGetMethodInfo(out MethodInfo apiMethodInfo) ? apiMethodInfo.GetCustomAttribute<DisplayNameAttribute>(true)?.DisplayName : "";
  50. apiList.Add(new ApiOutput
  51. {
  52. GroupName = item.GroupName,
  53. DisplayName = displayName,
  54. RouteName = apiDescription.RelativePath
  55. });
  56. }
  57. }
  58. return apiList;
  59. }
  60. }