/** * 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)); }
/** * 根据房源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; }