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, '请选择有效的房源'); } }
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' => '套餐推广取消成功')); }
public function handle_request_combo() { $propIds = $this->_params['propIds']; $brokerId = $this->brokerId; $cityId = $this->cityId; if (!is_array($propIds)) { $propIds = strstr($propIds, ",") === false ? array($propIds) : explode(',', $propIds); } // 房源有效性验证等 $prop = Model_House_HzProp::getPropsByPropIds($propIds); $newPropIds = array(); // 验证房源是否已经被删除 foreach ($prop as $propId => $value) { if ($value['status'] > 0 && !in_array($value['status'], array(6, 99, 100))) { $newPropIds[$propId] = $propId; } } if (empty($newPropIds)) { throw new Exception('房源不存在'); } $result = Bll_Combo_HouseRelation::houseStartComboSpreadV2($brokerId, $cityId, $newPropIds, Bll_Combo_HouseRelation::SITE_TYPE_HZ); if ($result['status'] == 1) { return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('msg' => '套餐立即推广成功')); } else { switch ($result['status']) { case -1: $msg = '尚未购买套餐,请购买套餐'; break; case -2: $msg = '尚未购买套餐,请购买套餐'; break; case -4: $msg = '推广房源数超过上限'; break; case -5: $msg = '推广房源数超过上限'; break; default: $msg = $result['msg']; } return Util_MobileAPI::error_tmp($result['status'], $msg); } }
public function handle_request_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)); }
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; }
/** * 更具二手房经纪人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; }
/** * 组装未推广列表 取出所有-有效定价房源 * @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; }