Example #1
0
 /**
  * 获取二手房房源数据
  * [getBrokerEsfPro description]
  */
 private function getBrokerEsfPro()
 {
     //判断是否是套餐城市
     $data = $proClickInfo = array();
     $isCombo = Bll_Combo_HouseRelation::isComboCity($this->cityId);
     if ($isCombo['data']) {
         //套餐城市
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($this->brokerId, Bll_Combo_HouseRelation::SITE_TYPE_AJK, 1);
         $proIds = $this->getObjFieldInfo($comboList, 'houseId');
         $clicksInfo = Bll_Ppc_NewPackageStatsBrokerDay::getHouseComboClickInfo($proIds, date('Ymd'), Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_AJK);
         if (!empty($clicksInfo)) {
             foreach ($clicksInfo as $val) {
                 if (isset($proClickInfo[$val['propId']])) {
                     $proClickInfo[$val['propId']] += intval($val['cnum']);
                 } else {
                     $proClickInfo[$val['propId']] = intval($val['cnum']);
                 }
             }
         }
     } else {
         //经纪人计划信息
         $brokerPlanInfo = BLL_Plan_EsfPropFixedPlanRelation::get_instance()->getBrokerEsfOnlinePlan($this->brokerId);
         if (empty($brokerPlanInfo)) {
             //计划数据为空
             $this->outData($data, 1);
         }
         //计划IDs
         $planIds = $this->getObjFieldInfo($brokerPlanInfo, 'id');
         //定价推广房源
         $fixedProInfos = Bll_Fixedspread_AjkFixedSpread::getFixedOnlineProByPlanIds($this->cityId, $planIds);
         if (empty($fixedProInfos)) {
             $this->outData($data, 1);
         }
         //房源IDs
         $proIds = $this->getObjFieldInfo($fixedProInfos, 'proId');
         //房源点击量
         $proClickDao = new DAO_My_Ppc_PlanOpe();
         $proClickInfo = $proClickDao->getProClick($proIds);
     }
     $proInfos = Bll_House_EsfHouse::getHouseInfo($proIds, $this->cityId);
     if (empty($proInfos)) {
         $this->outData($data, 1);
     }
     //经纪人橱窗房源设置信息
     $adProInfos = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($this->brokerId);
     $addPro = array();
     if (!empty($adProInfos)) {
         foreach ($adProInfos as $adProVal) {
             $addPro[$adProVal->propId] = true;
         }
     }
     $this->initEsfProData($proInfos, $proClickInfo, $addPro);
 }
 /**
  * 判断给定房源是否在线上推广
  * @param $brokerId 二手房经纪人ID
  * @param $cityId 城市ID
  * @param $type 类型,二手房或者租房或者商业地产
  * @param $filterProIds
  * @param array $updateTimeArr
  * @param array $newFixedProInfos
  * @return array
  */
 public function filterProIds($brokerId, $cityId, $type, $filterProIds, &$updateTimeArr = array(), &$newFixedProInfos = array())
 {
     //判断是否是套餐城市
     $isCombo = Bll_Combo_HouseRelation::isComboCity($cityId);
     if ($type == Const_ShowcaseOrders::SALE_DB) {
         //二手房
         //经纪人计划信息
         if ($isCombo['data']) {
             //套餐城市
             $comboList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_AJK, 1);
             foreach ($comboList as $comboVal) {
                 $uTime = strtotime($comboVal['updateTime']);
                 $newFixedProInfos[$comboVal['houseId']] = array($comboVal['houseId'], $uTime);
                 $updateTimeArr[$comboVal['houseId']] = $uTime;
             }
         } else {
             //PPC城市
             $brokerPlanInfo = BLL_Plan_EsfPropFixedPlanRelation::get_instance()->getBrokerEsfOnlinePlan($brokerId);
             if (empty($brokerPlanInfo)) {
                 return array();
             }
             //计划ID
             $planIds = array();
             foreach ($brokerPlanInfo as $brokerPlanVal) {
                 $planIds[] = $brokerPlanVal->id;
             }
             //定价推广房源
             $fixedProInfos = Bll_Fixedspread_AjkFixedSpread::getFixedOnlineProByPlanIds($cityId, $planIds);
             if (empty($fixedProInfos)) {
                 return array();
             }
             foreach ($fixedProInfos as $fixedProVal) {
                 $uTime = strtotime($fixedProVal->updatedDateTime);
                 $newFixedProInfos[$fixedProVal->proId] = array($fixedProVal->proId, $uTime);
                 $updateTimeArr[$fixedProVal->proId] = $uTime;
             }
         }
     } elseif ($type == Const_ShowcaseOrders::RENT_DB) {
         //如果是租房
         if ($isCombo['data']) {
             //套餐城市
             $comboList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
             foreach ($comboList as $comboVal) {
                 $uTime = strtotime($comboVal['updateTime']);
                 $newFixedProInfos[$comboVal['houseId']] = array($comboVal['houseId'], $uTime);
                 $updateTimeArr[$comboVal['houseId']] = $uTime;
             }
         } else {
             //PPC城市
             $hzBrokerId = intval(Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($brokerId));
             //定价房源信息
             $fixedProInfos = Bll_House_FixedPro::getInstance()->getBrokerHzFiexdProInfo($hzBrokerId);
             if (empty($fixedProInfos)) {
                 return array();
             }
             foreach ($fixedProInfos as $fixedProVal) {
                 $newFixedProInfos[$fixedProVal->proid] = array($fixedProVal->proid, $fixedProVal->created);
                 $updateTimeArr[$fixedProVal->proid] = $fixedProVal->created;
             }
         }
     }
     //判断需要过滤的房源ID是否在推广房源信息中
     if (!empty($filterProIds)) {
         foreach ($filterProIds as $filterProKey => $filterProId) {
             if (empty($newFixedProInfos[$filterProId])) {
                 //不在在线推广房源中,则释放
                 unset($filterProIds[$filterProKey]);
             } else {
                 //过滤ID,因为补充逻辑肯定是补充不在过滤ID中的房源
                 unset($newFixedProInfos[$filterProId]);
                 unset($updateTimeArr[$filterProId]);
             }
         }
     }
     return $filterProIds;
 }
