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');
     }
 }
Esempio n. 2
0
 /**
  * 金铺-精选房源设置
  *
  * @param int $ajkBrokerId
  * @param int $cityId
  * @param int $propId
  * @param array $params
  *
  * @return array
  */
 public static function jp_setting($ajkBrokerId, $cityId, $propId, $params = array())
 {
     //获取精选推广预算
     $brokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($ajkBrokerId);
     $brokerCompanyId = $brokerInfo['BaseInfo']['COMPANYID'];
     $choiceSet = APF::get_instance()->get_config('choice_set');
     if (isset($choiceSet[$brokerCompanyId]) && !empty($choiceSet[$brokerCompanyId])) {
         $pageAttribute['min_budget'] = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MIN_BUDGET'];
         $pageAttribute['max_budget'] = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MAX_BUDGET'];
     } else {
         $pageAttribute['min_budget'] = $choiceSet['default']['jp']['JP_CHOICE_MIN_BUDGET'];
         $pageAttribute['max_budget'] = $choiceSet['default']['jp']['JP_CHOICE_MAX_BUDGET'];
     }
     $jpBrokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($ajkBrokerId);
     //check房源是否已经加入精选推广
     $bidObj = Model_Plan_Jp::getBidPlanByHouseIdEx($ajkBrokerId, $propId);
     if (!empty($bidObj)) {
         if ($bidObj['status'] == 2 || $bidObj['status'] == 6) {
             return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源已经加入精选推广');
         } elseif ($bidObj['status'] == 3) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源正在结算中,请稍后...');
         }
     }
     $bidChoiceCount = Model_Plan_Jp::getBidChoiceInfoEx($cityId, $ajkBrokerId);
     $status = isset($bidObj['status']) ? $bidObj['status'] : 0;
     if (count($bidChoiceCount) >= self::ALL_JP_PLAN_NUM && $status != 4) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '精选推广房源已经超过' . self::ALL_JP_PLAN_NUM . '套');
     }
     if (0 == $jpBrokerInfo) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '您不是金铺经纪人');
     }
     /** 获取房源基本信息 */
     $propInfo = Bll_House_JpHouseInfo::getHouseInfoById($propId);
     if (empty($propInfo)) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不存在');
     }
     /** 判断 e_house_rank 是否有记录没有则添加  */
     try {
         Model_Jinpu_HouseRank::data_access()->find_by_pk($propId);
     } catch (Exception $e) {
         $houseRank = array(Model_Jinpu_HouseRank::ID => $propId, Model_Jinpu_HouseRank::FINAL_SCORE => 1, Model_Jinpu_HouseRank::STAGE => 1, Model_Jinpu_HouseRank::RANDOM_SCORE => 1, Model_Jinpu_HouseRank::SUB_STAGE => 1, Model_Jinpu_HouseRank::SOURCE => 0);
         Model_Jinpu_HouseRank::create($houseRank)->save();
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($cityId, Const_Site::JINPU)) {
         /** 判断房源是否在套餐推广 */
         $propCombos = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($propId, Bll_Combo_HouseRelation::SITE_TYPE_JP);
         if (empty($propCombos)) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源必须在套餐推广才能参与精选');
         }
     }
     if (false == $propInfo['info']['isExquisite']) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     $limitDay = intval(date('Ymd', strtotime('-15 days')));
     $postDay = intval(date('Ymd', strtotime($propInfo['base']['createTime'])));
     if ($limitDay > $postDay) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     /** 获取板块信息 **/
     $blockArr = Bll_House_JpHouseInfo::getBlock($propInfo['base']['houseType'], $propInfo['info']);
     if (!$blockArr['blockId'] || !$blockArr['districtId']) {
         return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '请重新编辑房源,选择区域和板块');
     }
     if (!$blockArr['blockId'] && !$blockArr['newBlockId']) {
         return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源缺少板块信息');
     }
     if (isset($blockArr['newName'])) {
         $blockName = $blockArr['newName'];
     } else {
         $blockName = $blockArr['name'];
     }
     $houseBaseObj = $propInfo['base'];
     $houseInfoObj = $propInfo['info'];
     $houseInfoArr = self::convertObjToArray($houseInfoObj);
     $houseInfoArr['floor_info'] = Bll_House_JpHouseInfo::getHouseFloorInfo($houseInfoArr, $houseBaseObj['houseType']);
     $houseInfoArr['property_name'] = Bll_House_JpHouseInfo::getHousePropertyName($houseInfoObj, $houseBaseObj['houseType']);
     $pageAttribute['community_name'] = $houseInfoArr['property_name'];
     $houseInfoArr['url'] = Uri_JPHouse::build_index($cityId, $houseBaseObj['houseType']) . $propId;
     $houseInfoArr['house_type'] = $houseBaseObj['houseType'];
     $houseInfoArr['price_info'] = Bll_House_JpHouseInfo::getHousePriceInfo($houseInfoArr, $houseBaseObj['houseType']);
     $pageAttribute['houseInfoArr'] = $houseInfoArr;
     $balance = self::get_broker_balance_by_broker_id($ajkBrokerId);
     $pageAttribute['balance'] = $balance;
     if ($balance > 0) {
         $balance = sprintf('%.2f', $balance / 100);
     }
     $pageAttribute['balance_fmt'] = $balance;
     //获取价格段
     $housePrice = Bll_House_JpHouseInfo::getPrice($cityId, $houseBaseObj['houseType'], $houseInfoObj);
     $pageAttribute['price_title'] = $housePrice['price_name'];
     $priceId = 0;
     if (!empty($housePrice)) {
         $priceId = (int) $housePrice['price_id'];
     }
     //获取板块和商圈
     $blockArr = Bll_House_JpHouseInfo::getBlock($houseBaseObj['houseType'], $houseInfoObj);
     $bucketInfo = Bll_Choice_JpBidBucket::getBucketInfo($blockArr['blockId'], $blockArr['newBlockId'], $houseBaseObj['houseType'], $priceId, $cityId);
     /** 获取点击单价开始 */
     try {
         $apiParams = array('brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'price' => $housePrice['price'] ?: 0, 'blockId' => $blockArr['blockId'] ?: 0, 'newBlockId' => $blockArr['newBlockId'] ?: 0, 'houseType' => $houseBaseObj['houseType']);
         $clickPrice = Bll_Service_Choice::jpClickPrice($apiParams);
         if ($clickPrice['status'] == 'error') {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-1000)');
         }
     } catch (Exception $e) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-2000)');
     }
     if ($clickPrice['realTradeAmount'] != $clickPrice['shouldTradeAmount']) {
         $pageAttribute['favorable'] = true;
         $pageAttribute['price'] = round($clickPrice['realTradeAmount'] / 100, 2);
         $pageAttribute['origin_price'] = round($clickPrice['shouldTradeAmount'] / 100, 2);
         $pageAttribute['favorable_end_time'] = $clickPrice['rebateEndTime'];
     } else {
         $pageAttribute['favorable'] = false;
         $pageAttribute['price'] = round($clickPrice['realTradeAmount'] / 100, 2);
     }
     /** 获取点击单价结束 */
     $averageClickAndBudget = Bll_Choice_JpBidBucket::getBucketAverageClickBudget($blockArr['blockId'], $blockArr['newBlockId'], $houseBaseObj['houseType'], $priceId);
     if (!empty($averageClickAndBudget)) {
         $pageAttribute['averageClick'] = $averageClickAndBudget['averageClick'];
         $pageAttribute['averageBudget'] = $averageClickAndBudget['averageBudget'] / 100;
     }
     $pageAttribute['house_type'] = $houseBaseObj['houseType'];
     $pageAttribute['city_id'] = $cityId;
     $pageAttribute['price_id'] = $priceId;
     $pageAttribute['block_id'] = $blockArr['blockId'];
     $pageAttribute['new_block_id'] = $blockArr['newBlockId'];
     $pageAttribute['bucket_total'] = $bucketInfo['totalNum'];
     $pageAttribute['bucket_used'] = $bucketInfo['usedNum'];
     $pageAttribute['bucket_used_num'] = $bucketInfo['usedNum'];
     $pageAttribute['bucket_total_num'] = $bucketInfo['totalNum'];
     $pageAttribute['bucket_max_online_num'] = $bucketInfo['maxOnlineNum'];
     $pageAttribute['blockName'] = $blockName;
     return $pageAttribute;
 }
Esempio n. 3
0
 /**
  * @param $id
  * @return Model_HouseRank
  */
 public static function get_house_rank($id)
 {
     $DHouseRank = null;
     $da = Model_Jinpu_HouseRank::data_access();
     $DHouseRank = $da->find_by_pk($id, false);
     unset($da);
     return $DHouseRank;
 }