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;
     }
     $brokerId = intval($request->get_parameter('broker_id'));
     if ($brokerId <= 0) {
         $this->responseJSON('error', array(), '请提交经纪人ID');
         return;
     }
     $houseComboRelationList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, $siteType, 1);
     if (empty($houseComboRelationList)) {
         $this->responseJSON('ok', array(), '没有获取到房源推广信息');
         return;
     }
     $result = array('spread_house' => array(), 'not_spread_house' => array());
     foreach ($houseComboRelationList as $houseComboRelation) {
         $result['spread_house'][] = $houseComboRelation['houseId'];
     }
     $this->responseJSON('ok', $result, $request->get_parameter('broker_id'));
 }
Example #2
0
 public function before()
 {
     //防止端口城市对pp城市接口的访问
     //接受参数:判断是否是套餐经纪人,是报错,不是,继续执行
     $request_body = file_get_contents('php://input');
     if ($request_body) {
         $res = json_decode($request_body, true);
         if (is_array($res)) {
             foreach ($res as $k => $v) {
                 $_REQUEST[$k] = $v;
             }
         }
     }
     $params = $_REQUEST;
     $brokerId = $params['brokerId'];
     if (empty($brokerId)) {
         echo json_encode(Util_MobileAPI::error(Const_APIStatus::E_BROKER_PARAM_MISS));
         return self::STEP_EXIT;
     }
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (empty($brokerInfo)) {
         echo json_encode(Util_MobileAPI::error(Const_APIStatus::E_BROKER_PARAM_MISS));
         return self::STEP_EXIT;
     }
     $isComboCity = Bll_Combo_HouseRelation::isComboCity($brokerInfo->cityId);
     if ($isComboCity['code'] == 200) {
         if ($isComboCity['data']) {
             echo json_encode(Util_MobileAPI::error(Const_APIStatus::E_BROKER_ISNOT_PPC));
             return self::STEP_EXIT;
         }
     }
     return self::STEP_CONTINUE;
 }
 public function handle_request_internal()
 {
     $business = $this->_params['business'];
     switch ($business) {
         case 'combo':
             $payType = 9999;
             break;
         default:
             $payType = 9999;
     }
     $brokerId = $this->_params['brokerId'];
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     $cityId = $brokerInfo['cityId'];
     $comboInfo = Bll_Combo_HouseRelation::isComboCity($cityId);
     if ($comboInfo['data']) {
         $timeBool = Model_Combo_BusinessUseConfig::getCityComboConfig($cityId);
         if (!empty($timeBool) && time() < $timeBool['startTime']) {
             //切换套餐 数据处理完成之前 不允许切换经纪人paytype
             return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('message' => '切换失败,城市尚未开放套餐'));
         }
         $brokerInfo->payType = $payType;
         if ($brokerInfo->save()) {
             $result = array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('message' => '切换成功'));
         } else {
             $result = array('status' => 'error', 'errcode' => __LINE__, 'message' => '切换失败');
         }
     } else {
         $result = array('status' => 'error', 'errcode' => __LINE__, 'message' => '非套餐城市');
     }
     return $result;
 }
Example #4
0
 public function handle_request_internal()
 {
     //$stime=microtime(true);
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     $result = array('status' => 0, 'data' => array(), 'errorMsg' => "");
     // 必须使用POST请求
     if (!$this->request->is_post_method()) {
         $result['errorMsg'] = "请使用POST请求。";
     }
     $houseId = $params['id'];
     $brokerName = self::$BrokerInfo['BaseInfo']['TRUENAME'];
     $brokerPhone = self::$BrokerInfo['BaseInfo']['USERMOBILE'];
     $cityId = self::$BrokerInfo['BaseInfo']['CITYID'];
     /*
     if($cityId == 11){
         APF::get_instance()->get_response()->redirect('/ajkbroker/commissions/mysale');
         return false;
     }
     */
     $isComboCity = Bll_Combo_HouseRelation::ifComboCity($cityId);
     $saleRushResult = Bll_Broker_EntrustQuery::getInstance()->saleRush($houseId, $brokerId, $brokerName, $brokerPhone, $cityId, Const_Entrust::RUSH_FROM_PC, true, $isComboCity);
     $result = array('status' => $saleRushResult['status'], 'data' => $saleRushResult['data'], 'errorMsg' => $saleRushResult['errorMsg']);
     echo json_encode($result);
     exit;
     /* $etime=microtime(true);//获取程序执行结束的时间
        $total=$etime-$stime;   //计算差值
        echo "<br />{$total} times";*/
 }