Example #3
0
 public function handle_request_internal()
 {
     if (!Bll_City::isShowCaseCity(static::$intBrokerCityID)) {
         $this->redirect('/user/combo/brokerhome');
         exit;
     }
     $objRequest = APF::get_instance()->get_request();
     $cityID = self::$BrokerInfo['BaseInfo']['CITYID'];
     $objRequest->set_attribute('PayType', self::$BrokerInfo['BaseInfo']['PAYTYPE']);
     $tmp = array('cityId' => $cityID, 'status' => 1, 'startDate' => date('Ymd'));
     $cityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp, Const_ShowcaseOrders::SALE_DB);
     $todayPrice = round($cityPrice->discountPrice / 100, 2);
     $intBrokerID = $objRequest->getBrokerId();
     $userId = $objRequest->getUserId();
     $data = array('brokerId' => $intBrokerID);
     $orderinfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders($data, $this->db);
     if (!$orderinfo) {
         $this->toManage('/ajkbroker/showcase/esf/');
     }
     $lavedays = ceil((strtotime($orderinfo->endDate) - strtotime(date('Ymd'))) / 3600 / 24);
     if ($orderinfo->isStop == 1 || $lavedays < 0) {
         $order_status = 'stop';
     } else {
         $objRequest->set_attribute('lavedays', $lavedays);
         $objRequest->set_attribute('lastday', date('Y-m-d', strtotime($orderinfo->endDate)));
         $order_status = 'open';
     }
     $objRequest->set_attribute('order_status', $order_status);
     $objRequest->set_attribute('todayPrice', $todayPrice);
     $params = APF::get_instance()->get_request()->get_parameters();
     $days = intval($params['days']);
     //status=2是停止,status=1是续费
     if ($params['status'] == 2) {
         if ($orderinfo->isStop == 0) {
             $stopstatus = Bll_Broker_ShowcaseOrders::getInstance()->stopBrokerOthers($orderinfo, $cityPrice->discountPrice, $this->db);
             if ($stopstatus['status']) {
                 $this->toManage();
             } else {
                 $this->toError($stopstatus['msg']);
             }
         } else {
             $msg = '订单类型不能操作';
             $this->toError($msg);
         }
     } elseif ($params['status'] == 1 && $days >= 1) {
         $BrokerMoney = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId);
         if ($BrokerMoney < $todayPrice) {
             $this->toError(Const_ShowcaseOrders::MONEY_NOT_ENOUGH);
         }
         $Continueorder = Bll_Broker_ShowcaseOrders::getInstance()->continueBrokerOthers($orderinfo, $days, $cityPrice->discountPrice, $this->db);
         if ($Continueorder['status']) {
             $this->toManage();
         } else {
             $this->toError($Continueorder['msg']);
         }
     } elseif ($params['status'] == 3) {
         $proIds = array();
         if (!empty($params['rooms'])) {
             $proIds = explode(';', $params['rooms']);
             $filterProIds = Bll_Broker_ShowcaseAdSetPro::getInstance()->filterProIds($intBrokerID, $cityID, $this->db, $proIds);
             //有些房源不在线上展示
             if (count($filterProIds) != count($proIds)) {
                 $this->toError('有些房源没在线上推广,操作失败!');
             }
             $res = Bll_Broker_ShowcaseAdSetPro::getInstance()->insertAdProsInfo($intBrokerID, $cityID, $proIds, $this->db);
             if (!$res['status']) {
                 $this->toError($res['msg']);
             } else {
                 //插入成功,跳转至管理页面
                 if ($orderinfo->isStop == 0) {
                     $log = array();
                     $log['brokerId'] = $orderinfo->brokerId;
                     $log['cityId'] = $orderinfo->cityId;
                     $log['endDate'] = $orderinfo->endDate;
                     $log['startDate'] = $orderinfo->startDate;
                     $log['opType'] = Const_ShowcaseOrders::OPTYPE_6;
                     $log['totalDays'] = ceil((strtotime($orderinfo->endDate) - strtotime($orderinfo->startDate)) / 3600 / 24) + 1;
                     $log['createTime'] = time();
                     Bll_Broker_ShowcaseOrders::getInstance()->insertSetLog($log, $this->db);
                 }
                 $this->toManage();
             }
         }
     }
     $orderCreated = date('Ymd', $orderinfo->createTime);
     if ($orderCreated < date('Ymd')) {
         $click = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerClick($intBrokerID, date('Ymd', strtotime('-1 days')), $this->db);
         if (!$click->quantityCount) {
             $objRequest->set_attribute('YClick', 0);
         } else {
             $objRequest->set_attribute('YClick', $click->quantityCount);
         }
         $objRequest->set_attribute('IS_YClick', true);
     }
     $isCombo = Bll_Combo_HouseRelation::isComboCity($cityID);
     if ($isCombo['data']) {
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($intBrokerID, Bll_Combo_HouseRelation::SITE_TYPE_AJK, 1);
         if (!empty($comboList)) {
             if (count($comboList) >= Const_ShowcaseOrders::SALE_PRO_MAX_COUNT) {
                 $fixedProInfosCnt = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT;
             } else {
                 $fixedProInfosCnt = count($comboList);
             }
         } else {
             $fixedProInfosCnt = 0;
         }
         $proInfo = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($intBrokerID);
         $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfo, 'propId');
         $proInfos = Bll_House_EsfHouse::getHouseInfo($proIds, $cityID);
         $proList = Bll_Broker_ShowcaseAdSetPro::getInstance()->initComboEsfProData($proInfos, $comboList);
     } else {
         //获取经纪人计划
         $brokerPlanInfo = BLL_Plan_EsfPropFixedPlanRelation::get_instance()->getBrokerEsfOnlinePlan($intBrokerID);
         if (!empty($brokerPlanInfo)) {
             //计划数据不为空
             //计划IDs
             $planIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($brokerPlanInfo, 'id');
             //定价推广房源
             $fixedProInfos = Bll_Fixedspread_AjkFixedSpread::getFixedOnlineProByPlanIds($cityID, $planIds);
             $proIdsc = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($fixedProInfos, 'proId');
             $proInfosc = Bll_House_EsfHouse::getHouseInfo($proIdsc, $cityID);
             if (!empty($proInfosc)) {
                 if (count($proInfosc) >= Const_ShowcaseOrders::SALE_PRO_MAX_COUNT) {
                     $fixedProInfosCnt = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT;
                 } else {
                     $fixedProInfosCnt = count($proInfosc);
                 }
             } else {
                 $fixedProInfosCnt = 0;
             }
         } else {
             $fixedProInfosCnt = 0;
         }
         $proInfo = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($intBrokerID);
         $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfo, 'propId');
         $proInfos = Bll_House_EsfHouse::getHouseInfo($proIds, $cityID);
         $proStatus = Bll_Fixedspread_AjkFixedSpread::getFixedProBy($cityID, $proIds);
         $proList = Bll_Broker_ShowcaseAdSetPro::getInstance()->initEsfProData($proInfos, $proStatus, $planIds);
     }
     if (count($proList) > $fixedProInfosCnt) {
         $fixedProInfosCnt = count($proList);
     }
     $objRequest->set_attribute('type', 'ajk');
     $objRequest->set_attribute('index', 2);
     //精选推广开关
     $isChoice = Bll_City::isChoiceCity($cityID);
     $objRequest->set_attribute('isChoice', $isChoice);
     $objRequest->set_attribute('fixedProInfosCnt', $fixedProInfosCnt);
     $objRequest->set_attribute('proList', $proList);
     return 'Showcase_EsfManage';
 }