Example #1
0
 /**
  * 获取房源的默认图片
  *
  * @return Model_Image_HzImage|null
  */
 public function getDefaultImage()
 {
     static $defaultImages;
     if (!isset($defaultImages[$this->propId])) {
         $defaultImages[$this->propId] = Model_Image_HzImage::getDefaultImageByHouseId($this->propId);
     }
     return $defaultImages[$this->propId];
 }
Example #2
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));
 }
Example #3
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $subscriptions = Model_Choice_Subscription::data_access()->filter('site', Model_Choice_Subscription::SITE_RENT)->filter('brokerId', $brokerId)->filter('status', Model_Choice_Subscription::SUBSCRIPTION_START)->find_all();
     $propIds = array();
     foreach ($subscriptions as $subscription) {
         $propIds[] = $subscription['propId'];
     }
     $propertyList = array();
     if ($propIds) {
         $props = Model_House_HzProp::findMultiByPropIds($propIds);
         foreach ($props as $prop) {
             $propId = $prop['propId'];
             $row = array();
             $row['propId'] = $propId;
             $row['title'] = $prop->getContentBasic('title');
             $row['imgUrl'] = '';
             $row['commId'] = $prop->getContentBasic('commid');
             $row['commName'] = $prop->getContentBasic('commname');
             $row['roomNum'] = $prop->getContentBasic('roomnum');
             $row['hallNum'] = $prop->getContentBasic('hallnum');
             $row['toiletNum'] = $prop->getContentBasic('toilnetnum');
             $row['area'] = $prop->getContentBasic('areanum');
             $row['price'] = $prop->getContentBasic('pricenum');
             $row['priceUnit'] = '元/月';
             $row['isBid'] = 0;
             $row['isChoice'] = 0;
             $row['isVisible'] = intval($prop->getContentBasic('status') != 6);
             $row['isMoreImg'] = intval($prop->getContentBasic('quality'));
             $row['isPhonePub'] = intval($prop->getContentBasic('from') == 'mobile-ajk-broker');
             $row['publishDays'] = $prop->getPublishedDays();
             $row['publishDaysMsg'] = $row['publishDays'] > 0 ? "{$row['publishDays']}天前发布" : '今天发布';
             $row['createTime'] = date('Y-m-d H:i:s', $prop->getContentBasic('created'));
             $row['updateTime'] = date('Y-m-d H:i:s', $prop->getContentBasic('updated'));
             $propertyList[$propId] = $row;
         }
         // 批量获取房源的默认图片
         $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
         foreach ($defaultImages as $defaultImage) {
             $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
         }
     }
     $result = array();
     $result['status'] = Const_APIStatus::RETURN_CODE_OK;
     $result['data']['propertyList'] = array_values($propertyList);
     return $result;
 }
Example #4
0
 /**
  * 获取房源图片
  * @param $proIds
  * @param $isExtInfo
  * @return array
  */
 public static function getImagesByHouseIds($proIds, $isExtInfo = false)
 {
     if (!$proIds) {
         return array();
     }
     if (!is_array($proIds)) {
         $proIds = explode(',', $proIds);
     }
     $images = Model_Image_HzImage::getImagesByHouseIds($proIds);
     if (!$images) {
         return array();
     }
     if ($isExtInfo && $images) {
         $imgIds = array();
         foreach ($images as $proId => $imageTmps) {
             foreach ($imageTmps as $imageTmp) {
                 $imgIds[] = $imageTmp['id'];
             }
         }
         $extInfos = Model_Image_HzImageExt::getImageExts($imgIds);
         // 取出来再拼接回去
         if ($extInfos) {
             foreach ($images as $proId => $imageTmps) {
                 foreach ($imageTmps as $k => $imageTmp) {
                     //$imgIds[] = $imageTmp['id'];
                     if (in_array($imageTmp['id'], array_keys($extInfos))) {
                         $tmp = json_decode($extInfos[$imageTmp['id']]['content'], true);
                         $images[$proId][$k]['exif_exists'] = json_decode($tmp['exif_exists'], true);
                         $images[$proId][$k]['md5_exists'] = $tmp['md5_exists'];
                     }
                 }
             }
         }
     }
     return count($proIds == 1) ? $images[$proIds[0]] : $images;
 }