Example #5
0
 /**
  * 房源取消套餐推广
  * @return array
  */
 public function do_removePropFromCombo()
 {
     $this->params['proIds'] = is_array($this->params['proIds']) ? $this->params['proIds'] : explode(',', $this->params['proIds']);
     if (!Bll_Combo_HouseRelation::houseStopComboSpread($this->brokerId, $this->cityId, $this->params['proIds'], Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
         return Util_GlobalFunc::buildReturn(0, '房源取消套餐推广失败');
     }
     return Util_GlobalFunc::buildReturn(1, '房源取消套餐推广成功');
 }
Example #6
0
 public function handle_request_combo()
 {
     $ajkBrokerId = $this->brokerId;
     $cityId = $this->cityId;
     //套餐信息
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($ajkBrokerId);
     $currentDate = time();
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         //获取当前使用的套餐
         if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['rentPropNum'] + $comboInfo['salePropNum'] > 0) {
             $currentCombo = $comboInfo;
             break;
         }
     }
     $currentComboTotal = $currentCombo['salePropNum'] + $currentCombo['rentPropNum'];
     $currentComboName = $currentCombo['name'];
     //二手房套餐列表
     $comboEsfList = Bll_Broker_Combo_ManageAjk::getComboSpreadHouseList($ajkBrokerId, $cityId);
     $comboEsfPropIds = array_keys($comboEsfList);
     //租房套餐列表
     $comboZuFangList = Bll_Combo_HouseRelation::getHouseRelations($ajkBrokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
     $comboZuFangPropIds = array();
     foreach ($comboZuFangList as $v) {
         $comboZuFangPropIds[] = (int) $v['houseId'];
     }
     $currentComboUsed = count($comboZuFangPropIds) + count($comboEsfPropIds);
     $canSpread = $currentComboUsed >= $currentComboTotal ? 0 : 1;
     $propId = $this->_params['propId'];
     $comboInfo = Bll_Combo_HouseRelation::getHouseRelation($ajkBrokerId, $cityId, $propId, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
     if (!empty($comboInfo) && $comboInfo[0]['state'] > 100 & $comboInfo[0]['state'] < 200) {
         //推广中
         $status = 2;
         $statusMsg = '套餐推广中';
         $currentComboInfo = $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})";
     } else {
         $comboInfos = Bll_Combo_Broker_BrokerComboInfo::getComboListBySite($ajkBrokerId, Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_HZ);
         if (empty($comboInfos)) {
             $status = 0;
             $statusMsg = '尚未购买套餐,请购买套餐';
             $currentComboInfo = '尚未购买套餐';
         } else {
             $status = 1;
             $statusMsg = '好房源,不推广就浪费了~';
             $currentComboInfo = $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})";
         }
     }
     $startDate = $endDate = date('Ymd');
     $todayClicks = Bll_Combo_Broker_BrokerComboInfo::getHouseComboClickEx($propId, $startDate, $endDate, Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_HZ);
     $totalClicks = Bll_House_HzHouse::getComboHouseAccumulateClick($ajkBrokerId, $propId, $cityId);
     $todayClick = $todayClicks[$propId][$startDate] ?: 0;
     $totalClick = $totalClicks[$propId] ?: 0;
     $totalClick += $todayClick;
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => $todayClick, 'totalClicks' => $totalClick, 'status' => $status, 'statusMsg' => $statusMsg, 'canSpread' => $canSpread, 'currentComboInfo' => $currentComboInfo));
 }
Example #7
0
 public function dealTask($task)
 {
     // 获取ajkBrokerId
     if (!($ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($task['userid']))) {
         printf('获取二手房brokerId失败, hzBrokerId: %s ' . PHP_EOL, $task['userid']);
         return false;
     }
     // 重新通知上下架房子删除
     Bll_Combo_HouseRelation::notifyHouseUpDownTask($ajkBrokerId, $task['proid'], $task['cityid'], Bll_Combo_HouseRelation::SITE_TYPE_HZ, 105, '房源状态为4,由job通知上下架房子删除', __METHOD__, $ajkBrokerId);
     printf('房源 %s 成功通知上下架队列' . PHP_EOL, $task['proid']);
     return true;
 }
 public function handle_request()
 {
     $dealStatus = array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED);
     $condition = array(array('proid', '>', $this->_startId), array('updated', '>=', strtotime($this->_startTime)), array('updated', '<=', strtotime($this->_endTime)));
     $houseList = Model_House_HzPropSearch::getPropLists($this->_cityId, $condition, self::BATCH_LIMIT);
     foreach ($houseList as $houseInfo) {
         $houseId = $houseInfo['proid'];
         $this->setFlag(array('id' => $houseId, 'time' => date('Y-m-d H:i:s')));
         if (!in_array($houseInfo['status'], $dealStatus)) {
             $this->setLog(sprintf('房源[%d]房源状态[%d]不在[%s]不处理', $houseId, $houseInfo['status'], implode(',', $dealStatus)));
             continue;
         }
         $houseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
         if (empty($houseRelation)) {
             $this->setLog(sprintf('房源[%d - %d],没有获取到套餐关系', $houseId, $houseInfo['status']));
             continue;
         }
         /** 如果房源关系已经不是在线的,就不修复 */
         if (false == Bll_Combo_HouseRelation::isRelationOnline($houseRelation['state'])) {
             $this->setLog(sprintf('房源[%d - %d],已经不在线,不处理', $houseId, $houseRelation['state']));
             continue;
         }
         switch ($houseInfo['status']) {
             case Const_HzStatus::VERIFY:
                 $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_ILLEGAL;
                 break;
             case Const_HzStatus::REMOVE:
                 $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_DELETE;
                 break;
             case Const_HzStatus::EXPIRED:
                 $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_EXPIRE;
                 break;
             default:
                 $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_DELETE;
                 continue;
         }
         /** 修正房源套餐推广关系 */
         if (1 == Bll_Combo_HouseRelation::updateComboStatusById($houseRelation['id'], $relationState, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
             $this->setLog(sprintf('房源[%d - %d],套餐推广关系[%d-%d]修复成功', $houseId, $houseInfo['status'], $houseRelation['id'], $houseRelation['state']));
         } else {
             $this->setLog(sprintf('房源[%d - %d],套餐推广关系[%d-%d]修复失败', $houseId, $houseInfo['status'], $houseRelation['id'], $houseRelation['state']));
         }
         $this->noticeComboSolr($houseInfo['cityid'], $houseInfo['userid'], $houseId);
     }
     if (count($houseList) < self::BATCH_LIMIT) {
         $this->setLog(sprintf('[%d - %d]已经处理完成...', $this->_cityId, $this->_startId));
         $this->setShStopFlag();
         $this->removeFlag();
     } else {
         $this->setShCommonSleepTime(1);
     }
 }
 public function handle_request()
 {
     if ($this->_brokerId == 0) {
         echo sprintf('Usage: launcher.php Monitor_JpHouseSpreadState --broker=[:number:] [--release=...]'), PHP_EOL;
         return;
     }
     $loadFields = array('id', 'cityId', 'ajkMemberId');
     $brokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerIdEx($this->_brokerId, $loadFields);
     if (empty($brokerInfo)) {
         $this->logMsg(sprintf('没有获取到经纪人[%d]的金铺经纪人信息', $this->_brokerId));
         return;
     }
     $this->logMsg(sprintf('经纪人[%d]的金铺经纪人信息: %s', $this->_brokerId, json_encode($brokerInfo)));
     $searchParams = array('fl' => 'id,is_auction,is_combo', 'q' => '*:*', 'version' => '2.2', 'indent' => 'on', 'rows' => 1000, 'wt' => 'json');
     $fieldQuery = array('fq=' . urlencode(sprintf('list_time:[0 TO %d]', time())), 'fq=' . urlencode(sprintf('member_id:%d', $brokerInfo['id'])), 'fq=' . urlencode(sprintf('city_id:%d', $brokerInfo['cityId'])));
     $query = http_build_query($searchParams);
     $houseInInSolr = array();
     /** 查询在Solr中的房源 */
     foreach ($this->_hosts as $houseType => $host) {
         $url = $host . '?' . $query . '&' . implode('&', $fieldQuery);
         $this->logMsg('URL: ' . $url);
         $temp = $this->httpRequest($url);
         foreach ($temp as $tmp) {
             $tmp['houseType'] = $houseType;
             $houseInInSolr[$tmp['id']] = $tmp;
         }
     }
     /** 获取推广中的房源 */
     $houseComboRelationList = Bll_Combo_HouseRelation::getHouseRelations($this->_brokerId, Bll_Combo_HouseRelation::SITE_TYPE_JP, 1);
     if (empty($houseInInSolr) && empty($houseComboRelationList)) {
         $this->logMsg(sprintf('经纪人[%d]没有在solr和在线的房源', $this->_brokerId));
         return;
     }
     $comboSpreadHouseIds = array();
     foreach ($houseComboRelationList as $houseComboRelation) {
         $comboSpreadHouseIds[] = $houseComboRelation['houseId'];
     }
     /** 判断solr中的房源是否都在套餐推广中 该下没下 */
     foreach ($houseInInSolr as $houseId => $houseSpreadState) {
         if (!in_array($houseId, $comboSpreadHouseIds)) {
             $this->logMsg(sprintf('房源[%d]在solr中,但是不在套餐推广中', $houseId));
             file_put_contents($this->_houseInSolrNotSpread, sprintf('%d-%d' . PHP_EOL, $houseId, $houseSpreadState['houseType']), FILE_APPEND);
         }
     }
     /** 判断套餐推广中的房源是否在solr中 该上没上 */
     foreach ($comboSpreadHouseIds as $houseId) {
         if (!isset($houseInInSolr[$houseId])) {
             $this->logMsg(sprintf('房源[%d]在套餐推广中,但是不在solr中', $houseId));
             file_put_contents($this->_comboSpreadHouseNotInSolr, $houseId . PHP_EOL, FILE_APPEND);
         }
     }
 }
