/**
  * 获取经纪人返现记录
  *
  * @param int $cityId
  * @param int $brokerId
  * @return array
  */
 public static function getBrokerChoiceConsumeCashBackLog($cityId, $brokerId)
 {
     $cacheKey = sprintf('ajk_broker_choice_consume_cash_back_log_%d_%d', $cityId, $brokerId);
     $memcache = APF_Cache_Factory::get_instance()->get_memcache();
     $brokerConsumeCashBackLog = $memcache->get($cacheKey);
     if (is_array($brokerConsumeCashBackLog) && !empty($brokerConsumeCashBackLog)) {
         return $brokerConsumeCashBackLog;
     }
     $brokerConsumeCashBackLog = Model_Choice_AjkBrokerChoiceConsumeCashBackLog::getBrokerChoiceConsumeCashBackLog($cityId, $brokerId);
     $memcache->set($cacheKey, $brokerConsumeCashBackLog, 0, 1800);
     return $brokerConsumeCashBackLog;
 }
 public function handle_request()
 {
     $currentDateIndex = intval(date('Ymd'));
     if ($currentDateIndex <= 20150319 || $currentDateIndex > 20150420) {
         $this->logMsg('Job 可以运行的时间为 2015年3月20日至2015年4月20日');
         file_put_contents($this->_doneFile, 'YES');
         return;
     }
     $brokerChoiceConsumeList = $this->getBrokerChoiceConsume($this->_calculateDate);
     foreach ($brokerChoiceConsumeList as $brokerChoiceConsume) {
         $this->setCursor($brokerChoiceConsume['id']);
         $cityId = $brokerChoiceConsume['cityId'];
         $brokerId = $brokerChoiceConsume['brokerId'];
         $consume = $brokerChoiceConsume['consume'];
         $this->logMsg(sprintf('开始处理 %s', json_encode($brokerChoiceConsume)));
         $brokerChoiceConsumeCashBackLogList = Model_Choice_AjkBrokerChoiceConsumeCashBackLog::getBrokerChoiceConsumeCashBackLog($cityId, $brokerId);
         $brokerChoiceConsumeCashBackLogCheck = array();
         foreach ($brokerChoiceConsumeCashBackLogList as $brokerChoiceConsumeCashBackLog) {
             $key = sprintf('consume_cash_back_log_%d', $brokerChoiceConsumeCashBackLog['amount']);
             $brokerChoiceConsumeCashBackLogCheck[$key] = true;
         }
         foreach ($this->_brokerChoiceConsumeCashBackStageConfig as $cashBackStageConfig) {
             if ($consume < $cashBackStageConfig['consume']) {
                 $this->logMsg(sprintf('经纪人[%d] 消费[%d] 不满足消费[%d]返现[%d]的规则 不返现', $brokerId, $consume, $cashBackStageConfig['consume'], $cashBackStageConfig['cashBack']));
                 continue;
             }
             $key = sprintf('consume_cash_back_log_%d', $cashBackStageConfig['cashBack']);
             /** 已经返现过了 */
             if (isset($brokerChoiceConsumeCashBackLogCheck[$key])) {
                 $this->logMsg(sprintf('经纪人[%d] 消费[%d] 满足消费[%d]返现[%d]的规则 已经返现过了', $brokerId, $consume, $cashBackStageConfig['consume'], $cashBackStageConfig['cashBack']));
                 continue;
             }
             /** 开始返现 */
             // $note = sprintf('累计消费 %.2f 安币,满足消费 %d 返现 %d 的规则,返现 %d 安币', $consume / 100, $cashBackStageConfig['consume'] / 100, $cashBackStageConfig['cashBack'] / 100, $cashBackStageConfig['cashBack'] / 100);
             $note = '精选活动返利';
             $this->logMsg(sprintf('经纪人[%d] 消费[%d] 满足消费[%d]返现[%d]的规则', $brokerId, $consume, $cashBackStageConfig['consume'], $cashBackStageConfig['cashBack']));
             if ($this->doCashBack($cityId, $brokerId, $cashBackStageConfig['cashBack'], $note, $cashBackStageConfig['cashBackType'])) {
                 $this->logMsg(sprintf('经纪人[%d] 消费[%d] 满足消费[%d]返现[%d]的规则 返现成功', $brokerId, $consume, $cashBackStageConfig['consume'], $cashBackStageConfig['cashBack']));
             } else {
                 $this->logMsg(sprintf('经纪人[%d] 消费[%d] 满足消费[%d]返现[%d]的规则 返现失败', $brokerId, $consume, $cashBackStageConfig['consume'], $cashBackStageConfig['cashBack']));
             }
         }
     }
     if (count($brokerChoiceConsumeList) < self::BATCH_LIMIT) {
         $this->logMsg(sprintf('处理到[%d]完成', $this->_startId));
         file_put_contents($this->_doneFile, 'YES');
     }
 }