Example #5
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $cityId = $this->_params['cityId'];
     $planId = $this->_params['planId'];
     // 获取Broker Mapping
     $brokerMapping = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($brokerId);
     if (!$brokerMapping) {
         throw new Exception('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     // 判断计划和经纪人关联关系
     $plan = Model_Plan_HzPlanBasic::get_plan_by_id($planId);
     if ($plan['user_id'] != $brokerMapping['hzBrokerid']) {
         throw new Exception('计划不属于该经纪人', Const_APIStatus::E_PLAN_NOT_BELONG_BROKER);
     }
     // 获取定价推广房源列表
     $propertyList = array();
     $props = Bll_HzFixPlan::get_plan_props($planId, $cityId);
     if (isset($props[$planId]) && isset($props[$planId]['props'])) {
         $propIds = array();
         foreach ($props[$planId]['props'] as $prop) {
             $propId = $prop['proid'];
             $propIds[] = $propId;
             $row = array();
             $row['propId'] = $row['id'] = $propId;
             $row['title'] = $prop['content_basic']['title'];
             $row['imgUrl'] = '';
             $row['commId'] = $prop['content_basic']['commid'];
             $row['commName'] = $prop['content_basic']['commname'];
             $row['roomNum'] = $prop['content_basic']['roomnum'];
             $row['hallNum'] = $prop['content_basic']['hallnum'];
             $row['toiletNum'] = $prop['content_basic']['toilnetnum'];
             $row['area'] = round($prop['content_basic']['areanum']);
             $row['price'] = round($prop['content_basic']['pricenum']);
             $row['priceUnit'] = '元/月';
             $row['todayClicks'] = $prop['fix_click'];
             $row['totalClicks'] = $prop['fix_total_click'];
             $row['isBid'] = 0;
             $row['isChoice'] = 0;
             $row['isVisible'] = (int) ($prop['content_basic']['status'] != 6);
             $row['isMoreImg'] = (int) $prop['content_basic']['quality'];
             $row['isPhonePub'] = (int) (isset($prop['content_basic']['from']) && $prop['content_basic']['from'] == 'mobile-ajk-broker');
             $row['publishDays'] = floor((time() - $prop['content_basic']['created']) / 86400);
             $row['publishDaysMsg'] = $row['publishDays'] > 0 ? "{$row['publishDays']}天前发布" : '今天发布';
             $row['createTime'] = date('Y-m-d H:i:s', $prop['content_basic']['created']);
             $row['updateTime'] = date('Y-m-d H:i:s', $prop['content_basic']['updated']);
             //增加委托房源标签
             $isEntrust = Bll_Zufang_Choice::isCommissionHouse($propId, $brokerId, Model_House_Commission::TYPE_RENT);
             if ($isEntrust) {
                 $row['isEntrust'] = 1;
             } else {
                 $row['isEntrust'] = 0;
             }
             $propertyList[$propId] = $row;
         }
         if ($propIds) {
             // 批量获取房源的默认图片
             $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
             foreach ($defaultImages as $defaultImage) {
                 $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
             }
             // 批量获取房源和竞价计划的关联记录(精选是竞价2.0)(只取推广中和排队中的关系)
             $relations = Model_Plan_HzPlanning::getBidRelationsByHouseIds($propIds, array(Const_HzPlan::SPREAD, Const_HzPlan::WAITING));
             // 批量获取房源竞价计划
             $planIds = array();
             $planPropMap = array();
             foreach ($relations as $relation) {
                 $planIds[] = $relation['plan_id'];
                 $planPropMap[$relation['plan_id']] = $relation['proid'];
             }
             if ($planIds) {
                 $plans = Model_Plan_HzPlanBasic::getPlansByIds($planIds);
                 foreach ($plans as $plan) {
                     // 忽略已删除计划
                     if ($plan->flag == 0) {
                         continue;
                     }
                     // 精选
                     if ($plan->bid_version == 2) {
                         $propId = $planPropMap[$plan['id']];
                         $propertyList[$propId]['isChoice'] = 1;
                     } else {
                         // 竞价
                         $propId = $planPropMap[$plan['id']];
                         $propertyList[$propId]['isBid'] = 1;
                     }
                 }
             }
         }
     }
     // 排序 • 按发布时间倒序
     usort($propertyList, function ($a, $b) {
         if ($a['createTime'] == $b['createTime']) {
             return 0;
         }
         return strtotime($a['createTime']) > strtotime($b['createTime']) ? -1 : 1;
     });
     // 分组
     $newList = array();
     $oldList = array();
     foreach ($propertyList as $property) {
         if ($property['publishDays'] > 30) {
             $oldList[] = $property;
         } else {
             $newList[] = $property;
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => $newList, 'oldList' => $oldList));
 }
Example #6
0
 public function handle_request_combo()
 {
     $ajkBrokerId = $this->brokerId;
     $cityId = $this->cityId;
     $siteType = Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_HZ;
     //首先获取套餐关系房源列表 ---- 那房源到主表去除status 已删除的房源 -----在房源主表获取房源基本信息
     $comboList = Bll_Combo_HouseRelation::getHouseRelations($ajkBrokerId, $siteType, 1);
     $surplus = $hasCombo = 0;
     //获取套餐信息-首先判断经纪人有无套餐
     $comboInfos = Bll_Combo_Broker_BrokerComboInfo::getComboListBySite($ajkBrokerId, $siteType);
     if (count($comboInfos) > 0) {
         $index = Bll_Combo_Broker_BrokerComboInfo::getComboIndexBySiteType($siteType);
         $currentTime = time();
         foreach ($comboInfos as $combo) {
             if ($combo[$index] == 0) {
                 continue;
             }
             if (strtotime($combo['endTime']) > $currentTime && strtotime($combo['startTime']) < $currentTime) {
                 $currentCombo = $combo;
             }
         }
         if (!empty($currentCombo)) {
             $surplus = $currentCombo['rentPropNum'];
             if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
                 //商业地产没打通
                 $surplus = $currentCombo['rentPropNum'] + $currentCombo['salePropNum'];
             }
             $hasCombo = 1;
         }
     }
     //获取当前已推广套餐数量
     if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
         $currentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCount($ajkBrokerId, $siteType, true);
     } else {
         $currentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($ajkBrokerId, $cityId, $siteType);
     }
     $oldList = $newList = array();
     if (empty($comboInfos)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => $newList, 'oldList' => $oldList, 'surplus' => $surplus - $currentSpreadHouseCount, 'hasCombo' => $hasCombo));
     }
     $propIds = array();
     foreach ($comboList as $row) {
         $propIds[] = $row['houseId'];
     }
     $hzBrokerId = Bll_HzBroker::get_brokerid_by_ajk_brokerid($ajkBrokerId);
     $comboPropList = Model_House_HzPropSearch::getPropList($propIds, $hzBrokerId, $this->cityId);
     foreach ($comboPropList as $key => $list) {
         if (in_array($list['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) {
             unset($comboPropList[$key]);
         }
     }
     //fix bug45133
     if (empty($comboPropList)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => $newList, 'oldList' => $oldList, 'surplus' => $surplus - $currentSpreadHouseCount, 'hasCombo' => $hasCombo));
     }
     $propIds = array();
     foreach ($comboPropList as $row) {
         $propIds[] = $row['proid'];
     }
     //从主表获取房源信息
     $propertyList = Model_House_HzProp::getPropsByPropIds($propIds);
     //获取是否精选或者竞价
     $relations = Model_Plan_HzPlanning::getBidRelationsByHouseIds($propIds, array(Const_HzPlan::SPREAD, Const_HzPlan::WAITING));
     if (!empty($relations)) {
         $planPropMap = array();
         foreach ($relations as $relation) {
             $planIds[] = $relation['plan_id'];
             $planPropMap[$relation['plan_id']] = $relation['proid'];
         }
         if (!empty($planIds)) {
             $plans = Model_Plan_HzPlanBasic::getPlansByIds($planIds);
             foreach ($plans as $plan) {
                 if ($plan->flag == 0) {
                     continue;
                 }
                 if ($plan->bid_version == 2) {
                     $propId = $planPropMap[$plan['id']];
                     $propertyList[$propId]['isChoice'] = 1;
                 } else {
                     $propId = $planPropMap[$plan['id']];
                     $propertyList[$propId]['isBid'] = 1;
                 }
             }
         }
     }
     // 批量获取房源的默认图片
     $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
     if (!empty($defaultImages)) {
         foreach ($defaultImages as $defaultImage) {
             $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
         }
     }
     krsort($propertyList);
     $startDate = $endDate = date('Ymd');
     $todayClicks = Bll_Combo_Broker_BrokerComboInfo::getHouseComboClickEx($propIds, $startDate, $endDate, Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_HZ);
     $totalClicks = Bll_House_HzHouse::getComboHouseAccumulateClick($ajkBrokerId, $propIds, $cityId);
     foreach ($propertyList as $list) {
         $row = array();
         $row['id'] = $list['propId'];
         $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'] = $todayClicks[$list['propId']][$startDate] ?: 0;
         $row['totalClicks'] = $totalClicks[$list['propId']] ?: 0;
         $row['totalClicks'] = $row['totalClicks'] + $row['todayClicks'];
         $row['isBid'] = isset($list['isBid']) ? $list['isBid'] : 0;
         $row['isChoice'] = isset($list['isChoice']) ? $list['isChoice'] : 0;
         $row['isVisible'] = (int) ($list['status'] != 6);
         $row['isMoreImg'] = (int) $list['quality'];
         $row['isPhonePub'] = (int) (isset($list['from']) && $list['from'] == 'mobile-ajk-broker');
         $row['publishDays'] = floor((time() - $list['created']) / 86400);
         $row['publishDaysMsg'] = $row['publishDays'] > 0 ? "{$row['publishDays']}天前发布" : '今天发布';
         $row['createTime'] = date('Y-m-d H:i:s', $list['created']);
         //$row['updateTime'] = date('Y-m-d H:i:s', $list['updated']);
         //是否委托
         $isEntrust = Bll_Zufang_Choice::isCommissionHouse($list['propId'], $ajkBrokerId, Model_House_Commission::TYPE_RENT);
         $row['isEntrust'] = $isEntrust ? 1 : 0;
         $row['publishDays'] > 30 ? $oldList[] = $row : ($newList[] = $row);
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => $newList, 'oldList' => $oldList, 'surplus' => $surplus - $currentSpreadHouseCount, 'hasCombo' => $hasCombo));
 }
