123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- <?php
- namespace crmeb\services\erp;
- use crmeb\services\HttpService;
- use crmeb\services\CacheService;
- use think\facade\Config;
- use think\facade\Log;
- use think\helper\Str;
- use Psr\SimpleCache\CacheInterface;
- class AccessToken extends HttpService
- {
-
- protected $account;
-
- protected $secret;
-
- protected $apiUrl;
-
- protected $authAccount;
-
- protected $authPassword;
-
- protected $cache;
-
- protected $accessToken;
-
- protected $name;
-
- protected $configFile;
-
- protected $cacheTokenPrefix = "_crmeb_erp";
-
- protected $cacheRefreshTokenPrefix = "_crmeb_erp_re";
-
- public function __construct(string $name, string $configFile, array $config, ?CacheInterface $cache = null)
- {
- if (!$cache) {
-
- $cache = app()->make(CacheService::class);
- }
- $this->account = isset($config["app_key"]) ? $config["app_key"] : config($configFile . '.stores.' . $name . '.app_key', '');
- $this->secret = isset($config["secret"]) ? $config["secret"] : config($configFile . '.stores.' . $name . '.secret', '');
- $this->authAccount = $config['login_account'] ?? config($configFile . '.stores.' . $name . '.login_account', '');
- $this->authPassword = $config['login_password'] ?? config($configFile . '.stores.' . $name . '.login_password', '');
- $this->cache = $cache;
- $this->name = $name;
- $this->configFile = $configFile;
- $this->apiUrl = Config::get($configFile . '.stores.' . $name . '.url', '');
- $this->apiUrl = 'https://openapi.jushuitan.com';
- }
-
- public function getConfig(): array
- {
- return [
- 'account' => $this->account,
- 'secret' => $this->secret
- ];
- }
-
- public function getApiUrl(string $url = ''): string
- {
- return $url ? $this->apiUrl . $url : $this->apiUrl;
- }
-
- public function getAccount(): string
- {
- return $this->account;
- }
-
- public function getAuthAccount()
- {
- return $this->authAccount;
- }
-
- public function getAuthPassword()
- {
- return $this->authPassword;
- }
-
- public function getSecret(): string
- {
- return $this->secret;
- }
-
- public function getAccessToken(): ?string
- {
- if (isset($this->accessToken)) {
- return $this->accessToken;
- }
-
- $action = 'get' . Str::studly($this->name) . 'AccessToken';
- if (method_exists($this, $action)) {
- return $this->{$action}();
- } else {
- throw new \RuntimeException(__CLASS__ . '->' . $action . '(),Method not worn in');
- }
- }
-
- protected function getJushuitanAccessToken(): ?string
- {
-
- $cacheKey = md5($this->account . '_' . $this->secret . $this->cacheTokenPrefix);
- $this->accessToken = $this->cache->get($cacheKey);
-
- if (empty($this->accessToken)) {
- throw new \RuntimeException("请跳转授权", 610);
- }
- return $this->accessToken;
- }
-
- public function setAccessToken(string $accessToken, int $expiresIn): bool
- {
- if (empty($accessToken) || !is_numeric($expiresIn) || $expiresIn <= 0) {
- return false;
- }
-
- $cacheKey = md5($this->account . '_' . $this->secret . $this->cacheTokenPrefix);
- $this->cache->redisHandler()->tag('erp_shop')->set($cacheKey, $accessToken, $expiresIn);
- $this->accessToken = $accessToken;
- return true;
- }
-
- public function setTokenExpire(string $accessToken, int $expiresIn): bool
- {
- if (empty($accessToken) || !is_numeric($expiresIn) || $expiresIn <= 0) {
- return false;
- }
-
- $cacheKey = md5($this->account . '_' . $this->secret . '_epr_expire');
- $this->cache->redisHandler()->tag('erp_shop')->set($cacheKey, $accessToken, $expiresIn);
- $this->accessToken = $accessToken;
- return true;
- }
-
- public function getTokenExpire()
- {
- $cacheKey = md5($this->account . '_' . $this->secret . '_epr_expire');
- return $this->cache->get($cacheKey);
- }
-
- public function setRefreshToken(string $refreshToken): bool
- {
- if (empty($refreshToken)) {
- return false;
- }
-
- $cacheKey = md5($this->account . '_' . $this->secret . $this->cacheRefreshTokenPrefix);
- $this->cache->redisHandler()->tag('erp_shop')->set($cacheKey, $refreshToken);
- return true;
- }
-
- public function getRefreshToken(): string
- {
-
- $cacheKey = md5($this->account . '_' . $this->secret . $this->cacheRefreshTokenPrefix);
- return $this->cache->get($cacheKey);
- }
- }
|