123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?php
- namespace App\Console\Commands;
- use App\Models\JuxingAccountInfo;
- use App\Models\JuxingAdAccount;
- use App\Services\CallbackService;
- use App\Support\Log;
- use Illuminate\Console\Command;
- use Illuminate\Support\Facades\DB;
- use kwaiSDK\PubUse;
- class RefreshJuxingToken extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'RefreshJuxingToken';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '磁力聚星刷新token';
- /**
- * Create a new command instance.
- *
- * @return void
- */
- public function __construct()
- {
- parent::__construct();
- }
- /**
- * Execute the console command.
- *
- * @return int
- */
- public function handle()
- {
- DB::disableQueryLog();
- $this->info(date('H:i') . ' 开始执行');
- $this->start();
- $this->info(date('H:i') . ' 结束执行');
- return 0;
- }
- public function start()
- {
- $tokenIds = JuxingAdAccount::query()
- ->where('enable', 1)
- ->pluck('token_id');
- // 更新有效期小于2小时的账户Token
- $refreshLine = date('Y-m-d H:i:s', strtotime("+2 hour"));
- $refreshTokenList = JuxingAccountInfo::query()
- ->whereIn('id', $tokenIds)
- ->where(function ($query) use ($refreshLine) {
- $query->where('access_token_expires_at', '<', $refreshLine)
- ->where('refresh_token_expires_at', '>', date('Y-m-d H:i:s'));
- })
- ->pluck('admin_id', 'refresh_token');
- if ($refreshTokenList->isEmpty()) return 0;
- foreach ($refreshTokenList->all() as $refreshToken => $adminId) {
- $this->refreshToken($refreshToken, $adminId);
- }
- return 0;
- }
- public function refreshToken($refreshToken, $adminId)
- {
- try {
- $juxingConf = config('kwai')['juxing'];
- $pubuse = new PubUse($juxingConf['app_id'], $juxingConf['secret']);
- $userAuthorize = $pubuse->authorize()->refreshToken([
- 'refresh_token' => $refreshToken
- ]);
- Log::info('磁力聚星刷新token', [
- 'response' => $userAuthorize, 'conf' => $juxingConf, 'refresh_token' => $refreshToken
- ], 'RefreshJuxingToken');
- if (!isset($userAuthorize['code']) || $userAuthorize['code'] !== 0) {
- Log::error('磁力聚星refreshToken失败', $userAuthorize, 'RefreshJuxingToken');
- return false;
- }
- $advertiserList = CallbackService::getApprovalList($juxingConf, $userAuthorize);
- $rst = CallbackService::saveJuxingAccount(['admin_id' => $adminId], $userAuthorize, $advertiserList,2);
- $msg = $rst ? '磁力聚星refreshToken成功' : '磁力聚星refreshToken失败';
- Log::info($msg, $userAuthorize, 'RefreshJuxingToken');
- } catch (\Throwable $e) {
- Log::error('磁力聚星refreshToken失败 '.$e->getMessage(), [
- 'param' => [
- 'refresh_token' => $refreshToken,
- 'admin_id' => $adminId
- ],
- 'trace' => $e->getTraceAsString()
- ], 'RefreshJuxingToken');
- }
- return 0;
- }
- }
|