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')); }
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; }
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";*/ }
/** * 房源取消套餐推广 * @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, '房源取消套餐推广成功'); }
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)); }
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); } } }
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 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)); }
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; }
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; }
/** * 获取页面的初始化信息 * * @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); }
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; }
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); } }
/** * 获取二手房、好租房源的推广状态 */ 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')); }
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)); } } }
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' => '套餐取消推广成功')); }
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(); } }
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; }
/** * 新加竞价 * * @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); }
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; }
/** * 获取页面的初始化信息 * * @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'])); } } }
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']); } } }
/** * 判断房源是否可以参加精选房源推广 * * @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' => ''); }