Example #1
0
 /**
  * 通知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');
     }
 }
Example #4
0
 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;
 }
Example #5
0
 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');
     }
 }
Example #7
0
 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');
 }
Example #10
0
 /**
  * 精选通知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)));
 }
Example #12
0
 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');
     }
 }
Example #13
0
 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;
 }
Example #14
0
 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;
 }
Example #17
0
 /**
  * 判断该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);
             }
         }
     }
 }
Example #19
0
 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;
 }