Example #7
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $cityId = $this->_params['cityId'];
     // 获取未推广房源列表
     $hzBrokerId = Bll_HzBroker::get_brokerid_by_ajk_brokerid($brokerId);
     //APP套餐城市调错API了 需要做一下套餐城市的兼容处理
     $isComboBroker = Bll_Broker_HzBroker::isComboBroker($brokerId);
     if (!$isComboBroker) {
         $props = Bll_HzFixPlan::get_outline_list($hzBrokerId, $cityId, 1);
         $propIds = array();
         $propertyList = array();
         foreach ($props as $prop) {
             $propId = $prop['proid'];
             $propIds[] = $propId;
             $row = array();
             $row['propId'] = $row['id'] = $propId;
             $row['title'] = $prop['content_basic']['title'];
             $row['imgUrl'] = '';
             $row['commId'] = $prop['content_basic']['commid'];
             $row['commName'] = $prop['content_basic']['commname'];
             $row['roomNum'] = $prop['content_basic']['roomnum'];
             $row['hallNum'] = $prop['content_basic']['hallnum'];
             $row['toiletNum'] = $prop['content_basic']['toilnetnum'];
             $row['area'] = round($prop['content_basic']['areanum']);
             $row['price'] = round($prop['content_basic']['pricenum']);
             $row['priceUnit'] = '元/月';
             $row['isBid'] = 0;
             $row['isChoice'] = 0;
             $row['isVisible'] = intval($prop['content_basic']['status'] != 6);
             $row['isMoreImg'] = intval($prop['content_basic']['quality']);
             $row['isPhonePub'] = intval(isset($prop['content_basic']['from']) && $prop['content_basic']['from'] == 'mobile-ajk-broker');
             $row['publishDays'] = floor((time() - $prop['content_basic']['created']) / 86400);
             $row['publishDaysMsg'] = $row['publishDays'] > 0 ? "{$row['publishDays']}天前发布" : '今天发布';
             $row['createTime'] = date('Y-m-d H:i:s', $prop['content_basic']['created']);
             $row['updateTime'] = date('Y-m-d H:i:s', $prop['content_basic']['updated']);
             //增加委托房源标签
             $isEntrust = Bll_Zufang_Choice::isCommissionHouse($propId, $brokerId, Model_House_Commission::TYPE_RENT);
             $row['isEntrust'] = $isEntrust ? 1 : 0;
             $propertyList[$propId] = $row;
         }
         if ($propIds) {
             // 批量获取房源的默认图片
             $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
             foreach ($defaultImages as $defaultImage) {
                 $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
             }
         }
         $result = array();
         $result['status'] = Const_APIStatus::RETURN_CODE_OK;
         $result['data']['propertyList'] = array_values($propertyList);
         return $result;
     } else {
         //获取所有有效房源
         $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));
     }
 }
