搖獎接口代碼閱讀記錄


1.http://api.itv.cctv.com/shakeitv2/Getresult  

1)請求參數:活動期數 iid  
         用戶id uid  
         
根據iid通過prizeclient的getPrizeDetail方法查詢活動。

2)prizeclient抽獎客戶端  
    核心方法:DPrizeActivity::model()->findByPk($id);  
3)DPrizeActivity為數據中心的model類繼承framwork中的CRedisModel方法  
    找到CRedisModel中的findByPk方法 
            /**
         * 根據 pk 查詢
         * 設置 二級 pk 表示需要查詢 hash表
         */
        public function findByPk($pk, $suffix = null) {
            list($key, $field) = $this->keyManager->getCacheKeyWithSuffix($pk, $suffix);
            
            return $field !== null ? $this->hget($key, $field) : $this->get($key);
        }  
    普通存儲:get($key)獲取值  
    哈希存儲:hget($key,$field);//key為哈希名稱,field為要找值的對應鍵。  
 4)$this->keyManager->getCacheKeyWithSuffix($pk, $suffix) 執行CRedisKeyManager中的getCacheKeyWithSuffix方法。根據PK獲取緩存鍵值,自動判斷是 hash,還是普通 模式,并返回相應的 key  

    public function getCacheKeyWithSuffix($pk, $suffix) {
        $this->setSuffix($suffix);
        $key = $this->getCacheKey($pk);
        $this->delSuffix();
        
        return $key;
    }  
通過getCacheKey方法列出緩存鍵值。$key($key,$field);  

5)回到shakeitv2控制器  
    //獲取搖獎結果信息
    $prize = $prizeclient->getPrize($data, $uid,1);
    //data為當期搖獎屬性,uid為用戶id,1控制獎品是更替的  
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容