1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace App\Models;
- use App\Support\EmailQueue;
- use App\Support\Log;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Support\Facades\Cache;
- class JuxingAdAccount extends Model
- {
- public $timestamps = false;
- protected $table = 'juxing_ad_account';
- protected static $unguarded = true;
- # token 缓存
- const JUXING_AD_USER_ACCESS_TOKEN_PRE = 'juxingAdUserAccessToken:';
- # 获取星视频数据advertiserId队列
- const JUXING_STAR_VIDEO_SYNC_ADVID_LIST = 'juxingStarVideoSyncAdvidList';
- # 获取星直播数据advertiserId队列
- const JUXING_STAR_LIVE_SYNC_ADVID_LIST = 'juxingStarLiveSyncAdvidList';
- # 获取星任务视频数据advertiserId队列
- const JUXING_QTASK_VIDEO_SYNC_ADVID_LIST = 'juxingQtaskVideoSyncAdvidList';
- # 获取星任务直播数据advertiserId队列
- const JUXING_QTASK_LIVE_SYNC_ADVID_LIST = 'juxingQtaskLiveSyncAdvidList';
- # 获取流量助推-星任务-视频数据advertiserId队列
- const JUXING_FLOW_QTASK_VIDEO_SYNC_ADVID_LIST = 'juxingFlowQtaskVideoSyncAdvidList';
- # 获取流量助推-星视频数据advertiserId队列
- const JUXING_FLOW_STAR_VIDEO_SYNC_ADVID_LIST = 'juxingFlowStarVideoSyncAdvidList';
- # 获取流量助推-星直播数据advertiserId队列
- const JUXING_FLOW_STAR_LIVE_SYNC_ADVID_LIST = 'juxingFlowStarLiveSyncAdvidList';
- # 获取流量助推-星视频每日数据advertiserId队列
- const JUXING_FLOW_STAR_VIDEO_DAILY_SYNC_ADVID_LIST = 'juxingFlowStarVideoDailySyncAdvidList';
- /**
- * 获取access_token
- * @param $advertiser_id
- * @return mixed
- */
- public static function getAccessToken($advertiser_id)
- {
- try{
- $cacheKey = self::JUXING_AD_USER_ACCESS_TOKEN_PRE.$advertiser_id;
- $accessToken = Cache::get($cacheKey);
- // Log::info('获取access_token', ['advertiser_id' => $advertiser_id, 'access_token' => $accessToken], 'getAccessToken');
- if(empty($accessToken)){
- // 从数据库获取 token_id
- $tokenId = self::query()->where('advertiser_id', $advertiser_id)->where('enable', 1)->value('token_id');
- if (empty($tokenId)) {
- Log::error('获取access_token异常-tokenid为空', ['advertiser_id' => $advertiser_id], 'getAccessToken');
- return null;
- }
- // 从数据库获取 access_token
- $accessTokenInfo = JuxingAccountInfo::query()->where('id', $tokenId)->first();
- $accessToken = $accessTokenInfo->access_token ?? null;
- if (empty($accessTokenInfo->access_token)) {
- Log::error('获取access_token异常-access_token为空', ['advertiser_id' => $advertiser_id], 'getAccessToken');
- return null;
- }
- // 判定refresh_token是否过期,若已过期则将账户禁用
- if( $accessTokenInfo->refresh_token_expires_at < date('Y-m-d H:i:s')) {
- self::query()->where('advertiser_id', $advertiser_id)->update(['enable' => 0]);
- Log::info('账户refresh_token过期,将账户禁用, 账户:【'.$advertiser_id.'】,过期时间:【'.$accessTokenInfo->refresh_token_expires_at.'】', [],
- 'disableJuxingAccount');
- }
- // $accessToken 会在过期前1小时更新,所以可以保证有效期永远大于10分钟
- Cache::put($cacheKey, $accessToken, 600); //缓存10分钟
- }
- return $accessToken;
- } catch (\Exception $exception) {
- EmailQueue::rPush('获取access_token程序异常', json_encode(['advertiser_id' => $advertiser_id, 'file' => $exception->getFile(), 'line' => $exception->getLine()
- , 'message' => $exception->getMessage()], 256), ['song.shen@kuxuan-inc.com'], '聚星');
- Log::error('获取access_token程序异常', [ 'advertiser_id' => $advertiser_id, 'file' => $exception->getFile(), 'line' => $exception->getLine(),
- 'message' => $exception->getMessage(), 'trace' => $exception->getTraceAsString()], 'getAccessTokenError');
- }
- }
- }
|