Example #10
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 #11
0
 public function handle_request_combo()
 {
     $brokerId = $this->brokerId;
     $cityId = $this->cityId;
     $hzBrokerId = Bll_HzBroker::get_brokerid_by_ajk_brokerid($brokerId);
     //获取所有有效房源
     $props = Bll_House_HzHouse::getValidPropsByBrokerId($hzBrokerId, $cityId);
     $propertyList = array();
     if (!empty($props)) {
         //获取套餐推广房源列表
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
         //所有有效房源-套餐推广房源 = 套餐未推广房源
         if (!empty($comboList)) {
             foreach ($comboList as $row) {
                 unset($props[$row['houseId']]);
             }
         }
         if (!empty($props)) {
             // 批量获取房源的默认图片
             $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds(array_keys($props));
             if (!empty($defaultImages)) {
                 foreach ($defaultImages as $defaultImage) {
                     $props[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
                 }
             }
             foreach ($props as $list) {
                 $row = array();
                 $row['id'] = $row['propId'] = $list['propId'];
                 $row['title'] = $list['title'];
                 $row['imgUrl'] = $list['imgUrl'] ?: '';
                 $row['commId'] = $list['commid'];
                 $row['commName'] = $list['commname'];
                 $row['roomNum'] = $list['roomnum'];
                 $row['hallNum'] = $list['hallnum'];
                 $row['toiletNum'] = $list['toilnetnum'];
                 $row['area'] = round($list['areanum']);
                 $row['price'] = round($list['pricenum']);
                 $row['priceUnit'] = '元/月';
                 $row['todayClicks'] = $row['totalClicks'] = $row['isBid'] = $row['isChoice'] = 0;
                 $row['isVisible'] = (int) ($list['status'] != 6);
                 $row['isMoreImg'] = (int) $list['quality'];
                 $row['isPhonePub'] = (int) (isset($list['from']) && $list['from'] == 'mobile-ajk-broker');
                 $isEntrust = Bll_Zufang_Choice::isCommissionHouse($list['propId'], $brokerId, Model_House_Commission::TYPE_RENT);
                 $row['isEntrust'] = $isEntrust ? 1 : 0;
                 $row['createTime'] = date('Y-m-d H:i:s', $list['created']);
                 $propertyList[] = $row;
             }
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('propertyList' => $propertyList));
 }
 /**
  * 获取一段时间内,二手房、租房的房源状态发生变更的房源
  */
 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));
 }
