exists($key)) { $subscription_id = $redis->get($key); } if (!$subscription_id) { $subscription_id = $this->where('appid', $appid)->value('id'); if ($subscription_id) { $redis->setex($key, 3600, $subscription_id); } } if ($subscription_id) { return $this->getSubscriptionById($subscription_id); }else{ return null; } } public function getSubscriptionById($id){ $redis = Redis::instance(); $key = 'S-N:'.$id; if($redis->exists($key)){ return json_decode($redis->get($key),true); }else{ if($subscription = $this->where('id',$id)->find()){ $refresh_token = model('SubscriptionToken')->where('subscription_id',$id)->value('refresh_token'); $subscription['refresh_token'] = $refresh_token; $redis->setex($key, 3600, json_encode($subscription, JSON_UNESCAPED_UNICODE)); return $subscription; } return null; } } public function clearCacheByAppId($appid){ $redis = Redis::instance(); $key = 'S-A:' . $appid; $subscription_id = null; if ($redis->exists($key)) { $subscription_id = $redis->get($key); $redis->del('S-N:'.$subscription_id); }else{ $subscription_id = $this->where('appid', $appid)->value('id'); if ($subscription_id) { $redis->del('S-N:'.$subscription_id); } } } /** * 通过订阅号名称查找订阅号id * @param $accName * @return array|bool */ public function getIdByOfficialName($accName) { if (empty($accName)) { return false; } $where = [ 'name' => $accName, 'status' => 'normal' ]; $result = $this->where($where)->column('id'); return empty($result) ? 0 : current($result); } }