Base.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. namespace app\extra\ocean;
  3. use support\think\Cache;
  4. use yzh52521\EasyHttp\Http;
  5. class Base
  6. {
  7. /**
  8. * 新版API地址
  9. * @var string
  10. */
  11. protected string $gateway = "https://api.oceanengine.com/open_api/";
  12. /**
  13. * API地址
  14. * @var string
  15. */
  16. protected string $gatewayOld = "https://ad.oceanengine.com/open_api/";
  17. /**
  18. * 配置信息
  19. * @var array
  20. */
  21. protected array $config = [];
  22. /**
  23. * @var string
  24. */
  25. private string $access_token;
  26. /**
  27. * 默认header
  28. * @var string[]
  29. */
  30. protected array $header = ['Content-Type: application/json'];
  31. /**
  32. * AccessToken前缀
  33. * @var string
  34. */
  35. protected string $tokenPrefix = "ocean_[appid]_access_token";
  36. /**
  37. * RefreshToken前缀
  38. * @var string
  39. */
  40. protected string $refreshPrefix = "ocean_[appid]_refresh_token";
  41. public function token(): static
  42. {
  43. $this->header = [
  44. "Access-Token" => $this->getAccessToken()
  45. ];
  46. return $this;
  47. }
  48. /**
  49. * 设置配置信息
  50. * @param array $config
  51. * @return $this
  52. */
  53. public function config(array $config = []): static
  54. {
  55. $this->config = $config;
  56. return $this;
  57. }
  58. public function getAccessToken()
  59. {
  60. $accessToken = Cache::get($this->getTokenPrefix());
  61. if (!empty($accessToken)) return $accessToken;
  62. $refreshToken = Cache::get($this->getRefreshPrefix());
  63. $result = (new AccessToken)->config($this->config)->refreshAccessToken($refreshToken,$this->config['prefix']);
  64. if (!is_array($result)) return "获取Token失败\n";
  65. Cache::set($this->getTokenPrefix(),$result['access_token'],$result['expires_in']);
  66. Cache::set($this->getRefreshPrefix(),$result['refresh_token'],$result['refresh_token_expires_in']);
  67. return $result['access_token'];
  68. }
  69. /**
  70. * @param string $url
  71. * @param array $data
  72. * @param string $field
  73. * @return array
  74. */
  75. public function curlPostApi(string $url = "", array $data = [], string $field = "data"): array
  76. {
  77. $result = Http::asJson()->withHeaders($this->header)->post($this->gateway.$url,$data)->array();
  78. if (isset($result['code']) && $result['code'] <> 0) return ['msg' => $result['message']];
  79. if(!empty($result[$field]))
  80. {
  81. return $result[$field];
  82. }
  83. return [];
  84. }
  85. /**
  86. * @param string $url
  87. * @param array $data
  88. * @param string $field
  89. * @return array
  90. */
  91. public function curlGetApi(string $url = "", array $data = [], string $field = "data"): array
  92. {
  93. $result = Http::asJson()->withHeaders($this->header)->get($this->gateway.$url,$data)->array();
  94. if (isset($result['code']) && $result['code'] <> 0) return ['msg' => $result['message']];
  95. if(!empty($result[$field]))
  96. {
  97. return $result[$field];
  98. }
  99. return [];
  100. }
  101. /**
  102. * @return string
  103. */
  104. protected function getTokenPrefix(): string
  105. {
  106. return str_replace("[appid]",$this->config['appid'],$this->tokenPrefix);
  107. }
  108. /**
  109. * @return string
  110. */
  111. protected function getRefreshPrefix(): string
  112. {
  113. return str_replace("[appid]",$this->config['appid'],$this->refreshPrefix);
  114. }
  115. }