Example #13
0
 private function checkConsume($brokerId, $cityId)
 {
     $result = array('isFree' => 0, 'isPlan' => 0, 'data' => '');
     $isComboCity = Bll_Combo_HouseRelation::ifComboCity($cityId);
     if ($isComboCity) {
         $conbosProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($brokerId);
         // 检查是否购买套餐
         if ($conbosProNum['totalSalePropNum'] <= 0) {
             $result['isPlan'] = 0;
             echo json_encode($result);
             exit;
         } else {
             $result['isPlan'] = 1;
         }
     } else {
         $result['isPlan'] = 1;
     }
     // 检查城市是否收费
     $checkFree = Bll_Broker_EntrustPrice::getInstance()->checkCityConsumeStatus($cityId);
     if ($checkFree == true) {
         // 收费
         // 获取余额
         $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($brokerId, 'sale');
         $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId);
         // 获取委托价格
         $startDate = date("Ymd");
         $price = Bll_Broker_EntrustPrice::getInstance()->getSalePrice(self::$BrokerInfo['BaseInfo']['CITYID'], $startDate);
         $price = $price / 100;
         if ($balance >= $price) {
             $isEnough = 1;
         } else {
             $isEnough = 0;
         }
         $result['isFree'] = 0;
         $result['data'] = array('isEnough' => $isEnough, 'balance' => $balance . "元", 'price' => $price . "元");
     } else {
         // 不收费
         $houseId = intval($this->params['houseId']);
         $brokerName = self::$BrokerInfo['BaseInfo']['TRUENAME'];
         $brokerPhone = self::$BrokerInfo['BaseInfo']['USERMOBILE'];
         $consume = Bll_Broker_EntrustQuery::getInstance()->saleRush($houseId, $brokerId, $brokerName, $brokerPhone, $cityId, Const_Entrust::RUSH_FROM_PC, false, $isComboCity);
         $result['isFree'] = 1;
         $result['data'] = $consume;
     }
     echo json_encode($result);
     exit;
 }
Example #14
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $cityId = $this->_params['cityId'];
     $commId = $this->_params['commId'];
     //判断是否试端口城市
     $isComboCity = Bll_Combo_HouseRelation::isComboCity($this->_params['cityId']);
     if ($isComboCity['status'] != 'ok') {
         throw new Exception_Base("JAVA API ERROR");
     }
     if ($isComboCity['data']) {
         $return = $this->getComboPropsInOneComm($brokerId, $cityId, $commId);
     } else {
         $return = $this->getPpcPropsInOneComm($brokerId, $cityId, $commId);
     }
     return $return;
 }
