Exemplo n.º 1
0
 public function checkInputValid($action)
 {
     //houseIds 和 proIds 兼容
     if ($this->params['houseIds']) {
         $this->params['proIds'] = $this->params['houseIds'];
     }
     if ($this->params['propIds']) {
         $this->params['proIds'] = $this->params['propIds'];
     }
     // 房源有效性验证等
     $props = Model_House_HzProp::getPropsByPropIds($this->params['proIds'], true);
     if (empty($props)) {
         $this->outPut(0, '请选择有效的房源');
     }
     unset($this->params['proIds']);
     $this->params['proIds'] = array();
     // 过滤不是自己的 违规的 删除的 过期的
     foreach ($props as $proId => $prop) {
         if ($action == 'addPropToCombo') {
             if (in_array($prop['status'], array(6, 99, 100)) || $prop['userid'] != $this->hzBrokerId) {
                 continue;
             }
         }
         $this->params['proIds'][] = $proId;
     }
     if (empty($this->params['proIds'])) {
         $this->outPut(0, '请选择有效的房源');
     }
 }
Exemplo n.º 2
0
 public function handle_request_combo()
 {
     $brokerId = $this->brokerId;
     $propIds = $this->_params['propIds'];
     $cityId = $this->cityId;
     if (!is_array($propIds)) {
         $propIds = strstr($propIds, ",") === false ? array($propIds) : explode(',', $propIds);
     }
     // 房源有效性验证等
     $prop = Model_House_HzProp::getPropsByPropIds($propIds);
     if (empty($prop)) {
         throw new Exception('房源不存在');
     }
     if (!Bll_Combo_HouseRelation::houseStopComboSpread($brokerId, $cityId, $propIds, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
         Util_MobileAPI::error_tmp('-1', '套餐推广取消失败');
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('msg' => '套餐推广取消成功'));
 }
Exemplo n.º 3
0
 public function handle_request_combo()
 {
     $propIds = $this->_params['propIds'];
     $brokerId = $this->brokerId;
     $cityId = $this->cityId;
     if (!is_array($propIds)) {
         $propIds = strstr($propIds, ",") === false ? array($propIds) : explode(',', $propIds);
     }
     // 房源有效性验证等
     $prop = Model_House_HzProp::getPropsByPropIds($propIds);
     $newPropIds = array();
     // 验证房源是否已经被删除
     foreach ($prop as $propId => $value) {
         if ($value['status'] > 0 && !in_array($value['status'], array(6, 99, 100))) {
             $newPropIds[$propId] = $propId;
         }
     }
     if (empty($newPropIds)) {
         throw new Exception('房源不存在');
     }
     $result = Bll_Combo_HouseRelation::houseStartComboSpreadV2($brokerId, $cityId, $newPropIds, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
     if ($result['status'] == 1) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('msg' => '套餐立即推广成功'));
     } else {
         switch ($result['status']) {
             case -1:
                 $msg = '尚未购买套餐,请购买套餐';
                 break;
             case -2:
                 $msg = '尚未购买套餐,请购买套餐';
                 break;
             case -4:
                 $msg = '推广房源数超过上限';
                 break;
             case -5:
                 $msg = '推广房源数超过上限';
                 break;
             default:
                 $msg = $result['msg'];
         }
         return Util_MobileAPI::error_tmp($result['status'], $msg);
     }
 }
Exemplo n.º 4
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));
 }
Exemplo n.º 5
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;
 }
Exemplo n.º 6
0
 /**
  * 更具二手房经纪人ID 获取房源信息
  *
  * @param int $ajkBrokerId
  * @param int $cityId
  * @param bool $isGetMainProp
  * @return array
  */
 public static function getValidPropsByBrokerIdEx($ajkBrokerId, $cityId, $isGetMainProp = true)
 {
     $result = array();
     // 取出经纪人所有非删除房源 (分表)
     $props = Model_House_HzPropSearch::getPropLists($cityId, array(array('ajkBrokerId', '=', $ajkBrokerId), array('status', '<>', Const_HzStatus::REMOVE), array('status', '<>', Const_HzStatus::EXPIRED)), 1000, array('created', 'desc'));
     if (empty($props)) {
         return $result;
     }
     foreach ($props as $prop) {
         $result[$prop['proid']] = $prop;
     }
     if (!$isGetMainProp) {
         return $result;
     }
     // 获取主表房源
     $mainProps = Model_House_HzProp::getPropsByPropIds(array_keys($result));
     if ($mainProps) {
         foreach ($result as $proId => $searchProp) {
             if (isset($mainProps[$proId])) {
                 $result[$proId] = array_merge($mainProps[$proId], $searchProp);
             }
         }
     }
     return $result;
 }
Exemplo n.º 7
0
 /**
  * 组装未推广列表 取出所有-有效定价房源
  * @param $out
  * @return array
  */
 private static function prepareOutList(&$out)
 {
     $outList = array();
     $outPropIds = array();
     $fixProIds = array_keys($out['props']);
     // 取出经纪人所有非删除房源 (分表)
     $allSearchProps = Model_House_HzPropSearch::getPropLists($out['cityId'], array(array('ajkBrokerId', '=', $out['ajkBrokerId']), array('status', '<>', Const_HzStatus::DELETE), array('status', '<>', Const_HzStatus::OFFLINE), array('status', '<>', Const_HzStatus::OUTPORT), array('status', '<>', Const_HzStatus::HIBERNATE), array('status', '<>', Const_HzStatus::REMOVE), array('status', '<>', Const_HzStatus::EXPIRED)), 1000, array('created', 'desc'));
     if (empty($allSearchProps)) {
         return array();
     }
     // 获取城市价格段
     $allPrices = Model_House_HzPriceChoice::getAllPriceByCityId($out['cityId']);
     $out['getQualityProIds'] = array();
     foreach ($allSearchProps as $allSearchProp) {
         $proId = $allSearchProp['proid'];
         $out['getQualityProIds'][] = $proId;
         // 过滤非删除状态定价
         if (in_array($proId, $fixProIds)) {
             continue;
         }
         $outList[$proId] = $allSearchProp;
         // 获取剩余时间
         $outList[$proId]['leftDays'] = Bll_House_HzHouse::getLeftDays($allSearchProp['created']);
         $outPropIds[] = $proId;
     }
     // 获取改经纪人所有房源质量
     $out['propsQuality'] = Model_Stats_HzPropQuality::getPropsquality($out['getQualityProIds']);
     // 获取如是违规房源 拼接违规原因
     $outList = Bll_HzProp::checkAndGetPropsIllegalInfos($outList);
     // 批量获取主表信息
     if (empty($outPropIds)) {
         return array();
     }
     $props = Model_House_HzProp::getPropsByPropIds($outPropIds);
     if (!$props) {
         return array();
     }
     // 房源主分表信息合并
     foreach ($outList as $proId => $outProp) {
         $outList[$proId] = array_merge($outList[$proId], $props[$proId]);
         // 计算点击价格
         if (!empty($allPrices)) {
             foreach ($allPrices as $priceInfo) {
                 if ($priceInfo['lower'] < $outList[$proId]['pricenum'] && $priceInfo['upper'] >= $outList[$proId]['pricenum']) {
                     $outList[$proId]['unitPrice'] = $priceInfo['price'];
                     break;
                 }
             }
         }
     }
     return $outList;
 }