Example #8
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $bllChoice = new Bll_Zufang_Choice();
     $hzBrokerId = $bllChoice->get_hz_broker_id($brokerId);
     $brokerInfo = $bllChoice->get_broker_info($brokerId);
     $cityId = $brokerInfo[0]->cityId;
     if (!Bll_City::isChoiceCity($cityId, Const_Site::HAOZU)) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => Const_APIStatus::E_NOT_CHOICE_CITY, 'message' => '非精选城市');
     }
     $result = array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('OnlinePropertyList' => array(), 'QueuedPropertyList' => array(), 'OfflinePropertyList' => array()));
     // 获取所有的计划
     $plans = $bllChoice->get_active_choice_plans($hzBrokerId, array(1, 13, 2, 3, 7, 8));
     if (empty($plans)) {
         return $result;
     }
     $keyedPlans = array();
     foreach ($plans as $plan) {
         $keyedPlans[$plan->id] = $plan;
     }
     // 获取所有的房源和计划的关系
     $choiceRelations = $bllChoice->get_prop(array_keys($keyedPlans));
     $propIds = array();
     $propPlanMap = array();
     $propUpdateTime = array();
     foreach ($choiceRelations as $choiceRelation) {
         $propIds[] = $choiceRelation->proid;
         $propPlanMap[$choiceRelation->proid] = $keyedPlans[$choiceRelation->plan_id];
         $propUpdateTime[$choiceRelation->proid] = $choiceRelation->last_update;
     }
     // 获取所有房源
     if (empty($propIds)) {
         return $result;
     }
     $props = $bllChoice->get_prop_content($propIds);
     // 拼装房源数据
     $propertyList = array();
     foreach ($props as $prop) {
         $row = array();
         $content = json_decode($prop->contentBasic, true);
         $row['propId'] = $prop->propId;
         $row['title'] = $content['title'];
         $row['imgUrl'] = '';
         $row['commId'] = $content['commid'];
         $row['commName'] = $content['commname'];
         $row['roomNum'] = $content['roomnum'];
         $row['hallNum'] = $content['hallnum'];
         $row['toiletNum'] = $content['toilnetnum'];
         $row['price'] = round($content['pricenum']);
         $row['priceUnit'] = '元/月';
         $row['isVisible'] = $prop->isIllegal() ? 0 : 1;
         $row['isBid'] = 0;
         $row['isChoice'] = 1;
         $row['isMoreImg'] = intval($prop->isMultiImages());
         $row['isPhonePub'] = intval($prop->isFromMobile());
         //pmt21181 bug标记 文档上为createTime
         $row['choiceTime'] = $propPlanMap[$prop->propId]->created;
         $row['updateTime'] = $propUpdateTime[$prop->propId];
         $totalClicks = $bllChoice->get_prop_choice_clicks($prop->propId, $cityId);
         // TODO 待定
         $row['totalClicks'] = $totalClicks[0]['bidClicks'];
         //增加委托房源标签
         $isEntrust = Bll_Zufang_Choice::isCommissionHouse($prop->propId, $brokerId, Model_House_Commission::TYPE_RENT);
         if ($isEntrust) {
             $row['isEntrust'] = 1;
         } else {
             $row['isEntrust'] = 0;
         }
         $propertyList[$prop->propId] = $row;
     }
     if ($propIds) {
         // 批量获取房源的默认图片
         $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
         foreach ($defaultImages as $defaultImage) {
             $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
         }
     }
     // 排序
     /*usort($propertyList, function ($a, $b) {
           if ($a['choiceTime'] == $b['choiceTime']) {
               return 0;
           }
           return ($a['choiceTime'] > $b['choiceTime']) ? -1 : 1;
       });
       */
     usort($propertyList, function ($a, $b) {
         if (strtotime($a['updateTime']) == strtotime($b['updateTime'])) {
             return 0;
         }
         return strtotime($a['updateTime']) > strtotime($b['updateTime']) ? -1 : 1;
     });
     // 分组
     $onlinePropertyList = array();
     //推广中列表
     $waitPropertyList = array();
     //排队中列表
     $offlinePropertyList = array();
     //推广结束列表
     foreach ($propertyList as $property) {
         switch ($propPlanMap[$property['propId']]->status) {
             case '1':
                 $property['choiceStatus'] = 1;
                 $property['choiceStatusName'] = '精选中';
                 $onlinePropertyList[] = $property;
                 break;
             case '13':
                 $property['choiceStatus'] = 2;
                 $property['choiceStatusName'] = '排队中';
                 $waitPropertyList[] = $property;
                 break;
             default:
                 $property['isChoice'] = 0;
                 $property['choiceStatus'] = 3;
                 $property['choiceStatusName'] = '已结束';
                 $offlinePropertyList[] = $property;
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('OnlinePropertyList' => $onlinePropertyList, 'QueuedPropertyList' => $waitPropertyList, 'OfflinePropertyList' => $offlinePropertyList));
 }