Example #15
0
 /**
  * 获取页面的初始化信息
  *
  * @param int $brokerId
  * @param int $cityId
  * @param int $commissionId
  * @param AJKRequest $request
  * @return array
  * @throws Exception
  */
 public static function preparePageParam($brokerId, $cityId, $commissionId, $request)
 {
     $commissionHouseInfo = static::getCommission($commissionId, $brokerId);
     if (empty($commissionHouseInfo)) {
         throw new Exception('获取委托房源信息失败', Const_PublishCode::COMMISSION_ERROR);
     }
     if ($commissionHouseInfo['brokerHouseId'] > 0) {
         throw new Exception('委托房源已经发布过【ID:' . $commissionHouseInfo['brokerHouseId'] . '】', Const_PublishCode::COMMISSION_ERROR_HOUSE_EXISTS);
     }
     $houseInfo = static::getCommissionHouseInfo($commissionHouseInfo['house']);
     $houseInfo['cityId'] = $cityId;
     /** 获取房源发布&编辑页面的示例URL */
     $pageParams = Bll_House_EsfPublish::getExampleURL($cityId);
     $pageParams['houseInfo'] = $houseInfo;
     $pageParams['commissionId'] = $commissionId;
     /** 是否需要显示备案信息 */
     $pageParams['houseRecordNumberConfig'] = Bll_House_EsfPublish::getHouseRecordNumberConfig($cityId);
     $pageParams['priceMentionUrl'] = Bll_House_EsfPublish::getPriceMentionUrl($cityId);
     $pageParams['publishHouseProtocolUrl'] = Bll_House_EsfPublish::getPublishHouseProtocolUrl($cityId);
     $pageParams['brokerId'] = $brokerId;
     $pageParams['cityId'] = $cityId;
     /** 装修情况 */
     $pageParams['fitmentList'] = Model_House_FitmentType::getFitment($cityId);
     /** 房屋类型 */
     $pageParams['useTypeList'] = Model_Community_UseType::getUseTypeByCityId($cityId);
     /** 房屋朝向 */
     $pageParams['orientateList'] = APF::get_instance()->get_config('house_orientate', 'house');
     /** 获取小区和房源公共标签 */
     $pageParams['privateTagList'] = Bll_House_EsfPublish::getPrivateTagList();
     /** 获取上传图片服务器 */
     $pageParams['uploadImgService'] = Bll_House_EsfPublish::getUploadImageServer();
     $pageParams['picData'] = array('UPDROOM' => array(), 'ALLMODEL' => array(), 'ALLCOMM' => array(), 'NEWUPDROOM' => Bll_House_EsfCommission::getCommissionImage($commissionHouseInfo['houseId']));
     /** 最低首付配置 */
     $miniPayDownConfig = Bll_House_EsfPublish::getMiniPayDownConfig($cityId);
     if (Bll_Broker_HzBroker::isPpcBroker($brokerId)) {
         $pageParams['canSpread'] = Bll_Broker_HzBroker::ajkPpcBrokerCanSpreadHouse($cityId, $brokerId);
         $pageParams['brokerActionTip'] = '推广房源已满,只能保存到未推广房源';
     }
     if (Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         $checkCanSpreadResult = Bll_Combo_HouseRelation::housePublishComboCheck($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
         $pageParams['canSpread'] = $checkCanSpreadResult['status'] == 1;
         $pageParams['brokerActionTip'] = $checkCanSpreadResult['msg'];
     }
     return array_merge($pageParams, $miniPayDownConfig);
 }
Example #16
0
 public function handle_request_combo()
 {
     $brokerId = $this->brokerId;
     $propIds = $this->_params['propIds'];
     $cityId = $this->cityId;
     if (!is_array($propIds)) {
         $propIds = strstr($propIds, ",") === false ? array($propIds) : explode(',', $propIds);
     }
     // 房源有效性验证等
     $prop = Model_House_HzProp::getPropsByPropIds($propIds);
     if (empty($prop)) {
         throw new Exception('房源不存在');
     }
     if (!Bll_Combo_HouseRelation::houseStopComboSpread($brokerId, $cityId, $propIds, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
         Util_MobileAPI::error_tmp('-1', '套餐推广取消失败');
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('msg' => '套餐推广取消成功'));
 }
 /**
  * 查询房子 如果删除、过期则通知下 更新套餐关系
  * @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;
 }
Example #18
0
 public function handle_request_combo()
 {
     $propIds = $this->_params['propIds'];
     $brokerId = $this->brokerId;
     $cityId = $this->cityId;
     if (!is_array($propIds)) {
         $propIds = strstr($propIds, ",") === false ? array($propIds) : explode(',', $propIds);
     }
     // 房源有效性验证等
     $prop = Model_House_HzProp::getPropsByPropIds($propIds);
     $newPropIds = array();
     // 验证房源是否已经被删除
     foreach ($prop as $propId => $value) {
         if ($value['status'] > 0 && !in_array($value['status'], array(6, 99, 100))) {
             $newPropIds[$propId] = $propId;
         }
     }
     if (empty($newPropIds)) {
         throw new Exception('房源不存在');
     }
     $result = Bll_Combo_HouseRelation::houseStartComboSpreadV2($brokerId, $cityId, $newPropIds, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
     if ($result['status'] == 1) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('msg' => '套餐立即推广成功'));
     } else {
         switch ($result['status']) {
             case -1:
                 $msg = '尚未购买套餐,请购买套餐';
                 break;
             case -2:
                 $msg = '尚未购买套餐,请购买套餐';
                 break;
             case -4:
                 $msg = '推广房源数超过上限';
                 break;
             case -5:
                 $msg = '推广房源数超过上限';
                 break;
             default:
                 $msg = $result['msg'];
         }
         return Util_MobileAPI::error_tmp($result['status'], $msg);
     }
 }
Example #19
0
 /**
  * 获取二手房、好租房源的推广状态
  */
 public function handle_request_internal()
 {
     $request = APF::get_instance()->get_request();
     if (!$request->is_post_method()) {
         $this->responseJSON('error', array(), '请以POST方式发送请求');
         return;
     }
     $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['house_id'])) {
         $this->responseJSON('error', array(), '请提交房源id');
         return;
     }
     if (strpos($params['house_id'], ',') === false) {
         $houseIds = intval($params['house_id']);
     } else {
         $houseIds = explode(',', $params['house_id']);
     }
     $houseComboRelationList = Bll_Combo_HouseRelation::getRelationByHouseIdEx($houseIds, $siteType);
     if (empty($houseComboRelationList)) {
         $this->responseJSON('ok', array(), '没有获取到房源推广信息');
         return;
     }
     $result = array('spread_house' => array(), 'not_spread_house' => array());
     foreach ($houseComboRelationList as $houseComboRelation) {
         if (Bll_Combo_HouseRelation::isRelationOnline($houseComboRelation['state'])) {
             $result['spread_house'][] = $houseComboRelation['houseId'];
         } else {
             $result['not_spread_house'][] = $houseComboRelation['houseId'];
         }
     }
     $this->responseJSON('ok', $result, $request->get_parameter('house_id'));
 }
