0, 'access_token' => '', ]; if ($fromDb == false) { $data = Redis::instance()->hMGet($redisKey, ['account_id', 'access_token', 'access_token_expire_time']); if ($data['account_id'] !== false) { if ($data['account_id'] > 0) { if ($data['access_token_expire_time'] <= time()) { $fromDb = true; } else { $result['account_id'] = $data['account_id']; $result['access_token'] = $data['access_token']; } } } else { $fromDb = true; } } if ($fromDb) { $row = $this->where('admin_id', 'eq', $admin_id)->find(); if ($row) { $data = $row->toArray(); //需要检测token有效期 if ($data['access_token_expire_time'] <= time()) { $access_token = GdtService::instance()->apiUpdateAccessToken($data['account_id'], $data['refresh_token'], ['admin_id' => $data['admin_id']]); if (is_null($access_token)) { Log::error("GDT刷新access_token失败:admin_id:{$admin_id}"); $result = [ 'account_id' => 0, 'access_token' => '', ]; } else { //更新数据库 $this->update(['access_token' => $access_token, 'access_token_expire_time' => time() + 85400, 'updatetime' => time()], ['id' => $data['id']]); $data['access_token'] = $access_token; $data['access_token_expire_time'] = time() + 85400; $result = [ 'account_id' => $data['account_id'], 'access_token' => $access_token, ]; } } else { $result = [ 'account_id' => $data['account_id'], 'access_token' => $data['access_token'], ]; } } else { $data = [ 'admin_id' => $admin_id, 'account_id' => 0, 'access_token' => '', 'access_token_expire_time' => 0, ]; } Redis::instance()->hMSet($redisKey, $data); Redis::instance()->expire($redisKey, 3600); } return $result; } }