Example #9
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     // 判断经纪人是否存在
     $broker = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     $hzBrokerId = Model_Broker_MainBusiness::getHzBrokerIdByAjkBrokerId($brokerId);
     if (!$hzBrokerId || !$broker) {
         throw new Exception_Broker_NotFound('BrokerId: ' . $brokerId);
     }
     // 判断城市是否开通竞价业务
     $cityId = $broker['cityId'];
     if (!Bll_City::isBidCity($cityId)) {
         throw new Exception_City_NotBidCity('CityId: ' . $cityId);
     }
     // 获取竞价房源
     $finalProps = array();
     $bidProps = Bll_HzBidPlan::get_broker_bidprop($hzBrokerId, $cityId);
     foreach ($bidProps as $bidProp) {
         $row = array();
         $row['propId'] = $bidProp['proid'];
         $row['title'] = $bidProp['prop']['content_basic']['title'];
         $row['imgUrl'] = '';
         $row['commId'] = $bidProp['prop']['content_basic']['commid'];
         $row['commName'] = $bidProp['prop']['content_basic']['commname'];
         $row['roomNum'] = $bidProp['prop']['content_basic']['roomnum'];
         $row['hallNum'] = $bidProp['prop']['content_basic']['hallnum'];
         $row['toiletNum'] = $bidProp['prop']['content_basic']['toilnetnum'];
         $row['area'] = round($bidProp['prop']['content_basic']['areanum']);
         $row['price'] = round($bidProp['prop']['content_basic']['pricenum']);
         $row['priceUnit'] = "元/月";
         $row['totalClicks'] = 0;
         $row['isBid'] = 1;
         $row['isChoice'] = 0;
         $row['isVisible'] = (int) ($bidProp['content_basic']['status'] != 6);
         $row['isMoreImg'] = (int) $bidProp['content_basic']['quality'];
         $row['isPhonePub'] = (int) (isset($bidProp['content_basic']['from']) && $bidProp['content_basic']['from'] == 'mobile-ajk-broker');
         // TODO 批量判定 增加委托房源标签
         $isEntrust = Bll_Zufang_Choice::isCommissionHouse($bidProp['proid'], $brokerId, Model_House_Commission::TYPE_RENT);
         if ($isEntrust) {
             $row['isEntrust'] = 1;
         } else {
             $row['isEntrust'] = 0;
         }
         // 确认房源分组
         // TODO 基于Rank获取分组可能对页面速度有一定影响
         $row['rank'] = $bidProp['rank'];
         if ($row['rank'] === '已暂停') {
             $row['group'] = 'offline';
         } elseif ($row['rank'] === '排队中') {
             $row['group'] = 'queued';
         } else {
             $row['group'] = 'online';
         }
         $finalProps[$row['propId']] = $row;
     }
     if ($finalProps) {
         $propIds = array_keys($finalProps);
         // 批量获取房源的默认图片
         $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
         foreach ($defaultImages as $defaultImage) {
             $finalProps[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
         }
         // 批量获取房源的竞价总点击
         $bidClicks = Model_Stats_PropClick::getPropAllClicks($propIds, $brokerId, $cityId);
         $bidClickSums = Model_Stats_PropClick::calculateClickSumsGroupByPropId($bidClicks, 'bid');
         foreach ($bidClickSums as $propId => $bidClickSum) {
             $finalProps[$propId]['totalClicks'] = $bidClickSum;
         }
     }
     // 排序 • 按ID倒序
     ksort($finalProps);
     // 分组
     $props = array('onlinePropertyList' => array(), 'queuedPropertyList' => array(), 'offlinePropertyList' => array());
     foreach ($finalProps as $finalProp) {
         switch ($finalProp['group']) {
             case 'online':
                 $props['onlinePropertyList'][] = $finalProp;
                 break;
             case 'queued':
                 $props['queuedPropertyList'][] = $finalProp;
                 break;
             case 'offline':
                 $props['offlinePropertyList'][] = $finalProp;
                 break;
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $props);
 }
Example #10
0
 public function getComboPropsInOneComm($brokerId, $cityId, $commId = '')
 {
     $siteType = Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_HZ;
     $comboList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, $siteType, 1);
     if (empty($comboList)) {
         return array();
     }
     $propIds = array();
     foreach ($comboList as $row) {
         $propIds[] = $row['houseId'];
     }
     $propertyList = Model_House_HzProp::getPropsByPropIds($propIds);
     //获取是否精选或者竞价
     $relations = Model_Plan_HzPlanning::getBidRelationsByHouseIds($propIds, array(Const_HzPlan::SPREAD, Const_HzPlan::WAITING));
     if (!empty($relations)) {
         $planPropMap = array();
         foreach ($relations as $relation) {
             $planIds[] = $relation['plan_id'];
             $planPropMap[$relation['plan_id']] = $relation['proid'];
         }
         if (!empty($planIds)) {
             $plans = Model_Plan_HzPlanBasic::getPlansByIds($planIds);
             foreach ($plans as $plan) {
                 if ($plan->flag == 0) {
                     continue;
                 }
                 if ($plan->bid_version == 2) {
                     $propId = $planPropMap[$plan['id']];
                     $propertyList[$propId]['isChoice'] = 1;
                 } else {
                     $propId = $planPropMap[$plan['id']];
                     $propertyList[$propId]['isBid'] = 1;
                 }
             }
         }
     }
     // 批量获取房源的默认图片
     $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds);
     if (!empty($defaultImages)) {
         foreach ($defaultImages as $defaultImage) {
             $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
         }
     }
     krsort($propertyList);
     $base_domain = APF::get_instance()->get_config('base_domain');
     $startDate = $endDate = date('Ymd');
     $todayClicks = Bll_Combo_Broker_BrokerComboInfo::getHouseComboClickEx($propIds, $startDate, $endDate, Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_HZ);
     $totalClicks = Bll_House_HzHouse::getComboHouseAccumulateClick($brokerId, $propIds, $cityId);
     foreach ($propertyList as $key => $prop) {
         if (in_array($prop['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) {
             continue;
         }
         $row = array();
         $row['id'] = $prop['propId'];
         $row['title'] = $prop['title'];
         $row['commId'] = $prop['commid'];
         $row['commName'] = $prop['commname'];
         $row['roomNum'] = $prop['roomnum'];
         $row['hallNum'] = $prop['hallnum'];
         $row['toiletNum'] = $prop['toilnetnum'];
         $row['area'] = round($prop['areanum']);
         $row['price'] = round($prop['pricenum']);
         $row['priceUnit'] = '元/月';
         $row['isVisible'] = (int) ($prop['status'] != 6);
         $row['imgUrl'] = $prop['imgUrl'] ?: '';
         $row['isMoreImg'] = (int) $prop['quality'];
         $row['isPhonePub'] = (int) (isset($prop['from']) && $prop['from'] == 'mobile-ajk-broker');
         $row['propUrl'] = 'http://' . $base_domain . '/web/rent/x/' . $prop['cityid'] . '/' . $prop['propId'] . '-3';
         $row['isBid'] = isset($prop['isBid']) ? $prop['isBid'] : 0;
         $row['isChoice'] = isset($prop['isChoice']) ? $prop['isChoice'] : 0;
         $todayClick = $todayClicks[$prop['propId']][$startDate] ?: 0;
         $row['totalClicks'] = $totalClicks[$prop['propId']] ?: 0;
         $row['totalClicks'] = $row['totalClicks'] + $todayClick;
         $row['createTime'] = date('Y-m-d H:i:s', $prop['created']);
         $row['updateTime'] = date('Y-m-d H:i:s', $prop['updated']);
         $commProps[$prop['commid']][$key] = $row;
     }
     // 如果是获取某单个小区房源列表
     if ($commId) {
         $ret['status'] = 'ok';
         $ret['data']['propertyList'] = isset($commProps[$commId]) && !empty($commProps[$commId]) ? array_values($commProps[$commId]) : array();
     } else {
         $ret = isset($commProps) && !empty($commProps) ? $commProps : array();
     }
     return $ret;
 }
Example #11
0
 /**
  * @param $proId
  * @return array
  */
 public static function getPropImages($proId)
 {
     $images = Model_Image_HzImage::getImagesByHouseIds($proId);
     if (empty($images)) {
         return array();
     }
     $images = $images[$proId];
     // 分组 type=1(室内图 ) type=2(房型图) type=3(小区图)
     $count = count($images);
     $result = array();
     foreach ($images as $image) {
         if ($image['type'] == 1) {
             $result['roomImg'][] = $image;
         } elseif ($image['type'] == 2) {
             $result['moduleImg'][] = $image;
         } else {
             $result['commImg'][] = $image;
         }
     }
     $result['count'] = $count;
     return $result;
 }
 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);
         //获取精选房源列表
         $bllChoice = new Bll_Zufang_Choice();
         $choices = $bllChoice->get_active_choice_plans($hzBrokerId, array(1, 13, 2, 3, 7, 8));
         $choicePropIds = array();
         if (!empty($choices)) {
             $keyedPlans = array();
             foreach ($choices as $choice) {
                 $keyedPlans[$choice->id] = $choice;
             }
             // 获取所有的房源和精选的关系
             $choiceRelations = $bllChoice->get_prop(array_keys($keyedPlans));
             foreach ($choiceRelations as $choiceRelation) {
                 $choicePropIds[] = $choiceRelation->proid;
             }
         }
         //所有有效房源-套餐推广房源-精选推广房源 = 待推广房源
         if (!empty($comboList)) {
             foreach ($comboList as $row) {
                 unset($props[$row['houseId']]);
             }
         }
         if (!empty($choicePropIds)) {
             foreach ($choicePropIds as $k => $v) {
                 unset($props[$v]);
             }
         }
         if (!empty($props)) {
             // 批量获取房源的默认图片
             $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds(array_keys($props));
             if (!empty($defaultImages)) {
                 foreach ($defaultImages as $defaultImage) {
                     $props[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl();
                 }
             }
             //是否是精选城市,城市是否精选分离
             $cityIsChoice = Bll_City::isChoiceCity($cityId, Const_Site::HAOZU);
             $cityIsChoiceIndependent = Bll_City::isChoiceIndependentCity($cityId, Const_Site::HAOZU);
             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']);
                 //精选状态
                 $choiceStatus = Bll_HzProp::getZuFangChoiceStatus($list, $cityId, $cityIsChoice);
                 if (!$cityIsChoiceIndependent && $choiceStatus['choiceStatus']) {
                     //城市未精选分离
                     $choiceStatus['choiceStatus'] = 0;
                     $choiceStatus['choiceStatusName'] = '';
                 }
                 $row['choiceStatus'] = $choiceStatus['choiceStatus'];
                 $row['choiceStatusName'] = $choiceStatus['choiceStatusName'];
                 $propertyList[] = $row;
             }
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('propertyList' => $propertyList));
 }