Example #20
0
 public function handle_request_combo()
 {
     $ajkBrokerId = $this->brokerId;
     //获取经纪人套餐推广今日点击量
     $comboClick = Bll_Ppc_NewPackageStatsBrokerDay::getComboClickInfo($ajkBrokerId, date('Ymd'), Model_Ppc_NewPackageStatsBrokerDay::SITE_TYPE_HZ);
     $comboList = Bll_Combo_HouseRelation::getHouseRelations($ajkBrokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
     $hzBrokerId = Bll_HzBroker::get_brokerid_by_ajk_brokerid($ajkBrokerId);
     $propIds = array();
     foreach ($comboList as $row) {
         $propIds[] = $row['houseId'];
     }
     $propertyList = Model_House_HzPropSearch::getPropList($propIds, $hzBrokerId, $this->cityId);
     foreach ($propertyList as $key => $list) {
         $row['publishDays'] = floor((time() - $list['created']) / 86400);
         if (in_array($list['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) {
             unset($propertyList[$key]);
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => $comboClick, 'totalProps' => count($propertyList)));
 }
 public function handle_request()
 {
     $loadFields = array('proId', 'brokerId');
     $houseList = Bll_House_EsfHouse::scanInvalidateHouse($this->_cityId, $this->_startId, self::DEAL_LIMIT, $loadFields);
     if (count($houseList) < self::DEAL_LIMIT) {
         $this->dealDone(true);
     } else {
         $this->dealDone(false);
     }
     foreach ($houseList as $house) {
         $houseId = $house['proId'];
         $brokerId = $house['brokerId'];
         $this->setCursor($houseId);
         /** 套餐城市 */
         if (Bll_City::isComboCity($this->_cityId)) {
             $spreadRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
             if (empty($spreadRelation)) {
                 $this->logMsg(sprintf('没有获取到房源[%d]的套餐推广关系[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId));
                 continue;
             }
             if ($spreadRelation['brokerId'] != $brokerId || $spreadRelation['cityId'] != $this->_cityId) {
                 $this->logMsg(sprintf('房源[%d]的 [BrokerId=%d CityId=%d] xxxx [BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId, $spreadRelation['brokerId'], $spreadRelation['cityId']));
                 $this->saveErrorHouseId($houseId, $brokerId);
                 continue;
             }
             $this->logMsg(sprintf('房源[%d]的套餐推广关系正确[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId));
         } else {
             $spreadRelation = Model_Plan_AjkFixRelation::getRelationByProIdEx($houseId, $this->_cityId);
             if (empty($spreadRelation)) {
                 $this->logMsg(sprintf('没有获取到房源[%d]的定价推广关系[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId));
                 continue;
             }
             if ($spreadRelation['brokerId'] != $brokerId) {
                 $this->logMsg(sprintf('房源[%d]的 [BrokerId=%d CityId=%d] 关系的 [BrokerId=%d]', $houseId, $brokerId, $this->_cityId, $spreadRelation['brokerId']));
                 $this->saveErrorHouseId($houseId, $brokerId);
                 continue;
             }
             $this->logMsg(sprintf('房源[%d]的定价推广关系正确[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId));
         }
     }
 }
Example #22
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $propId = $this->_params['propIds'];
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     //是否是端口经纪人
     $cityId = $brokerInfo->cityId;
     if (!Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         throw new Exception_ISNotComboBrokerException('不是套餐经纪人。');
     }
     //可以批量取消推广
     $params['houseIds'] = $propId;
     $res = Bll_Combo_HouseRelation::houseStopSpreadAction($brokerId, $cityId, $params);
     if ($res['status'] == 'error') {
         throw new Exception_HouseStopComboSpreadFailed($res['msg']);
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('msg' => '套餐取消推广成功'));
 }
Example #23
0
 public function handle_request()
 {
     $condition = array(array('proid', '>', $this->_startId), array('cityid', '=', $this->_cityId), array('created', '<', $this->_expireTime), array('status', '<>', Const_HzStatus::EXPIRED), array('status', '<>', Const_HzStatus::REMOVE));
     $houseList = Model_House_HzPropSearch::getPropLists($this->_cityId, $condition, self::BATCH_LIMIT);
     if (empty($houseList)) {
         $this->setShStopFlag();
         $this->setLog('处理完成');
         return;
     }
     foreach ($houseList as $house) {
         $houseId = $house['proid'];
         $this->setLog(sprintf('开始处理房源[%d], 房源发布时间[%s]: %s', $houseId, date('Y-m-d H:i:s', $house['created']), json_encode($house)));
         $this->setFlag(array('id' => $houseId), $this->_cursorFile);
         if (1 != Model_House_HzPropSearch::updatePropStatus($this->_cityId, $houseId, Const_HzStatus::EXPIRED)) {
             $this->setLog(sprintf('房源[%d]更新房源状态失败', $houseId));
             continue;
         }
         $comboHouseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, false);
         if (empty($comboHouseRelation)) {
             $this->setLog(sprintf('房源[%d]没有获取到套餐推广关系', $houseId));
             continue;
         }
         $this->setLog(sprintf('房源[%d]套餐推广关系: %s', $houseId, json_encode($comboHouseRelation)));
         if (!Bll_Combo_HouseRelation::isRelationOnline($comboHouseRelation['state'])) {
             $this->setLog(sprintf('房源[%d]套餐推广状态不在线[%d]', $houseId, $comboHouseRelation['state']));
             continue;
         }
         $this->setLog(sprintf('房源[%d]套餐推广状态在线[%d]', $houseId, $comboHouseRelation['state']));
         if (1 != Bll_Combo_HouseRelation::updateComboStatusById($comboHouseRelation['id'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
             $this->setLog(sprintf('更新房源[%d]套餐关系[%d : %d -> %d]失败', $houseId, $comboHouseRelation['id'], $comboHouseRelation['state'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE));
             continue;
         }
         $this->setLog(sprintf('更新房源[%d]套餐关系[%d : %d -> %d]成功', $houseId, $comboHouseRelation['id'], $comboHouseRelation['state'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE));
         $this->noticeComboSolr($this->_cityId, $house['userid'], $houseId, $comboHouseRelation['brokerId']);
     }
     if (count($houseList) < self::BATCH_LIMIT) {
         $this->setShStopFlag();
     }
 }
Example #24
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;
 }
Example #25
0
 /**
  * 新加竞价
  *
  * @param $hz_broker_id
  * @param $prop_id
  * @param $price
  * @param $amount
  * @param $block_id
  * @param $city_id
  * @param $sn
  * @param $ajk_broker_id
  * @return array
  */
 public static function add_plan($hz_broker_id, $prop_id, $price, $amount, $block_id, $city_id, $sn, $ajk_broker_id = 0)
 {
     $propSearchInfo = Model_House_HzPropSearch::get_prop_by_prop_id($city_id, $prop_id);
     if (empty($propSearchInfo)) {
         return array('error_code' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'error_message' => '房源不存在。');
     }
     $prop_status = $propSearchInfo['status'];
     /** 检查 经纪人是不是 已经满足10套 */
     $onlinePlanCount = Model_Plan_HzPlanBasic::count_online_bid_plan_ex($ajk_broker_id);
     if ($onlinePlanCount >= Bll_Plan_Bid_Choice::ALL_ZF_PLAN_NUM) {
         return array('error_code' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'error_message' => '您最多可以对' . Bll_Plan_Bid_Choice::ALL_ZF_PLAN_NUM . '套房源做竞价推广,请确认数量是否已经达到上限');
     }
     /** 判断房源是否已经在竞价计划中了 */
     $propBidInfo = Model_Plan_HzPlanning::getPropBidPlan($prop_id);
     if (!empty($propBidInfo)) {
         $planBasic = Model_Plan_HzPlanBasic::get_plan_by_id($propBidInfo['plan_id']);
         if ($planBasic['bid_version'] == Const_HzPlan::BID_VERSION_CHOICE && $planBasic['flag'] != 0 && $planBasic['status'] != Const_HzPlan::DELETE) {
             return array('error_code' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'error_message' => '该房源已经处于精选状态,请先删除');
         }
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($city_id, Const_Site::ANJUKE)) {
         /** 判断房源是否在套餐推广中 */
         if (!Bll_Combo_HouseRelation::getOnlineRelationByHouseId($prop_id, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
             return array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '房源必须套餐推广才能参与精选推广');
         }
     }
     /** 更新房源状态 */
     $propPlanStatus = Bll_Ppc_HzProp::updatePropStatus($city_id, $prop_id, 2, 1);
     self::updateSpreadType($city_id, $prop_id, 4);
     $planId = self::insertBidPlan($hz_broker_id, $prop_id, $price, $amount, $block_id, $city_id, $sn, $ajk_broker_id);
     if ($planId == 0) {
         return array('error_code' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'error_message' => '创建计划失败');
     }
     // Bll_Ppc_HzProp::luceneUpdate($city_id, $prop_id, $propPlanStatus, 4);
     Bll_Log_EffectPropLog::addEffectPropLog($prop_id, Const_HaoPanLog::BIDPLANSTART, $hz_broker_id, 0, $prop_status, 1, 0, $planId);
     return array("error_code" => 0, "error_message" => '', 'planId' => $planId);
 }
Example #26
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;
 }
Example #27
0
 /**
  * 获取页面的初始化信息
  *
  * @param int $brokerId
  * @param int $cityId
  * @param AJKRequest $request
  * @return array
  */
 public static function preparePageParam($brokerId, $cityId, $request)
 {
     /** 获取房源发布&编辑页面的示例URL */
     $pageParams = Bll_House_EsfPublish::getExampleURL($cityId);
     /** 是否需要显示备案信息 */
     $pageParams['houseRecordNumberConfig'] = static::getHouseRecordNumberConfig($cityId);
     $pageParams['priceMentionUrl'] = static::getPriceMentionUrl($cityId);
     $pageParams['publishHouseProtocolUrl'] = static::getPublishHouseProtocolUrl($cityId);
     $pageParams['brokerId'] = $brokerId;
     $pageParams['cityId'] = $cityId;
     /** 装修情况 */
     $pageParams['fitmentList'] = Model_House_FitmentType::getFitment($cityId);
     /** 房屋类型 */
     $pageParams['useTypeList'] = Model_Community_UseType::getUseTypeByCityId($cityId);
     /** 房屋朝向 */
     $pageParams['orientateList'] = APF::get_instance()->get_config('house_orientate', 'house');
     /** 经纪人已经发不过的小区 */
     $pageParams['publishedCommunityList'] = static::getPublishedCommunityList($brokerId);
     /** 获取小区和房源公共标签 */
     $pageParams['privateTagList'] = static::getPrivateTagList();
     /** 获取上传图片服务器 */
     $pageParams['uploadImgService'] = static::getUploadImageServer();
     $pageParams['picData'] = array('UPDROOM' => array(), 'ALLMODEL' => array(), 'ALLCOMM' => array());
     /** 最低首付配置 */
     $miniPayDownConfig = static::getMiniPayDownConfig($cityId);
     if (Bll_Broker_HzBroker::isPpcBroker($brokerId)) {
         $pageParams['canSpread'] = Bll_Broker_HzBroker::ajkPpcBrokerCanSpreadHouse($cityId, $brokerId);
         $pageParams['brokerActionTip'] = '推广房源已满,只能保存到未推广房源';
     }
     if (Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         $checkCanSpreadResult = Bll_Combo_HouseRelation::housePublishComboCheck($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
         $pageParams['canSpread'] = $checkCanSpreadResult['status'] == 1;
         $pageParams['brokerActionTip'] = $checkCanSpreadResult['msg'];
     }
     return array_merge($pageParams, $miniPayDownConfig);
 }
 private function moveJpPPCFixPlanRelation($cityId, $jpBrokerId, $fixPlan)
 {
     try {
         $ajkBrokerId = Bll_Broker_User::getAjkBrokerIdByJpBrokerId($jpBrokerId);
     } catch (Exception $e) {
         $this->logMsg($e->getMessage());
         return;
     }
     if ($ajkBrokerId == 0) {
         $this->logMsg(sprintf('经纪人[%d - %d]没有获取到二手房经纪人ID。', $cityId, $jpBrokerId));
         return;
     }
     $fixPlanId = $fixPlan['id'];
     $fixPlanHouseRelationList = Model_House_JpHouseIdx::getHouseInfoByFixPlanIdEx($fixPlanId);
     if (empty($fixPlanHouseRelationList)) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d - %d]没有获取到金铺定价计划房源。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlanId));
         return;
     }
     foreach ($fixPlanHouseRelationList as $fixPlanHouseRelation) {
         $comboHouseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($fixPlanHouseRelation['id'], Model_Combo_HouseRelation::SITE_TYPE_JP);
         if (!empty($comboHouseRelation)) {
             if ($comboHouseRelation['state'] == Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE) {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],且state==205', $fixPlanHouseRelation['id'], $comboHouseRelation['id']));
                 continue;
             }
             if (1 == Bll_Combo_HouseRelation::updateComboStatusById($comboHouseRelation['id'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, Model_Combo_HouseRelation::SITE_TYPE_JP)) {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新成功', $fixPlanHouseRelation['id'], $comboHouseRelation['id']));
             } else {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新失败', $fixPlanHouseRelation['id'], $comboHouseRelation['id']));
             }
             continue;
         }
         $data = array('houseId' => $fixPlanHouseRelation['id'], 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'state' => Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, 'created' => $fixPlanHouseRelation['createTime']);
         if (1 == Model_Combo_HouseRelation::create($data, Model_Combo_HouseRelation::SITE_TYPE_JP)->save()) {
             $this->logMsg(sprintf('房源[%d]转移成功', $fixPlanHouseRelation['id']));
         } else {
             $this->logMsg(sprintf('房源[%d]转移失败', $fixPlanHouseRelation['id']));
         }
     }
 }
Example #29
0
 public function afterPost()
 {
     // 推广
     if ($this->ctx['html_action'] == 'publish') {
         //伪登陆不能推广
         if ($this->ctx['isManagerCookie']) {
             $this->redirect2Result(Const_PublishCode::PSEUDO_ERROR, $this->site, $this->action, $this->ctx['proId']);
         }
         if (Bll_City::isComboCity($this->ctx['cityId'])) {
             // 套餐推广
             $spreadResult = Bll_Combo_HouseRelation::houseStartComboSpreadV2($this->ctx['ajkBrokerId'], $this->ctx['cityId'], $this->ctx['proId'], Bll_Combo_HouseRelation::SITE_TYPE_HZ);
         } else {
             // 双证审核未通过 不能推广
             // 获取经纪人信息
             $brokerInfo = Model_Broker_HzUsersSearch::getUserInfoByUserId($this->ctx['hzBrokerId']);
             // 身份是否通过
             $this->ctx['isPassVerify'] = $brokerInfo && Bll_Broker_HzBroker::isPassVerify($brokerInfo['profileVerify']);
             //if (!$isPassVerify)
             //    $this->redirect2Result(Const_PublishCode::NOT_PASS_VERIFY, $this->site, $this->action, $this->ctx['proId']);
             // 获取账户余额
             $balance = Bll_Broker_HzBroker::getAccountInfo($this->ctx['ajkBrokerId'], 'balance');
             $this->ctx['validMoney'] = $balance && $balance['msg'] ? round($balance['msg'] / 100, 2) : 0;
             //if (!$validMoney)
             //   $this->redirect2Result(Const_PublishCode::NOT_MONEY, $this->site, $this->action, $this->ctx['proId']);
             // ppc推广
             $spreadResult = Bll_Plan_Fix_HzFix::addPropToPlan($this->ctx['planId'], $this->ctx['proId'], $this->ctx['cityId'], $this->ctx['ajkBrokerId']);
         }
         // 推广出错
         if ($spreadResult['status'] <= 0) {
             $this->redirect2Result(Const_PublishCode::SPREAD_PROP_HANDLE_STOP, $this->site, $this->action, $this->ctx['proId'], $spreadResult['msg']);
         }
     }
     //++++++ others actions
     // 委托
     if (isset($this->ctx['isCommission']) && $this->ctx['isCommission']) {
         // 房源发布成功,回写委托信息
         if ($this->ctx['commission'] && $this->ctx['proId']) {
             Bll_House_HzHouse::updateCommission($this->ctx['commissionId'], $this->ctx['proId']);
         }
     }
 }
Example #30
0
 /**
  * 判断房源是否可以参加精选房源推广
  *
  * @param $ajkBrokerId
  * @param $cityId
  * @param $propId
  * @return array
  */
 public static function checkPropCanChoice($ajkBrokerId, $cityId, $propId)
 {
     $propSearch = Model_House_HzPropSearch::get_prop_by_prop_id($cityId, $propId);
     if (empty($propSearch)) {
         return self::buildReturn(Bll_Plan_Bid_Choice::BID_FAIL_OTHER, '房源不存在');
     }
     /** 判断房源是否是当前经纪人的房源 */
     if ($propSearch['ajkBrokerId'] != $ajkBrokerId) {
         return self::buildReturn(Bll_Plan_Bid_Choice::BID_FAIL_OTHER, '房源不存在(code:-10086)');
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($cityId, Const_Site::HAOZU)) {
         /** 判断房源是否在套餐推广中 */
         if (!Bll_Combo_HouseRelation::getOnlineRelationByHouseId($propId, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
             return array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '房源必须套餐推广才能参与精选推广');
         }
     }
     /** 判断房源是否多图 */
     if ($propSearch['islabel'] == 0) {
         return self::buildReturn(Bll_Plan_Bid_Choice::BID_FAIL_QUALITY_OR_NEW, '多图、新发15天房源才能参与精选推广');
     }
     /** 判断房源是否是在15天内发布的 */
     if (date('ymd', strtotime('-16 days')) > date('Ymd', $propSearch['created'])) {
         return self::buildReturn(Bll_Plan_Bid_Choice::BID_FAIL_QUALITY_OR_NEW, '多图、新发15天房源才能参与精选推广');
     }
     /** 判断房源是否已经在竞价计划中了 取master */
     $propBidInfo = Model_Plan_HzPlanning::getPropBidPlan($propId, true);
     if (!empty($propBidInfo)) {
         $planBasic = Model_Plan_HzPlanBasic::get_plan_by_id($propBidInfo['plan_id'], true);
         if ($planBasic['bid_version'] == Const_HzPlan::BID_VERSION_CHOICE && in_array($planBasic['status'], array(Const_HzPlan::SPREAD, Const_HzPlan::WAITING))) {
             return self::buildReturn(Bll_Plan_Bid_Choice::BID_FAIL_OTHER, '该房源已经处于精选状态,请先删除');
         }
     }
     return array('err_no' => 0, 'err_msg' => '');
 }