/**
  * Job执行逻辑
  */
 public function handle_request()
 {
     printf('[%s] lastLogId: %s' . PHP_EOL, date('Y-m-d H:i:s'), $this->lastLogId);
     // 获取任务
     $tasks = Model_Combo_HouseRelation::getList('hz', array(array('state', '=', 101), array('id', '>', $this->lastLogId)), $this->limit, array('id', 'asc'));
     if ($tasks === false) {
         printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '获取数据失败');
         exit;
     }
     if (empty($tasks)) {
         // 任务完成
         printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '任务执行完成');
         $this->setStop();
         $this->setShStopFlag();
         $this->setFlag(array('lastLogId' => 0));
         exit;
     }
     // 循环处理任务
     foreach ($tasks as $task) {
         $this->dealTask($task);
         $this->lastLogId = $task['id'];
     }
     //记录游标
     $this->setFlag(array('lastLogId' => $this->lastLogId));
 }
 /**
  * 获取一段时间内,二手房、租房的房源状态发生变更的房源
  */
 public function handle_request_internal()
 {
     $request = APF::get_instance()->get_request();
     $routeMatches = $request->get_router_matches();
     $business = $routeMatches[1];
     /** 处理二手房 */
     if (strcasecmp($business, 'ajk') == 0) {
         $siteType = Bll_Combo_HouseRelation::SITE_TYPE_AJK;
     } elseif (strcasecmp($business, 'hz') == 0) {
         $siteType = Bll_Combo_HouseRelation::SITE_TYPE_HZ;
     } else {
         $this->responseJSON('error', array(), '非法请求');
         return;
     }
     $params = $request->get_parameters();
     if (!isset($params['start_time']) || !isset($params['end_time'])) {
         $this->responseJSON('error', array(), '参数不全');
         return;
     }
     $startId = 0;
     if (isset($params['start_id'])) {
         $startId = intval($params['start_id']);
     }
     $startTime = intval($params['start_time']);
     $endTime = intval($params['end_time']);
     if ($endTime - $startTime > 600) {
         $this->responseJSON('error', array(), '只能获取10分钟以内的推广状态变更的房源');
         return;
     }
     $condition = array(array('state', 'IN', array(101, 201, 202, 203, 204, 205)), array('updateTime', '>=', date('Y-m-d H:i:s', $startTime)), array('updateTime', '<=', date('Y-m-d H:i:s', $endTime)));
     if ($startId > 0) {
         $condition[] = array('houseId', '>', $startId);
     }
     $houseComboRelationList = Model_Combo_HouseRelation::getList($siteType, $condition, 1000, array('houseId', 'asc'));
     if (empty($houseComboRelationList)) {
         $this->responseJSON('ok', array(), '没有获取到房源推广信息');
         return;
     }
     $result = array('spread_house' => array(), 'not_spread_house' => array(), 'last_id' => 0);
     foreach ($houseComboRelationList as $houseComboRelation) {
         $result['last_id'] = $houseComboRelation['houseId'];
         if (Bll_Combo_HouseRelation::isRelationOnline($houseComboRelation['state'])) {
             $result['spread_house'][] = $houseComboRelation['houseId'];
         } else {
             $result['not_spread_house'][] = $houseComboRelation['houseId'];
         }
     }
     $this->responseJSON('ok', $result, sprintf('%s - %s 时间内推广状态发生变更的房源[%d]', date('Y-m-d H:i:s', $startTime), date('Y-m-d H:i:s', $endTime), $startId));
 }
Esempio n. 3
0
 /**
  * 根据房源id获取房源套餐推广关系
  *
  * @param int $brokerId
  * @param int $cityId
  * @param array $houseIds
  * @param string $siteType
  * @return array
  */
 public static function getHouseRelation($brokerId, $cityId, $houseIds, $siteType)
 {
     $condition = array('brokerId' => $brokerId, 'cityId' => $cityId, 'houseId' => $houseIds);
     $houseRelationList = Model_Combo_HouseRelation::getList($siteType, $condition);
     return $houseRelationList;
 }