/** * 通知SOLR下架房源 * * @param $cityId * @param $hzBrokerId * @param $houseId * @param int $ajkBrokerId */ private function noticeComboSolr($cityId, $hzBrokerId, $houseId, $ajkBrokerId = 0) { if ($ajkBrokerId == 0) { $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($hzBrokerId); } $result = Bll_Combo_NoticeSolrUpDown::noticeChoiceSolrZfAPI($cityId, $ajkBrokerId, $houseId, 2, Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_DOWN, Bll_Combo_NoticeSolrUpDown::HLS_FROM_HOUSE_STATE_REPAIR); $this->setLog(sprintf('通知房源[%d]solr下架,result: %s', $houseId, json_encode($result))); }
/** * 查询房子 如果删除、过期则通知下 更新套餐关系 * @param $task * @return bool */ public function dealTask($task) { $proId = $task['houseId']; $propInfo = Bll_House_HzHouse::getPropInfo($proId, $task['cityId'], 2); printf('[%s] 房源[%d]: %s' . PHP_EOL, date('Y-m-d H:i:s'), $proId, json_encode($propInfo)); if ($propInfo && $propInfo['status'] == 1 && !in_array($propInfo['msg']['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) { printf('房源 %s 状态为%s, 不需要处理' . PHP_EOL, $proId, $propInfo['msg']['status']); return true; } printf('房源 %s 状态为%s, 需要通知solr下,更新套餐关系为204' . PHP_EOL, $proId, $propInfo['msg']['status']); // 通知solr $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrHzAPI($task['cityId'], $task['brokerId'], $proId, 2); printf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $proId, $result['status'], $result['message']); // 更新套餐关系 $result = Bll_Combo_HouseRelation::updateHouseComboSpreadState($task['brokerId'], $proId, 'hz', 204); printf('房源 %s 更新套餐关系返回的结果message=%s' . PHP_EOL, $proId, $result ? '成功' : '失败'); return true; }
public function handle_request() { $houseRelationList = $this->getComboSpreadHouseList(); foreach ($houseRelationList as $houseRelation) { $this->setCursor($houseRelation['id']); $this->logMsg(sprintf('处理房源[%d] %s', $houseRelation['houseId'], json_encode($houseRelation))); $houseRank = Model_Jinpu_HouseRank::getHouseRankById($houseRelation['houseId']); if (empty($houseRank)) { $this->logMsg(sprintf('房源[%d]没有获取到rank信息', $houseRelation['houseId'])); continue; } $rankUpdateTime = strtotime($houseRank['update_time']); $spreadTime = strtotime($houseRelation['updateTime']); /** 如果rank的更新时间 大于 房源做推广的时间,就通知solr更新房源信息 */ if ($rankUpdateTime >= $spreadTime) { $houseInfo = $this->getHouseInfo($houseRelation['houseId']); if (empty($houseInfo)) { $this->logMsg('获取房源[%d]信息失败', $houseRelation['houseId']); continue; } $this->logMsg(sprintf('房源信息 %s', json_encode($houseInfo))); if ($houseInfo['houseType'] < 1 || $houseInfo['houseType'] > 4) { $this->logMsg(sprintf('房源[%d]信息错误', $houseRelation['houseId'])); continue; } $requestId = date('Ymd', $rankUpdateTime) . $houseRelation['id']; $from = Bll_Combo_NoticeSolrUpDown::HLS_FROM_REPAIR_UPDATE_RANK_NOTIFY_SOLR; // $action = Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_UP; // $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($houseRelation['cityId'], $houseRelation['brokerId'], $houseRelation['houseId'], $houseInfo['houseType'], $action, $from, $rankUpdateTime, $requestId); $result = Bll_Combo_NoticeSolrUpDown::noticeUpdateJpAPI($houseRelation['cityId'], $houseRelation['houseId'], $houseInfo['houseType'], $from, $rankUpdateTime, $requestId); if (is_array($result) && $result['status'] == 'ok') { $this->logMsg(sprintf('房源[%d]通知solr成功 %s', $houseRelation['houseId'], json_encode($result))); continue; } $this->logMsg(sprintf('房源[%d]通知solr失败 %s', $houseRelation['houseId'], json_encode($result))); } } if (count($houseRelationList) < self::BATCH_LIMIT) { file_put_contents($this->_doneFile, 'DONE'); } }
public function dealTask($solrOnProId) { if ($onlineComboRelation = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($solrOnProId, Bll_Combo_HouseRelation::SITE_TYPE_JP)) { printf('房源 %s 已经在套餐推广中, 不用通知solr下' . PHP_EOL, $solrOnProId); return true; } // 房源没有或者不在线 通知solr下 //Bll_House_JpHouseInfo::updateHouseToSolr(1, $solrOnProId, 1); $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $onlineComboRelation['brokerId'], $solrOnProId, 1, 2, Bll_Combo_NoticeSolrUpDown::HLSFromComboCheckNotice); printf('房源 %s 没有在套餐推广中, 需要通知solr下' . PHP_EOL, $solrOnProId); printf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message']); return true; }
public function dealTask($solrOnProId) { $houseInfo = Model_House_JpHouseIdx::data_access()->filter('id', $solrOnProId)->get_row(); $brokerInfo = Model_Broker_JpBroker::data_access()->filter('id', $houseInfo['memberId'])->get_row(); if ($houseInfo['isDelete'] == 1) { if ($this->dealFlag) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $brokerInfo['ajkMemberId'], $solrOnProId, $houseInfo['houseType'], 2); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message'])); } $this->setLog(sprintf('房源 %s 已经删除, 需要通知solr下' . PHP_EOL, $solrOnProId)); return true; } //查询城市配置信息 $ComboConfig = DAO_My_ComboConfig::getComboConfigByCityId($houseInfo['cityId']); if ($ComboConfig && $ComboConfig['type'] == 0) { //套餐城市 if (!Bll_Combo_HouseRelation::getOnlineRelationByHouseId($solrOnProId, Bll_Combo_HouseRelation::SITE_TYPE_JP)) { if ($this->dealFlag) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $brokerInfo['ajkMemberId'], $solrOnProId, $houseInfo['houseType'], 2); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message'])); } $this->setLog(sprintf('房源 %s 不在套餐推广中, 需要通知solr下' . PHP_EOL, $solrOnProId)); return true; } return true; } else { //ppc城市 if ($houseInfo['spreadId'] != 0) { $spreadInfo = Model_Plan_Jp::data_access()->filter('id', $houseInfo['spreadId'])->filter('type', Model_Plan_Jp::ENUM_TYPE_FIX)->filter('isDelete', Model_Plan_Jp::ENUM_IS_DELETE_NO)->get_row(); if ($spreadInfo && $spreadInfo['status'] == 2) { return true; } } if ($this->dealFlag) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $brokerInfo['ajkMemberId'], $solrOnProId, $houseInfo['houseType'], 2); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message'])); } $this->setLog(sprintf('房源 %s 不在定价推广中, 需要通知solr下' . PHP_EOL, $solrOnProId)); return true; } }
public function handle_request() { $cityIds = $this->getOption('city', array()); if (empty($cityIds)) { $this->logMsg('Usage: launcher.php Combo_AjkCheckHouseIsValidate --cityId=... [--release=...] '); return; } $cityIdList = explode(',', $cityIds); $dealCityIdList = array(); foreach ($cityIdList as $cityId) { if (false == Bll_City::isComboCity($cityId)) { $this->logMsg(sprintf('城市:%d 不是套餐城市,不予处理。', $cityId)); continue; } $dealCityIdList[] = $cityId; } $this->logMsg(sprintf('开始处理城市[%s]........', implode(',', $dealCityIdList))); $brokerList = Bll_Broker::scanComboBrokerByCityId($dealCityIdList, $this->_startId, self::BROKER_LIMIT); if (empty($brokerList)) { $this->logMsg(sprintf('startId: %d 没有获取到经纪人。', $this->_startId)); file_put_contents($this->_doneFile, 'YES'); return; } foreach ($brokerList as $broker) { $this->setCursor($broker['brokerId']); $onlineHouseRelationList = Bll_Combo_HouseRelation::getOnlineHouseList($broker['brokerId'], $broker['cityId'], Bll_Combo_HouseRelation::SITE_TYPE_AJK); /** 经纪人没有在线房源 */ if (empty($onlineHouseRelationList)) { $this->logMsg(sprintf('经纪人[%d]没有在线房源', $broker['brokerId'])); continue; } /** 获取在线房源ID */ $onlineHouseList = array(); foreach ($onlineHouseRelationList as $onlineHouseRelation) { $onlineHouseList[] = $onlineHouseRelation['houseId']; } $houseList = static::getInvalidateHouse($broker['cityId'], $broker['brokerId'], $onlineHouseList); /** 没有获取无效的房源信息 */ if (empty($houseList)) { $this->logMsg(sprintf('经纪人[%d]没有获取无效的房源[%s]信息', $broker['brokerId'], implode(',', $onlineHouseList))); continue; } foreach ($houseList as $house) { $this->logMsg(sprintf('房源[%d] brokerId=%d operateState=%d isVisible=%d expireWorker=%s updatedDatetime=%s', $house['proId'], $house['brokerId'], $house['operateState'], $house['isVisible'], $house['expireWorker'], $house['updatedDatetime'])); $effectRowCount = Bll_Combo_HouseRelation::updateHouseComboSpreadState($house['brokerId'], $house['proId'], Bll_Combo_HouseRelation::SITE_TYPE_AJK, Model_Combo_HouseRelation::ENUM_HOUSE_DELETE); if ($effectRowCount != 1) { $this->logMsg(sprintf('房源[%d] 更新关系失败', $house['proId'])); continue; } /** 通知用户端下架房源 */ $apiResponse = Bll_Combo_NoticeSolrUpDown::noticeComboSolrAjkAPI($broker['cityId'], $house['brokerId'], $house['proId'], Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_DOWN); if ($apiResponse['status'] == 'ok') { $this->logMsg(sprintf('房源[%d] 通知下架成功', $house['proId'])); } else { $this->logMsg(sprintf('房源[%d] 通知下架失败, apiResponse:%s', $house['proId'], json_encode($apiResponse))); } } } if (count($brokerList) < self::BROKER_LIMIT) { $this->logMsg(sprintf('startId: %d 经纪人已经处理完成', $this->_startId)); file_put_contents($this->_doneFile, 'YES'); } }
public function dealTask($task) { $solrOnProId = $task['id']; // 只下经纪人 //1:老端口房源(安居客经纪人发的租房房源) //3:租房经纪人房源 //0:个人房源 $from = $task['from']; if ($from != 3) { printf('非经纪人房源 %s 不用处理' . PHP_EOL, $solrOnProId); return true; } if ($onlineComboRelation = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($solrOnProId, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) { printf('房源 %s 已经在套餐推广中, 不用通知solr下' . PHP_EOL, $solrOnProId); return true; } // 房源没有或者不在线 通知solr下 //Dao_Broker_HzProp::into_prop_lucene($solrOnProId, $this->cityId, 2); $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrHzAPI($this->cityId, $onlineComboRelation['brokerId'], $solrOnProId, 2); printf('房源 %s 没有在套餐推广中, 需要通知solr下' . PHP_EOL, $solrOnProId); printf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message']); return true; }
public function addPriceQueueByAPI($brokerId, $cityId, $propIds, $flag) { // $fields = array( // 'city_id' => $cityId, // 'broker_id' => $brokerId, // 'pro_id' => $propIds, // 'flag' => $flag, // //'hpstarttime' => $hpStartTime, // //'hpendtime' => 0, // //'hpplanid' => $hpPlanId, // 'update_time' => time(), // 'from_type' => 106, // ); // // //调用api // $url = APF::get_instance()->get_config("ajk_prop_pricing_updown"); // $url .= 'publish?tunnel=esf_prop_state_update'; // $curl = new Util_Http_Curl(); // $res = $curl->setDefaults() // ->addOption(CURLOPT_POSTFIELDS, json_encode($fields)) // ->post($url); // return $res; return Bll_Combo_NoticeSolrUpDown::noticePpcUpdateAjkAPI($cityId, $brokerId, $propIds, $flag, Bll_Combo_NoticeSolrUpDown::HLSFromProRecoverGrade); }
private function dealFailureHouse() { $houseIdList = file($this->_failureHouseIdFile); if (empty($houseIdList)) { $this->logMsg('没有需要处理的房源。'); return; } foreach ($houseIdList as $houseId) { /** 再判断一下房源是否应该在线,预防将该下的房源通知上了 */ $onlineHouseRelation = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_AJK); if (empty($onlineHouseRelation)) { $this->logMsg(sprintf('房源[%d]已经下线, 不予处理。', $houseId)); continue; } $this->logMsg(sprintf('调用参数:cityId=%d, brokerId=%d, houseId=%d', $onlineHouseRelation['cityId'], $onlineHouseRelation['brokerId'], $onlineHouseRelation['houseId'])); $apiResponse = Bll_Combo_NoticeSolrUpDown::noticeComboSolrAjkAPI($onlineHouseRelation['cityId'], $onlineHouseRelation['brokerId'], $onlineHouseRelation['houseId'], Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_UP, Bll_Combo_NoticeSolrUpDown::NOTICE_FROM_TYPE_CHECK_HOUSE_FOR_SOLR); if (is_null($apiResponse) || !isset($apiResponse['status']) || strcasecmp('ok', $apiResponse['status']) != 0) { $this->logMsg(sprintf('调用API失败。res: %s', json_encode($apiResponse))); continue; } $this->logMsg(sprintf('调用API成功。res: %s', json_encode($apiResponse))); } file_put_contents($this->_doneFile, 'DONE'); }
/** * 精选通知solr */ public function choiceUpDownSendSolr($fields) { /** 2015-06-08 曹阳说已经在上下架Job里处理了 */ return true; $url = Bll_Combo_NoticeSolrUpDown::getNoticeUrl('esf_prop_auction_updown'); $url .= 'publish?tunnel=esf_prop_auction_updown'; file_put_contents('/data1/logs/SendSolrForApi.log', $url . "\n", FILE_APPEND); file_put_contents('/data1/logs/SendSolrForApi.log', json_encode($fields) . "\n", FILE_APPEND); $curl = new Util_Http_Curl(); $res = $curl->setDefaults()->addOption(CURLOPT_POSTFIELDS, json_encode($fields))->post($url); file_put_contents('/data1/logs/SendSolrForApi.log', $res . "\n", FILE_APPEND); $resArr = json_decode($res, true); if ($resArr['status'] == 'ok') { return true; } else { $this->setMsg($res); return false; } }
private function noticeComboSolr($memberId, $houseId, $houseType) { $brokerInfo = Model_Broker_JpBroker::getBrokerInfoById($memberId, array('cityId', 'ajkMemberId')); if (empty($brokerInfo)) { $this->logMsg(sprintf('获取经纪人[%d]信息失败[houseId - %d - %d]', $memberId, $houseId, $houseType)); return; } $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($brokerInfo['cityId'], $brokerInfo['ajkMemberId'], $houseId, $houseType, self::NOTICE_SOLR_ACTION, self::NOTICE_SOLR_FROM, time(), date('YmdHis') . $houseId); $this->logMsg(sprintf('通知房源[%d - %d]solr下架,result: %s', $houseId, $houseType, json_encode($result))); }
public function handle_request() { $dealCityList = $this->getOption('city', array()); if (!is_array($dealCityList)) { $dealCityList = explode(',', $dealCityList); } if (empty($dealCityList)) { $this->logMsg('请传需要处理城市ID'); file_put_contents($this->_doneFile, 'YES'); return; } file_put_contents($this->_doneFile, 'NO'); $brokerList = $this->getBrokerList($dealCityList, $this->_startId); if (empty($brokerList)) { $this->logMsg(sprintf('startId: %d 没有获取到经纪人。', $this->_startId)); file_put_contents($this->_doneFile, 'YES'); return; } foreach ($brokerList as $broker) { $brokerId = $broker['brokerId']; $cityId = $broker['cityId']; $this->logMsg(sprintf('开始处理城市 %d 经纪人 %d', $cityId, $brokerId)); $houseList = Bll_House_EsfHouse::getBrokerAllPropInfoList($brokerId, $cityId); $houseIds = array(); foreach ($houseList as $house) { $houseIds[] = $house['proId']; } $this->logMsg(sprintf('经纪人 %d 共有 %d 套房源[%s]', $brokerId, count($houseIds), implode(',', $houseIds))); $spreadHouseList = Bll_Combo_HouseRelation::getOnlineHouseList($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_AJK); $spreadHouseIds = array(); foreach ($spreadHouseList as $spreadHouse) { $spreadHouseIds[] = $spreadHouse['houseId']; } $this->logMsg(sprintf('经纪人 %d 共有推广 %d 套房源[%s]', $brokerId, count($spreadHouseIds), implode(',', $spreadHouseIds))); $houseIds = array_diff($houseIds, $spreadHouseIds); $this->logMsg(sprintf('经纪人 %d 需要下掉 %d 套房源[%s]', $brokerId, count($houseIds), implode(',', $houseIds))); foreach ($houseIds as $houseId) { /** 通知用户端下架房源 */ $apiResponse = Bll_Combo_NoticeSolrUpDown::noticeComboSolrAjkAPI($cityId, $brokerId, $houseId, Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_DOWN); if ($apiResponse['status'] == 'ok') { $this->logMsg(sprintf('房源[%d] 通知下架成功', $houseId)); } else { $this->logMsg(sprintf('房源[%d] 通知下架失败, apiResponse:%s', $houseId, json_encode($apiResponse))); } } $this->setCursor($brokerId); } if (count($brokerList) < self::BROKER_LIMIT) { $this->logMsg(sprintf('startId: %d 经纪人已经处理完成', $this->_startId)); file_put_contents($this->_doneFile, 'YES'); } }
public function dealTask($task, $solrProIds) { $proId = $task['proid']; if (in_array($proId, $solrProIds)) { return true; } // 没有则通知solr上 且发邮件 // 如果新端口 走中间件 if (Bll_City::isComboCity($task['cityid'])) { Bll_Combo_NoticeSolrUpDown::noticeComboSolrHzAPI($task['city_id'], $task['userid'], $proId, 2); } else { Dao_Broker_HzProp::into_prop_lucene($proId, $task['cityid'], 1); } $this->errorPropIds[] = $proId; return true; }
public function dealTask($task) { $solrOnProId = $task['id']; //1:老端口房源(安居客经纪人发的租房房源) //3:租房经纪人房源 //0:个人房源 $from = $task['from']; if ($from == 1) { return true; } // 查主表获取cityId 如果没有则标记邮件发出 $propInfo = Model_House_HzProp::get_prop_info_by_prop_id($solrOnProId); if ($propInfo && $propInfo['contentBasic']['status'] == 1) { $this->proceLog .= 'remark 房源推广中'; return true; } // 房源没有或者不在线 通知solr下 且发邮件 $type = 2; if ($from == 0) { $type = 1; } // 个人房源 // 如果新端口 走中间件 if (Bll_City::isComboCity($task['city_id'])) { Bll_Combo_NoticeSolrUpDown::noticeComboSolrHzAPI($task['city_id'], $propInfo['contentBasic']['userid'], $solrOnProId, 2, $type); } else { Dao_Broker_HzProp::into_prop_lucene($solrOnProId, $task['city_id'], 2, $type); } if (empty($propInfo)) { $this->proceLog .= 'remark 房源未找到'; $this->emptyPropIds[] = $solrOnProId; } else { $this->proceLog .= 'remark 房源非推广 status:' . $propInfo['contentBasic']['status']; $this->errorPropIds = $solrOnProId; } return true; }
/** * 通知中间件上下架房源 * * @param int $houseId * @param int $flag */ private function notifyMiddleWare($houseId, $flag) { $resArr = Bll_Combo_NoticeSolrUpDown::noticeComboSolrAjkAPI($this->_cityId, $this->_brokerId, $houseId, $flag, Bll_Combo_NoticeSolrUpDown::HLS_FROM_HOUSE_STATE_CHECK_REPAIR, time(), date('Ymd') . $houseId); if ($resArr['status'] != 'ok') { $this->logMsg(sprintf('通知中间件失败 res:%s', json_encode($resArr))); return; } $this->logMsg(sprintf('通知中间件成功 res:%s', json_encode($resArr))); }
/** * 通知小区信息变更 * * @param array $record * @param int $siteType * @return bool */ public function noticeCommunityInfoChange($record, $siteType) { if ($record['type'] != Model_Log_HouseLogNew::TYPE_COMMUNITY_INFO_CHANGE && $record['type'] != Model_Log_HouseLogNew::TYPE_COMMUNITY_AREA_CHANGE) { $this->setLog('不是小区信息变更,不做处理 ' . __METHOD__); return false; } if ($siteType == 2) { $resArr = Bll_Combo_NoticeSolrUpDown::noticeUpdateZfAPI($record['cityId'], $record['houseId'], 2, 2, Bll_Combo_NoticeSolrUpDown::HLS_FROM_HOUSE_COMMUNITY_INFO_CHANGE, strtotime($record['addDate']), date('Ymd', strtotime($record['addDate'])) . $record['id']); } else { $resArr = Bll_Combo_NoticeSolrUpDown::noticeUpdateAjkAPI($record['cityId'], $record['houseId'], 2, Bll_Combo_NoticeSolrUpDown::HLS_FROM_HOUSE_COMMUNITY_INFO_CHANGE, strtotime($record['addDate']), date('Ymd', strtotime($record['addDate'])) . $record['id']); } if ($resArr['status'] == 'ok') { //记录处理日志 $this->setLog('solr处理成功 '); } else { //记录处理日志 $this->setLog('solr处理失败 '); } return true; }
/** * 判断该task的房子 不在线则通知上 * @param $task * @return bool * @throws Exception */ public function dealTask($task) { $houseInfo = $task; $proId = $houseInfo['id']; $cityId = $houseInfo['cityId']; $brokerInfo = Model_Broker_JpBroker::data_access()->filter('id', $houseInfo['memberId'])->get_row(); //查询城市配置信息 $ComboConfig = DAO_My_ComboConfig::getComboConfigByCityId($cityId); // 判断solr是否在线 不在线通知上 if ($ComboConfig && $ComboConfig['type'] == 0) { //套餐城市 if (Bll_Combo_HouseRelation::getOnlineRelationByHouseId($proId, Bll_Combo_HouseRelation::SITE_TYPE_JP)) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($cityId, $brokerInfo['ajkMemberId'], $proId, $houseInfo['houseType'], 1); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $proId, $result['status'], $result['message'])); $this->setLog(sprintf('房源 %s 在套餐推广中, 需要通知solr上' . PHP_EOL, $proId)); return true; } return true; } else { //ppc城市 if ($houseInfo['fixSpreadId'] != 0) { $spreadInfo = Model_Plan_Jp::data_access()->filter('id', $houseInfo['fixSpreadId'])->filter('type', Model_Plan_Jp::ENUM_TYPE_FIX)->filter('isDelete', Model_Plan_Jp::ENUM_IS_DELETE_NO)->get_row(); if ($spreadInfo && $spreadInfo['status'] == 2) { // 定价在线 需要通知上 $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($cityId, $brokerInfo['ajkMemberId'], $proId, $houseInfo['houseType'], 1); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $proId, $result['status'], $result['message'])); $this->setLog(sprintf('房源 %s 在定价推广中, 需要通知solr上' . PHP_EOL, $proId)); return true; } } return true; } }
/** * 执行流程: * 1. 从 broker_ppc_ceiling_log 获取到 封顶的经纪人ID, * 2. 根据经纪人ID获取到经纪人当前有效的推广计划 * 3. 根据推广计划和城市ID 获取到计划里的房源列表 * 4. 将有效的房源推送到SOLAR队列 */ public function handle_request() { if (file_exists($this->logFile) && is_readable($this->logFile)) { $this->lastUpdateTime = intval(file_get_contents($this->logFile)); } while (true) { /** 从封顶经纪人对列表里获取经纪人ID */ $brokerList = $this->getTopLimitBrokerList($this->lastUpdateTime); if (empty($brokerList)) { break; } foreach ($brokerList as $broker) { $this->lastUpdateTime = $broker['upd_time']; /** 根据经纪人ID 获取经纪人有效的推广计划列表 */ $planList = $this->getStaticPricePlanByBrokerId($broker['broker_id']); if (empty($planList)) { printf('[%s] 经纪人ID【%d】没有获取到推广信息!' . PHP_EOL, date('Y-m-d H:i:s'), $broker['broker_id']); continue; } foreach ($planList as $plan) { /** 根据推广计划ID和城市ID,获取计划下对应的房源 */ $propList = $this->getPropListSpreadRelation($plan['id'], $plan['cityId']); if (empty($propList)) { printf('[%s] 计划ID【%d】没有获取到房源信息!' . PHP_EOL, date('Y-m-d H:i:s'), $plan['Id']); continue; } /** 批量添加 Solar队列 */ // $this->batchInsertLogRankPropUpdate($broker['broker_id'], $propList, $plan['cityId']); //调用api // $url = APF::get_instance()->get_config("ajk_prop_pricing_updown"); // $url .= 'publish?tunnel=esf_prop_state_update'; // // $fields['city_id'] = $plan['cityId']; // $fields['broker_id'] = $plan['brokerId']; // $fields['flag'] = 1; // //$fields['hpstarttime'] = $plan['viewTime']; // //$fields['hpendtime'] = 0; // //$fields['hpplanid'] = $plan['id']; // $fields['update_time'] = time(); // $fields['from_type'] = 102; foreach ($propList as $prop) { $fields['pro_id'][] = $prop['ProId']; } // $post_data = json_encode($fields); // // $curl = new Util_Http_Curl(); // $res = $curl->setDefaults() // ->addOption(CURLOPT_POSTFIELDS, $post_data) // ->post($url); // // $res = json_decode($res,true); $res = Bll_Combo_NoticeSolrUpDown::noticePpcUpdateAjkAPI($plan['cityId'], $plan['brokerId'], $fields['pro_id'], 1, Bll_Combo_NoticeSolrUpDown::HLSFromProDownGrade); if ($res['status'] == 'ok') { //输出 日志,这边可能会导致调度程序内存溢出 printf("[%s] 计划id: %s 房源Id: %s 经纪人: %s 城市: %s 动作: 1 solar更新成功\n", date('Y-m-d H:i:s'), $plan['id'], json_encode($fields['pro_id']), $plan['brokerId'], $plan['cityId']); } else { printf("[%s] 计划id: %s 房源Id: %s 经纪人: %s 城市: %s 动作: 1 solar更新失败\n", date('Y-m-d H:i:s'), $plan['id'], json_encode($fields['pro_id']), $plan['brokerId'], $plan['cityId']); } // printf("[%s] %s\n", date('Y-m-d H:i:s'), $post_data); } } } }
public function dealTask($solrOnProId) { $brokerId = 0; $houseInfo = Bll_House_EsfHouse::getHouseInfoById($solrOnProId, $this->cityId); if (!empty($houseInfo)) { if ($this->isSowooHouse($houseInfo)) { printf('房源 %d 是机器抓取的不做处理' . PHP_EOL, $solrOnProId); return true; } if ($onlineComboRelation = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($solrOnProId, Bll_Combo_HouseRelation::SITE_TYPE_AJK)) { printf('房源 %s 已经在套餐推广中, 不用通知solr下' . PHP_EOL, $solrOnProId); return true; } $brokerId = $onlineComboRelation['brokerId']; } // 房源没有或者不在线 通知solr下 //$this->addPriceQueueByAPI($onlineComboRelation['brokerId'], $this->cityId, $solrOnProId, 2, 0, 0); $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrAjkAPI($this->cityId, $brokerId, $solrOnProId, Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_DOWN, Bll_Combo_NoticeSolrUpDown::HLSFromComboCheckNotice); printf('房源 %s 没有在套餐推广中, 需要通知solr下' . PHP_EOL, $solrOnProId); printf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message']); return true; }