private function getHouseInfo($houseId) { try { return Model_House_JpHouseIdx::data_access()->filter('id', $houseId)->filter('isDelete', 0)->get_row(); } catch (Exception $e) { return array(); } }
public static function stopJpBidData($list) { $checkList = self::checkList($list); if (!$checkList['status']) { return $checkList; } $planInfo = Model_Plan_Jp::data_access()->filter('id', $list['planId'])->find_only(); if ($planInfo->isDelete == Model_Plan_Jp::ENUM_IS_DELETE_YES) { return Bll_HzPropBll::build_return(0, '无效的竞价计划' . json_encode($list)); } if ($planInfo->status != Model_Plan_Jp::ENUM_STATUS_ONLINE) { return Bll_HzPropBll::build_return(0, '竞价计划不在推广中' . json_encode($list)); } if ($planInfo->type != Model_Plan_Jp::ENUM_TYPE_BID) { return Bll_HzPropBll::build_return(0, '竞价计划类型有误' . json_encode($list)); } if (!in_array($planInfo->bidVersion, array(Model_Plan_Jp::BIDVERSION_OLD, Model_Plan_Jp::BIDVERSION_CHOICE))) { return Bll_HzPropBll::build_return(0, '竞价计划version error' . json_encode($list)); } $houseIdx = Model_House_JpHouseIdx::data_access()->filter('id', $planInfo['houseId'])->find_only(); if (empty($houseIdx)) { return Bll_HzPropBll::build_return(0, '金铺房源信息没有' . json_encode($list)); } if ($houseIdx->bidSpreadId != $planInfo->id) { return Bll_HzPropBll::build_return(0, '金铺房源信息有误bidSpreadId' . json_encode($list)); } $houseIdx->bidSpreadId = 0; if (!$houseIdx->save()) { return Bll_HzPropBll::build_return(0, '金铺房源信息更新失败' . json_encode($list)); } //发送结算 $params = array(); $params['spread_id'] = $planInfo->id; $params['log_status'] = 7; Bll_Plan_Bid_JpSettlement::getInstance()->settlement($params, 'bid'); $planInfo->status = Model_Plan_Jp::ENUM_STATUS_OVER; $planInfo->isDelete = 1; $planInfo->updateTime = date('Y-m-d H:i:s'); if (!$planInfo->save()) { return Bll_HzPropBll::build_return(0, '金铺计划信息更新失败' . json_encode($list)); } //房源下架tosolr Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1); //通知更新q_spread_bid_update表 计算竞价系数 Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id); //记录房源日志 $data = array('houseId' => $houseIdx->id, 'planId' => $planInfo->id, 'brokerId' => $list['brokerId'], 'cityId' => $planInfo->cityId, 'type' => 15, 'changeType' => 407, 'remark' => '房源' . $houseIdx->id . '移出定价计划/取消套餐推广。竞价' . $planInfo->id . '(id)取消竞价推广。', 'addDate' => date('Y-m-d H:i:s'), 'operatorId' => $list['operationId'], 'siteType' => 3); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { return Bll_HzPropBll::build_return(0, array("日志写入失败")); } return Bll_HzPropBll::build_return(1, array('竞价' . $planInfo->id . '(id)取消竞价推广。')); }
public function DownHouse($brokerId = 0, $promitionHouseNum = 0) { $brokerId = intval($brokerId); $promitionHouseNum = intval($promitionHouseNum); if ($brokerId == 0 || $promitionHouseNum == 0) { return false; } //将二手房经纪人ID转成商业地产ID $jpBrokerInfoObj = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($brokerId); if (!$jpBrokerInfoObj || $jpBrokerInfoObj->id == 0) { return Util_GlobalFunc::buildReturn(0, "该经纪人:{$brokerId}没有找到"); } //获取这个经纪人的有效计划 $OnlinePlan = Model_Plan_Jp::getOnlinePlanByMemberId($jpBrokerInfoObj->id); if (!$OnlinePlan) { return Util_GlobalFunc::buildReturn(0, "该经纪人:{$brokerId}没有有效计划"); } $onlineplan = array(); foreach ($OnlinePlan as $plan) { $onlineplan[] = $plan->id; $isBidVersion[$plan->id]['bidVersion'] = $plan->bidVersion; } //获取这些有效计划下的房子 $houseIdx = Model_House_JpHouseIdx::getHouseInfoByFixPlanId($onlineplan); if (!$houseIdx) { return Util_GlobalFunc::buildReturn(0, "该经纪人:{$brokerId}有效计划下的房子"); } $housecount = count($houseIdx); echo '正在处理商业地产' . $brokerId . ',总推广房源数' . $housecount . ',api中允许推广数量' . $promitionHouseNum; $allReturn = array(); //和套餐的推广房源做比较,如果当前在线推广的房子大于套餐推广房子,则下房源将较早推广的房子下架 if ($housecount > $promitionHouseNum) { $offNum = $housecount - $promitionHouseNum; for ($i = $offNum; $i >= 1; $i--) { if (empty($houseIdx[$i])) { continue; } if ($houseIdx[$i]->bidSpreadId) { $resultBid = Bll_House_JpHouseInfo::removeBidHouseFromSpread($houseIdx[$i], $jpBrokerInfoObj->id, 1, false); if (!$resultBid['success']) { $allReturn[] = $resultBid['data']; } } $resultFix = Bll_House_JpHouseInfo::removeFixHouseFromSpread($houseIdx[$i], $jpBrokerInfoObj->id); if (!$resultFix['success']) { $allReturn[] = $resultFix['data']; } } } return Util_GlobalFunc::buildReturn(1, $allReturn); }
/** * 经纪人操作添加记录 */ public function logHouseOperation($houseId, $memberId, $title, $comment = '') { if (!empty($comment) && strlen($comment) > 2000) { $comment = substr($comment, 0, 2000); } $houseInfo = Model_House_JpHouseIdx::getPropInfoByPk($houseId); $DBmember = Model_Broker_JpBroker::getJpBrokerInfoByPk($memberId); $PLog = new Model_Log_JpHouseOperation(); $PLog->house_id = $houseId; $PLog->house_type = $houseInfo->houseType; $PLog->member_id = $memberId; $PLog->operator_id = $memberId; $PLog->operator_name = $DBmember->realName; $PLog->title = $title; $PLog->comment = $comment; $PLog->save(); }
public static function getHouseInfoExt($propId) { $houseIdx = Model_House_JpHouseIdx::data_access()->filter('id', $propId)->get_row(); if (empty($houseIdx) || $houseIdx['isDelete'] == Model_House_JpHouseIdx::ENUM_IS_DELETE_YES) { return array(); } $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseIdx['houseType']); $houseInfo = $houseTypeClass::getPropInfoByIds($propId); if (empty($houseInfo)) { return array(); } $house = array('base' => $houseIdx, 'info' => $houseInfo[0], 'houseType' => $houseIdx['houseType']); return self::getHouseExtInfo($house); }
public function dealTask($solrOnProId) { $houseInfo = Model_House_JpHouseIdx::data_access()->filter('id', $solrOnProId)->get_row(); $brokerInfo = Model_Broker_JpBroker::data_access()->filter('id', $houseInfo['memberId'])->get_row(); if ($houseInfo['isDelete'] == 1) { if ($this->dealFlag) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $brokerInfo['ajkMemberId'], $solrOnProId, $houseInfo['houseType'], 2); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message'])); } $this->setLog(sprintf('房源 %s 已经删除, 需要通知solr下' . PHP_EOL, $solrOnProId)); return true; } //查询城市配置信息 $ComboConfig = DAO_My_ComboConfig::getComboConfigByCityId($houseInfo['cityId']); if ($ComboConfig && $ComboConfig['type'] == 0) { //套餐城市 if (!Bll_Combo_HouseRelation::getOnlineRelationByHouseId($solrOnProId, Bll_Combo_HouseRelation::SITE_TYPE_JP)) { if ($this->dealFlag) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $brokerInfo['ajkMemberId'], $solrOnProId, $houseInfo['houseType'], 2); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message'])); } $this->setLog(sprintf('房源 %s 不在套餐推广中, 需要通知solr下' . PHP_EOL, $solrOnProId)); return true; } return true; } else { //ppc城市 if ($houseInfo['spreadId'] != 0) { $spreadInfo = Model_Plan_Jp::data_access()->filter('id', $houseInfo['spreadId'])->filter('type', Model_Plan_Jp::ENUM_TYPE_FIX)->filter('isDelete', Model_Plan_Jp::ENUM_IS_DELETE_NO)->get_row(); if ($spreadInfo && $spreadInfo['status'] == 2) { return true; } } if ($this->dealFlag) { $result = Bll_Combo_NoticeSolrUpDown::noticeComboSolrJpAPI($this->cityId, $brokerInfo['ajkMemberId'], $solrOnProId, $houseInfo['houseType'], 2); $this->setLog(sprintf('房源 %s 通知中间件返回的结果status=%s ; message=%s' . PHP_EOL, $solrOnProId, $result['status'], $result['message'])); } $this->setLog(sprintf('房源 %s 不在定价推广中, 需要通知solr下' . PHP_EOL, $solrOnProId)); return true; } }
/** * 商铺物业板块变更,处理自选房源 * * @param $cityId * @param $oldBlockId * @param $newBlockId * @param $houseType * @param $houseLogType * @param $actionType * @return array * @throws Exception */ public static function dealRoadPropertyAreaChange($cityId, $oldBlockId, $newBlockId, $houseType, $houseLogType, $actionType) { $useBusinessCycleConfigOption = array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT => 'clues_search_condition_shop_rent_list_switch', Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_SALE => 'clues_search_condition_shop_sale_list_switch'); $useBusinessCycleConfig = APF::get_instance()->get_config($useBusinessCycleConfigOption[$houseType], 'jpmulticity'); $useBusinessCycle = isset($useBusinessCycleConfig[$cityId]) && $useBusinessCycleConfig[$cityId]; if ($useBusinessCycle) { $oldBusinessCycleId = Model_Jinpu_NewShopBusinessBlockMap::getNewBusinessCycleByOldBlockId($oldBlockId); $choicePlanList = Model_Plan_Jp::getValidChoicePlanByBlockIdAndNewBlockId($oldBlockId, $oldBusinessCycleId, $houseType); } else { $choicePlanList = Model_Plan_Jp::getValidChoicePlanByBlockIdAndNewBlockId($oldBlockId, 0, $houseType); } $rtn = array(); foreach ($choicePlanList as $choicePlan) { $houseInfo = Model_House_JpHouseIdx::getHouseInfoById($choicePlan['houseId']); if (empty($houseInfo)) { $rtn[] = sprintf('没有获取到房源[%d]信息', $choicePlan['houseId']); continue; } if ($houseInfo['isDelete'] != 0) { $rtn[] = sprintf('房源[%d]已删除', $choicePlan['houseId']); continue; } $propertyInfo = Model_House_JpProperty::getPropertyById($houseInfo['propertyId']); if (empty($propertyInfo)) { $rtn[] = sprintf('物业[%d]没有获取到', $houseInfo['propertyId']); continue; } if ($propertyInfo['isRoad'] != 1) { $rtn[] = sprintf('物业[%d]非道路型,不处理', $houseInfo['propertyId']); continue; } $houseLog = array(); $houseLog['houseId'] = $choicePlan['houseId']; $houseLog['planId'] = $choicePlan['id']; $houseLog['brokerId'] = $choicePlan['ajkBrokerId']; $houseLog['cityId'] = $choicePlan['cityId']; $houseLog['type'] = $houseLogType; $houseLog['changeType'] = $actionType; $houseLog['remark'] = sprintf('房源所在物业、写字楼板块发生变更[%d -> %d]', $oldBlockId, $newBlockId); $houseLog['addDate'] = date('Y-m-d H:i:s'); $houseLog['operatorId'] = 0; $houseLog['siteType'] = 3; if (!Model_Log_HouseLogNew::create($houseLog, date('Ymd'))->save()) { $rtn[] = sprintf('板块变更房源[%d]日志写入失败', $choicePlan['houseId']); continue; } $rtn[] = sprintf('板块变更房源[%d]日志写入成功', $choicePlan['houseId']); } return $rtn; }
public static function broker_restitution($params) { $all_return[] = "队列(" . $params['id'] . ")开始处理"; $all_return[] = '金铺系统返还'; //todo 查询用户所有定价计划,开启计划,上线房源 $ajk_broker_id = $params['broker_id']; //获取金铺经纪人broker_id $jpBrokerInfoObj = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($params['broker_id']); $params['broker_id'] = $jpBrokerInfoObj->id; //获取由于余额用完停止的计划 $fixInfoObjs = Model_Plan_Jp::getNoBalancePlan($params['broker_id']); foreach ($fixInfoObjs as $fixInfoObj) { $plan_log = array(); $plan_log['id'] = $params['id']; $plan_log['plan_id'] = $fixInfoObj->id; $plan_log['broker_id'] = $ajk_broker_id; $plan_log['city_id'] = $fixInfoObj->cityId; $plan_log['type'] = $params['type']; $plan_log = Bll_JpFixPlanBll::build_plan_log($plan_log, 8, "系统返还", 0); //写计划日志 if (!Model_House_UpDown_PlanLog::create($plan_log, date('m'))->save()) { $all_return[] = "计划" . $plan_log['planId'] . "房源推广日志写入失败"; } else { $all_return[] = "计划" . $plan_log['planId'] . "房源推广日志写入成功"; } //计划开启 $fixInfoObj->status = 2; $fixInfoObj->stopReason = 0; if (!$fixInfoObj->save()) { return array('status' => 0, 'msg' => array("定价计划" . $plan_log['planId'] . ",更新失败")); } //获取房源列表 $houseInfoObjs = Model_House_JpHouseIdx::getHouseInfoByFixPlanId($plan_log['planId']); if ($houseInfoObjs) { foreach ($houseInfoObjs as $houseInfoObj) { $prop_log['id'] = $params['id']; $prop_log['pro_id'] = $houseInfoObj->id; $prop_log['plan_id'] = $plan_log['planId']; $prop_log['broker_id'] = $ajk_broker_id; $prop_log['city_id'] = $houseInfoObj->cityId; $prop_log['type'] = $params['type']; $prop_log = Bll_JpPropBll::build_prop_log($prop_log, 5, "系统返还", 0); //写房源日志 if (!Model_Log_HouseLogNew::create($prop_log, date('Ymd'))->save()) { $all_return[] = "房源" . $houseInfoObj->id . "系统返还后房源推广日志写入失败"; } else { $all_return[] = "房源" . $houseInfoObj->id . "系统返还后房源推广日志写入成功"; } //获取房源分表信息 $houseClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfoObj->houseType); $houseObj = $houseClass::getPropInfoByPk($houseInfoObj->id); //更新展示房源状态 $houseObj->isList = 1; if ($houseObj->save()) { $all_return[] = "houseType=" . $houseInfoObj->houseType . ",更新分表isList=1成功"; } else { $all_return[] = "houseType=" . $houseInfoObj->houseType . ",更新分表isList=1失败"; } } } } return Bll_JpPropBll::build_return(1, $all_return); }
public static function handle_plan_start($params) { $all_return = array(); $all_return[] = "队列(" . $params['id'] . ")开始处理"; //获取房源列表 $houseInfoObjs = Model_House_JpHouseIdx::getHouseInfoByFixPlanId($params['plan_id']); //写房源推广日志 if ($houseInfoObjs) { //todo 房源要上线 查余额判断 foreach ($houseInfoObjs as $houseInfoObj) { $params['pro_id'] = $houseInfoObj->id; $data = Bll_JpPropBll::build_prop_log($params, 5, "房源推广", $params['broker_id']); Model_Log_HouseLogNew::create($data, date('Ymd'))->save(); $all_return[] = "房源" . $params['pro_id'] . "上线日志写入"; } } //写计划日志 $data = self::build_plan_log($params, 4, "手动开始计划", $params['broker_id']); Model_House_UpDown_PlanLog::create($data, date('m'))->save(); $all_return[] = "手动开始计划日志写入"; return Bll_JpPropBll::build_return(1, $all_return); }
/** * 金铺更新 * @param $record * @return bool */ public function updateSolrJp($record) { $type = $record['type']; if ($type != 2 && $type != 4) { //记录处理日志 $this->setLog('不需要做更新处理 ' . __METHOD__); return true; } $houseIdx = Model_House_JpHouseIdx::data_access()->filter('id', $record['houseId'])->find_only(); if (intval($houseIdx->houseType) <= 0) { $this->setLog('金铺房源房源类型为空,无法处理 '); return false; } $resArr = Bll_Combo_NoticeSolrUpDown::noticeUpdateJpAPI($record['cityId'], $record['houseId'], $houseIdx->houseType, Bll_Combo_NoticeSolrUpDown::HLSFromPropUpdate, strtotime($record['addDate']), date('Ymd', strtotime($record['addDate'])) . $record['id']); if ($resArr['status'] == 'ok') { //记录处理日志 $this->setLog('solr处理成功 '); } else { //记录处理日志 $this->setLog('solr处理失败 '); } return true; }
protected static function init() { try { $idx = Model_House_JpHouseIdx::data_access()->find_by_pk(self::$houseId); self::$memberId = $idx->memberId; } catch (Exception $e) { self::$memberId = 0; $idx = null; } if (!$idx) { return false; } self::$houseType = $idx->houseType; self::$houseModelName = null; self::$houseImgModelName = NULL; self::get_houseModel(); $houseModel = self::$houseModelName; try { $house = $houseModel::data_access()->find_by_pk(self::$houseId); } catch (Exception $e) { } self::$officeExquisite = 0; self::$shopHighQuality = 0; self::$publishTime = 0; self::$spreadOffer = 0; self::$cityId = $idx->cityId; self::$houseUnitPrice = 0; self::$price_75 = null; self::$exquisiteScore = 0; if ($house) { self::$exquisiteScore = $house->exquisiteScore; if (self::$houseCategory == 'office') { self::$officeExquisite = $house->isExquisite; if (self::$houseType == Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_RENT) { self::$houseUnitPrice = $house->dailyRent; $midpricedata = self::get_midprice($house->buildingId); self::$price_75 = !is_null($midpricedata) ? $midpricedata->mid_price_office_rent : null; } else { self::$houseUnitPrice = $house->unitPrice; $midpricedata = self::get_midprice($house->buildingId); self::$price_75 = !is_null($midpricedata) ? $midpricedata->mid_price_office_sale : null; } } elseif (self::$houseCategory == 'shop') { self::$shopHighQuality = $house->isQuality; if (self::$houseType == Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT) { self::$houseUnitPrice = $house->dailyRent; $midpricedata = self::get_midprice($house->propertyId); self::$price_75 = !is_null($midpricedata) ? $midpricedata->mid_price_shop_rent : null; } else { self::$houseUnitPrice = $house->unitPrice; $midpricedata = self::get_midprice($house->propertyId); self::$price_75 = !is_null($midpricedata) ? $midpricedata->mid_price_shop_sale : null; } } if ($house->createTime) { self::$publishTime = $house->createTime; } if ($house->spreadOffer) { self::$spreadOffer = $house->spreadOffer; } } if ($idx->spreadId == 0) { self::$spreadType = 0; } else { try { $spread = Model_Plan_Jp::data_access()->find_by_pk($idx->spreadId); } catch (Exception $e) { } if ($spread) { self::$spreadType = $spread->type; } } $objMember = Model_Broker_JpBroker::data_access()->find_by_pk($idx->memberId, false); if ($objMember && $objMember->hasRecharged) { self::$memberType = 2; } return true; }
private function getHouseList() { try { $modelClass = Model_House_JpHouseIdx::getHouseTypeModelClass($this->_dealType); $dataAccess = $modelClass::data_access(''); $dataAccess->filter_by_op('id', '>', $this->_startId); $dataAccess->filter_by_op('updateTime', '>=', $this->_startTime); $dataAccess->filter_by_op('updateTime', '<=', $this->_endTime); $dataAccess->sort('id', 'asc'); $dataAccess->limit(self::BATCH_LIMIT); return $dataAccess->get_all(); } catch (Exception $e) { return array(); } }
/** * @param $houseId * @return bool */ public static function getFixPlanInfo($houseId) { $house = Model_House_JpHouseIdx::data_access()->filter('id', $houseId)->get_row(); if (empty($house) || empty($house['fixSpreadId'])) { return array('success' => false, 'data' => '推广不存在'); } $plan = Model_Plan_Jp::data_access()->filter('id', intval($house['fixSpreadId']))->filter('type', Model_Plan_Jp::ENUM_TYPE_FIX)->filter('isDelete', Model_Plan_Jp::ENUM_IS_DELETE_NO)->get_row(); if ($plan['memberId'] != $house['memberId']) { return array('success' => false, 'data' => '没有权限操作推广'); } return array('success' => true, 'data' => $plan); }
/** * * 获取经纪人的违规房源数 * * @param $brokerId * @param $cityId * @param $siteType * @return int */ public static function getBrokerIllegalNum($brokerId, $cityId, $siteType) { $num = 0; switch ($siteType) { case 'ajk': $propList = Bll_House_EsfHouse::getBrokerAllPropInfoList($brokerId, $cityId); foreach ($propList as $prop) { if ($prop['isVisible'] != 1) { $num += 1; } } break; case 'hz': $brokerMapping = Bll_Broker_MainBusiness::getDataByEsfId($brokerId); //根据经纪人查询商铺相应 $propList = Model_House_HzPropSearch::getPropListByUserId($brokerMapping['hzBrokerid'], $cityId, array('status' => 6)); $num = count($propList); break; case 'jp': $brokerMapping = Bll_Broker_MainBusiness::getDataByEsfId($brokerId); //根据经纪人查询商铺相应 $baseInfo = Model_House_JpHouseIdx::data_access()->filter('memberId', $brokerMapping['jpBrokerid'])->filter('isDelete', Model_House_JpHouseIdx::ENUM_IS_DELETE_NO)->get_all(); if (!$baseInfo) { return $num; } $houseIds = array(); foreach ($baseInfo as $hInfo) { $houseIds[] = $hInfo['id']; } //获取房源的标签 $jpOfficeRent = Model_House_JpOfficeRent::getPropInfoByIds($houseIds); $jpOfficeSale = Model_House_JpOfficeSale::getPropInfoByIds($houseIds); $jpShopRent = Model_House_JpShopRent::getPropInfoByIds($houseIds); $jpShopSale = Model_House_JpShopSale::getPropInfoByIds($houseIds); $houseList = array_merge($jpOfficeRent, $jpOfficeSale, $jpShopRent, $jpShopSale); $num = 0; foreach ($houseList as $list) { if ($list['isIllegal'] == 1) { $num += 1; } } break; default: break; } return $num; }
/** * @param $houseId * @param $forceMaster * @throws Exception * 重新计算spreadPrice字段 */ public function rebuildSpreadPrice($houseId, $forceMaster) { $houseIdxInfo = Model_House_JpHouseIdx::getPropInfoByPk($houseId, $forceMaster); if (!empty($houseIdxInfo) && !empty($houseIdxInfo->hosueType)) { $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseIdxInfo->hosueType); $houseDetail = $houseTypeClass::getPropInfoByPk($houseId, $forceMaster); //如果没有基准价格 $intHouseType = $houseIdxInfo->houseType; if (in_array($intHouseType, array(1, 3))) { $floPrice = $houseDetail->monthlyRent; } else { $floPrice = $houseDetail->totalPrice; } $arrBasePrice = $this->getSpreadPriceByPrice($floPrice, $intHouseType, $houseIdxInfo->cityId); $houseDetail->spreadPrice = $arrBasePrice['base_price']; $houseDetail->save(); } }
public static function getHouseInfoByFixPlanIdEx($PlanId) { try { return Model_House_JpHouseIdx::data_access()->filter('fixSpreadId', $PlanId)->filter('houseType', array(1, 2, 3, 4))->filter('isDelete', 0)->get_all(); } catch (Exception $e) { return array(); } }
/** * 精选计划板块变更 * * @param array $queueInfo * @return array */ public static function houseBlockChange($queueInfo) { $choicePlanInfo = Model_Plan_Jp::getPlanInfoById($queueInfo['planId'], true); if (empty($choicePlanInfo)) { return self::buildReturn(0, '没有获取到计划'); } if ($choicePlanInfo['status'] != Model_Plan_Jp::ENUM_STATUS_ONLINE && $choicePlanInfo['status'] != Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD) { return self::buildReturn(1, sprintf('计划状态[%d]不处理', $choicePlanInfo['status'])); } /** 获取房源信息 */ $houseInfo = Model_House_JpHouseIdx::getHouseInfoById($choicePlanInfo['houseId']); if (empty($houseInfo)) { return self::buildReturn(0, sprintf('没有获取到房源[%d]信息', $choicePlanInfo['houseId'])); } if ($houseInfo['isDelete'] == Model_House_JpHouseIdx::ENUM_IS_DELETE_YES) { return self::buildReturn(0, sprintf('房源[%d]已经删除[%d]', $choicePlanInfo['houseId'], $houseInfo['isDelete'])); } /** 获取房源的板块id */ if (in_array($houseInfo['houseType'], array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_RENT, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_SALE))) { $propertyInfo = Model_House_JpBuilding::getBuildingById($houseInfo['propertyId'], array('blockId')); } else { $propertyInfo = Model_House_JpProperty::getPropertyById($houseInfo['propertyId'], array('blockId', 'isRoad')); } $blockId = $propertyInfo['blockId']; /** 商铺自选房源精选板块ID从房源信息表里取 */ if (in_array($houseInfo['houseType'], array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_SALE)) && $propertyInfo['isRoad'] == 1) { $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfo['houseType']); $extendHouseInfo = $houseTypeClass::getPropInfoById($houseInfo['id']); $blockId = $extendHouseInfo['blockId']; } /** 获取商圈ID */ $businessCycleId = Bll_House_JpHouseInfo::getBusinessCycleId($houseInfo['cityId'], $blockId, $houseInfo['houseType']); /** 更新计划的板块和商圈ID */ if (!Model_Plan_Jp::updatePlanBlockIdAndNewBlockIdById($choicePlanInfo['id'], $blockId, $businessCycleId)) { return self::buildReturn(0, sprintf('更新计划[%d]的板块[%d -> %d]和商圈[%d -> %d]id失败', $choicePlanInfo['id'], $choicePlanInfo['blockId'], $blockId, $choicePlanInfo['newBlockId'], $businessCycleId)); } if (!Model_Choice_JPBidBucket::getBucketInfo($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId'])) { Model_Choice_JPBidBucket::initBucketInfo($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId'], $choicePlanInfo['cityId']); } Model_Choice_JPBidBucket::incrementUsedNumEx($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId']); return self::buildReturn(1, sprintf('更新计划[%d]的板块[%d -> %d]和商圈[%d -> %d]id成功', $choicePlanInfo['id'], $choicePlanInfo['blockId'], $blockId, $choicePlanInfo['newBlockId'], $businessCycleId)); }
public static function delete_prop($params) { //是否套餐经纪人,套餐单独处理 //$broker_info = Dao_Broker_BrokerInfo::get_broker_base_info($params['broker_id']); if (Bll_City::isComboCity($params['city_id'])) { return self::delete_combo_prop($params); } if (empty($params['pro_id'])) { return self::build_return(0, array("房源ID为空")); } $out_return[] = "队列(" . $params['id'] . ")开始处理"; $remark = json_decode($params['remark'], 1); if ($remark['fix'] == 'online') { //记录房源手动移除定价组日志 $data = self::build_prop_log($params, 11, "房源移出定价组", $params['broker_id']); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = "房源手动移出定价组日志写入成功"; } else { $all_return[] = "房源手动移出定价组日志写入失败"; } //写入下线日志 $data = self::build_prop_log($params, 6, "房源下线", $params['broker_id']); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = "房源" . $params['pro_id'] . "下线日志写入成功"; } else { $all_return[] = "房源" . $params['pro_id'] . "下线日志写入失败"; } } elseif ($remark['fix'] == 'stop') { //记录房源手动移除定价组日志 $data = self::build_prop_log($params, 11, "房源移出定价组", $params['broker_id']); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = "房源手动移出定价组日志写入成功"; } else { $all_return[] = "房源手动移出定价组日志写入失败"; } } //获取房源分表信息 if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) { $houseInfoObj = Model_House_JpHouseIdx::getPropInfoByPk($params['pro_id']); $houseClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfoObj->houseType); $houseObj = $houseClass::getPropInfoByPk($params['pro_id']); //更新删除房源时间 $houseObj->deleteTime = date("Y-m-d H:i:s"); $houseObj->save(); $all_return[] = "houseType:" . $houseInfoObj->houseType . ",deleteTime:0=>" . date("Y-m-d H:i:s"); } //写房源删除日志 $data = self::build_prop_log($params, 3, "房源删除", 0); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = '写房源删除日志成功'; return self::build_return(1, $all_return); } else { $all_return[] = '写房源删除日志失败'; return self::build_return(0, $all_return); } }
private function modifyHouse($task) { //取数据 $params = array(array('id', '>', 0), array('propertyId', '=', $task['propertyId']), array('houseType', 'in', array(1, 2, 3, 4))); $sort = array('id', 'asc'); $tasks = Model_House_JpHouseIdx::getPropLists($params, $this->houseLimit, $sort); if (empty($tasks)) { return array('status' => 'none', 'msg' => 'house list is empty'); } while ($tasks) { //处理数据 foreach ($tasks as $key => $val) { $this->cursor = $val['id']; if ($val['isDelete'] == 1) { continue; } //判断房源信息是否需要修改 $houseModelClass = Model_House_JpHouseIdx::getHouseTypeModelClass($val['houseType']); $dataAccess = $houseModelClass::data_access(''); $dataAccess->filter('id', $val['id']); // $dataAccess->filter('districtId', $task['areaId']); // $dataAccess->filter('blockId', $task['blockId']); $result = $dataAccess->get_row(); if (empty($result)) { continue; } //非自选 if ($val['houseType'] == 1 || $val['houseType'] == 2) { if ($result['buildingId'] == $task['propertyId']) { try { // call api update house $data = array('officeId' => $val['id']); $result = $this->updateBuildingHouse($data); $info = $result['info']; if ($result['status'] == 'ok') { $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 成功 】data:' . $info); } else { $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 失败 】data:' . $info); } } catch (Exception $e) { $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 异常 】'); $this->setLog($e->getMessage()); } } } elseif ($val['houseType'] == 3 || $val['houseType'] == 4) { if ($result['propertyId'] == $task['propertyId']) { try { // call api update house $data = array('shopId' => $val['id'], 'districtId' => $this->newDistrictId, 'blockId' => $this->newBlockId); $result = $this->updateShopHouse($data); $info = $result['info']; if ($result['status'] == 'ok') { $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 成功 】data:' . $info); } else { $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 失败 】data:' . $info); } } catch (Exception $e) { $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 异常 】'); $this->setLog($e->getMessage()); } } } } $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源 current cursor: ' . $this->cursor); //取数据 $params = array(array('id', '>', $this->cursor), array('propertyId', '=', $task['propertyId']), array('houseType', 'in', array(1, 2, 3, 4))); $sort = array('id', 'asc'); $tasks = Model_House_JpHouseIdx::getPropLists($params, $this->houseLimit, $sort); } return array('status' => 'over', 'msg' => 'house list is empty'); }
public function handle_request() { //分表 $date = date('Ymd'); $id = 0; //获取游标 $dateFlag = $this->getFlag(); if (!empty($dateFlag)) { $date = $dateFlag['date']; $id = $dateFlag['id']; } //竞价队列数据获取 $ProLogList = Model_Log_HouseLogNew::getProLogList($date, $id, $this->limit); //判断当前队列是否处理完成 if (empty($ProLogList)) { //判断是否切换表 if ($date < date('Ymd')) { $date = date('Ymd', strtotime($date) + 24 * 3600); $id = 0; //记录表游标 $this->setFlag(array('date' => $date, 'id' => $id)); } //休息1秒钟 $this->setShCommonSleepTime(1); $this->setLog(date('Y-m-d H:i:s') . ' 处理完成'); exit; } //队列数据处理 foreach ($ProLogList as $list) { $id = $list['id']; $time = 0; //查询房源的发布时间 if ($list['siteType'] == 1) { //二手房 $ajkProInfo = Bll_House_EsfHouse::getHouseInfo($list['houseId'], $list['cityId']); if ($ajkProInfo->postDate) { $time = $ajkProInfo->postDate; } } elseif ($list['siteType'] == 2) { $hzProInfo = Model_House_HzPropSearch::get_prop_by_prop_id($list['cityId'], $list['houseId']); if ($hzProInfo['created']) { $time = $hzProInfo['created']; } } elseif ($list['siteType'] == 3) { $jpProInfo = Model_House_JpHouseIdx::getPropInfoByPk($list['houseId']); if ($jpProInfo['createTime']) { $time = strtotime($jpProInfo['createTime']); } } //写索引表 if (!empty($time)) { //查询数据是否存在 $ProLogIndex = Model_Log_HouseLogIndexNew::getProLogIndexByProId($list['houseId'], date('Ymd', strtotime($list['addDate'])), $list['siteType'], date('Ymd', $time)); if (!empty($ProLogIndex)) { //记录处理日志 $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . ' 城市id:' . $list['cityId'] . ' 经纪人:' . $list['brokerId'] . ' 房源:' . $list['houseId'] . ' 网站:' . $list['siteType'] . ' 房源创建时间:' . date('Y-m-d H:i:s', $time) . ' remark:索引已存在'); continue; } try { Model_Log_HouseLogIndexNew::create(array('proId' => $list['houseId'], 'datei' => date('Ymd', strtotime($list['addDate'])), 'siteType' => $list['siteType']), date('Ymd', $time))->save(); } catch (Exception $e) { print_r($e); } //记录处理日志 $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . ' 城市id:' . $list['cityId'] . ' 经纪人:' . $list['brokerId'] . ' 房源:' . $list['houseId'] . ' 网站:' . $list['siteType'] . ' 房源创建时间:' . date('Y-m-d H:i:s', $time) . ' remark:创建索引'); } else { //记录处理日志 $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . ' 城市id:' . $list['cityId'] . ' 经纪人:' . $list['brokerId'] . ' 房源:' . $list['houseId'] . ' 网站:' . $list['siteType'] . ' remark:未找到房源信息'); } } $this->setFlag(array('date' => $date, 'id' => $id)); //休息10毫秒 $this->setShCommonSleepTime(0.01); }
/** * @param $houseId * @param $selfPage * @return int */ public static function editRedirect($houseId, $selfPage) { $configArr = array(1 => 'jpor', 2 => 'jpos', 3 => 'jpsr', 4 => 'jpss'); if ($houseId) { $houseIdx = Model_House_JpHouseIdx::getPropInfoByPk($houseId); if ($houseIdx) { if ($configArr[$houseIdx->houseType] == $selfPage) { return 0; } else { return $configArr[$houseIdx->houseType] . '/' . $houseId; } } } return 'jpor/?from=editRedirect'; }
/** * Job执行逻辑 */ public function handle_request() { printf('[%s] lastLogId: %s' . PHP_EOL, date('Y-m-d H:i:s'), $this->lastLogId); $this->setLog(sprintf('[%s] lastLogId: %s' . PHP_EOL, date('Y-m-d H:i:s'), $this->lastLogId)); // 获取非删除的房子 $params = array(array('isDelete', '=', 0), array('id', '>', $this->lastLogId)); if ($this->cityIds) { $params = array(array('isDelete', '=', 0), array('cityId', 'in', $this->cityIds), array('id', '>', $this->lastLogId)); } $tasks = Model_House_JpHouseIdx::getPropLists($params, $this->limit); if ($tasks === false) { $this->setLog(sprintf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '获取数据失败')); exit; } if (empty($tasks)) { // 任务完成 printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '任务执行完成'); $this->setStop(); $this->setShStopFlag(); $this->setFlag(array('lastLogId' => 0)); exit; } $doProps = array(); /** 本次处理的房子 */ $doTmpProIds = array(); $solrProIdsTmp = array(); $solrProIds = array(); foreach ($tasks as $task) { $this->lastLogId = $task['id']; $doProps[$task['id']] = $task; $doTmpProIds[$task['houseType']][] = $task['id']; } foreach ($doTmpProIds as $type => $proIds) { printf('[%s] 获取solr, type: %s, proId: %s' . PHP_EOL, date('Y-m-d H:i:s'), $type, json_encode($proIds)); // 获取solr $solrs = Util_SearchUtil::getJpPropsFromSolr($this->getTypeByHouseType($type), $proIds, $this->limit); if (!empty($solrs)) { $solrProIdsTmp[$type] = $solrs; } } // 扁平处理 if (!empty($solrProIdsTmp)) { foreach ($solrProIdsTmp as $items) { foreach ($items as $item) { $solrProIds[] = $item['id']; } } } // 拿出不在线的进行处理 $willDealProIds = array_diff(array_keys($doProps), $solrProIds); if (empty($willDealProIds)) { printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '本轮取的房子都在线,不需要处理'); //记录游标 $this->setFlag(array('lastLogId' => $this->lastLogId)); die; } // 循环处理任务 foreach ($willDealProIds as $willDealProId) { $this->dealTask($doProps[$willDealProId]); } //记录游标 $this->setFlag(array('lastLogId' => $this->lastLogId)); }
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 static function propCheck($houseId, $brokerId) { //获取房源信息 $objModel = Model_House_JpHouseIdx::data_access(); $objHouse = $objModel->find_by_pk($houseId, false); if (empty($objHouse)) { return array('flg' => false, 'data' => '房源为空'); } $jpMemberId = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($brokerId); if ($objHouse->memberId != $jpMemberId->id) { return array('flg' => false, 'data' => '没有权限操作房源'); } if ($objHouse->isDelete == 1) { return array('flg' => false, 'data' => '删除房源无法操作'); } $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($objHouse->houseType); $objHouseDetail = $houseTypeClass::getPropInfoByPk($houseId); if (empty($objHouseDetail)) { return array('flg' => false, 'data' => '房源不存在'); } if ($objHouseDetail->isExpired) { return array('flg' => false, 'data' => '过期房源不能操作'); } if ($objHouseDetail->isIllegal) { return array('flg' => false, 'data' => '违规房源不能操作'); } return array('flg' => true, 'data' => ''); }