Ejemplo n.º 1
0
 public function handle_request_combo()
 {
     $ajkBrokerId = $this->brokerId;
     $cityId = $this->cityId;
     //套餐信息
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($ajkBrokerId);
     $currentDate = time();
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         //获取当前使用的套餐
         if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['rentPropNum'] + $comboInfo['salePropNum'] > 0) {
             $currentCombo = $comboInfo;
             break;
         }
     }
     $currentComboTotal = $currentCombo['salePropNum'] + $currentCombo['rentPropNum'];
     $currentComboName = $currentCombo['name'];
     //二手房套餐列表
     $comboEsfList = Bll_Broker_Combo_ManageAjk::getComboSpreadHouseList($ajkBrokerId, $cityId);
     $comboEsfPropIds = array_keys($comboEsfList);
     //租房套餐列表
     $comboZuFangList = Bll_Combo_HouseRelation::getHouseRelations($ajkBrokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
     $comboZuFangPropIds = array();
     foreach ($comboZuFangList as $v) {
         $comboZuFangPropIds[] = (int) $v['houseId'];
     }
     $currentComboUsed = count($comboZuFangPropIds) + count($comboEsfPropIds);
     $canSpread = $currentComboUsed >= $currentComboTotal ? 0 : 1;
     $propId = $this->_params['propId'];
     $comboInfo = Bll_Combo_HouseRelation::getHouseRelation($ajkBrokerId, $cityId, $propId, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
     if (!empty($comboInfo) && $comboInfo[0]['state'] > 100 & $comboInfo[0]['state'] < 200) {
         //推广中
         $status = 2;
         $statusMsg = '套餐推广中';
         $currentComboInfo = $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})";
     } else {
         $comboInfos = Bll_Combo_Broker_BrokerComboInfo::getComboListBySite($ajkBrokerId, Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_HZ);
         if (empty($comboInfos)) {
             $status = 0;
             $statusMsg = '尚未购买套餐,请购买套餐';
             $currentComboInfo = '尚未购买套餐';
         } else {
             $status = 1;
             $statusMsg = '好房源,不推广就浪费了~';
             $currentComboInfo = $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})";
         }
     }
     $startDate = $endDate = date('Ymd');
     $todayClicks = Bll_Combo_Broker_BrokerComboInfo::getHouseComboClickEx($propId, $startDate, $endDate, Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_HZ);
     $totalClicks = Bll_House_HzHouse::getComboHouseAccumulateClick($ajkBrokerId, $propId, $cityId);
     $todayClick = $todayClicks[$propId][$startDate] ?: 0;
     $totalClick = $totalClicks[$propId] ?: 0;
     $totalClick += $todayClick;
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => $todayClick, 'totalClicks' => $totalClick, 'status' => $status, 'statusMsg' => $statusMsg, 'canSpread' => $canSpread, 'currentComboInfo' => $currentComboInfo));
 }
Ejemplo n.º 2
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     if (!Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         throw new Exception_ISNotComboBrokerException('不是套餐经纪人。');
     }
     /** 套餐信息 */
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     usort($comboInfoList, function ($a, $b) {
         return $a['startTime'] > $b['startTime'] ? 1 : ($a['startTime'] == $b['startTime'] ? 0 : -1);
     });
     $currentCombo = array();
     $nextCombo = array();
     $currentDate = time();
     $currentComboStartDate = 0;
     $currentComboEndDate = 0;
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         $totalPropNum = $comboInfo['rentPropNum'] + $comboInfo['salePropNum'];
         /** 获取当前使用的非商铺套餐 */
         if ($currentDate >= $startDate && $currentDate < $endDate && $totalPropNum > 0) {
             $currentCombo = $comboInfo;
             $currentComboStartDate = $startDate;
             $currentComboEndDate = $endDate;
         }
         /** 获取续买的非商铺套餐 */
         if ($comboInfo['rentPropNum'] > 0 && $startDate > $currentDate) {
             if (!empty($nextCombo)) {
                 $nextComboEffectTime = strtotime($nextCombo['startTime']);
                 if ($nextComboEffectTime > $startDate) {
                     $nextCombo = $comboInfo;
                 }
             } else {
                 $nextCombo = $comboInfo;
             }
         }
     }
     return array('status' => 'ok', 'data' => array('currentCombo' => $currentCombo['name'], 'startDate' => date('Y.m.d', $currentComboStartDate), 'endDate' => date('Y.m.d', $currentComboEndDate), 'nextCombo' => $nextCombo['name']));
 }
Ejemplo n.º 3
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     if (!Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         throw new Exception_ISNotComboBrokerException('不是套餐经纪人。');
     }
     /** 套餐信息 */
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     $currentDate = time();
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         /** 获取当前使用的套餐 */
         if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['salePropNum'] > 0) {
             $currentCombo = $comboInfo;
             break;
         }
     }
     //获取经纪人套餐推广今日点击量
     $comboClick = Bll_Ppc_NewPackageStatsBrokerDay::getComboClickInfo($brokerId, date('Ymd'), Model_Ppc_NewPackageStatsBrokerDay::SITE_TYPE_AJK);
     //经纪人没有套餐
     if (!isset($currentCombo)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => intval($comboClick), 'totalProps' => 0));
     }
     $cityId = $brokerInfo->cityId;
     //获取套餐推广信息
     $comboSpreadHouseList = Bll_Broker_Combo_ManageAjk::getComboSpreadHouseList($brokerId, $cityId);
     //获取房源信息
     $propIds = array_keys($comboSpreadHouseList);
     if ($propIds) {
         $propsInfo = Bll_House_EsfHouse::getHouseBaseInfo($propIds, $cityId);
         $propsNum = count($propsInfo);
     } else {
         $propsNum = 0;
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => intval($comboClick), 'totalProps' => $propsNum));
 }
Ejemplo n.º 4
0
 public static function JpHouseCombo($houseIds, $cityId, $ajkBrokerId)
 {
     if (empty($houseIds)) {
         Util_GlobalFunc::buildReturn(0, '请选择房源');
     }
     if (!is_array($houseIds)) {
         $houseIds = array($houseIds);
     }
     $myComboList = Model_Combo_HouseRelation::data_access('jp')->filter('brokerId', $ajkBrokerId)->filter_by_op('state', '>=', 101)->filter_by_op('state', '<=', 199)->find_all();
     $allCombos = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($ajkBrokerId);
     $myCombos = array();
     $timeNow = date('Y-m-d H:i:s');
     if ($allCombos) {
         foreach ($allCombos as $combo) {
             if ($combo['jpPropNum'] > 0 && $combo['endTime'] >= $timeNow && $combo['startTime'] <= $timeNow) {
                 $myCombos = $combo;
             }
         }
     }
     if (empty($myCombos)) {
         return Util_GlobalFunc::buildReturn(0, '您当前没有可用套餐,请去购买');
     }
     if (intval($myCombos['jpPropNum']) - count($myComboList) < count($houseIds)) {
         return Util_GlobalFunc::buildReturn(0, '套餐推广失败,可推广数量不足');
     }
     foreach ($houseIds as $houseId) {
         $houseRelation = Model_Combo_HouseRelation::data_access('jp')->filter('houseId', $houseId)->filter('brokerId', $ajkBrokerId)->find_only();
         if (empty($houseRelation)) {
             $newHouseRelation = Model_Combo_HouseRelation::create(array('houseId' => $houseId, 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'state' => Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, 'created' => date('Y-m-d H:i:s')), 'jp')->save();
         } else {
             $houseRelation->state = Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE;
             $houseRelation->updateTime = date('Y-m-d H:i:s');
             $houseRelation->save();
         }
     }
     Bll_Combo_HouseRelation::notifyHouseUpDownTask($ajkBrokerId, $houseIds, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_JP, Model_House_UpDown_Task::TYPE_PRO_START_COMBO, '房源手动套餐推广', __METHOD__, $ajkBrokerId);
     return Util_GlobalFunc::buildReturn(1, '套餐推广成功');
 }
Ejemplo n.º 5
0
 /**
  * 获取某站套餐列表
  * 打通的套餐也会返回
  *
  * @param $brokerId
  * @param string $siteType
  * @return array
  */
 public static function getComboListBySite($brokerId, $siteType = self::SITE_TYPE_HZ)
 {
     $list = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     if (empty($list)) {
         return array();
     }
     // 按时间排序
     usort($list, function ($a, $b) {
         return $a['startTime'] > $b['startTime'] ? 1 : ($a['startTime'] == $b['startTime'] ? 0 : -1);
     });
     $result = array();
     if ($siteType == self::SITE_TYPE_JP) {
         $index = static::getComboIndexBySiteType($siteType);
         foreach ($list as $combo) {
             if ($combo[$index] > 0) {
                 $result[] = $combo;
             }
         }
     } else {
         $index = static::getComboIndexBySiteType($siteType);
         foreach ($list as $combo) {
             if ($combo[$index] > 0) {
                 $result[] = $combo;
                 continue;
             }
             if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($combo)) {
                 $result[] = $combo;
             }
         }
     }
     // 按照时间升序
     usort($result, function ($a, $b) {
         return $a['startTime'] > $b['startTime'] ? 1 : -1;
     });
     return $result;
 }
Ejemplo n.º 6
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $propId = $this->_params['propId'];
     //好丑陋。。。。。。好无奈。。。。。。
     //委托房源自动转发停用,为了app能够展示报错信息。。。
     if (empty($propId)) {
         $this->_params['apiDebug'] = 1;
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '0000', 'message' => '委托房源自动转发功能已停用;若要发布请手动发布');
     }
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     if (!Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         throw new Exception_ISNotComboBrokerException('不是套餐经纪人。');
     }
     $cityId = $brokerInfo->cityId;
     /** 套餐信息 */
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     $currentDate = time();
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         /** 获取当前使用的套餐 */
         if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['rentPropNum'] + $comboInfo['salePropNum'] > 0) {
             $currentCombo = $comboInfo;
             break;
         }
     }
     //没有二手房套餐
     if (!isset($currentCombo)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => 0, 'statusMsg' => '尚未购买套餐,请购买套餐', 'currentComboInfo' => '尚未购买套餐'));
     }
     $currentComboName = $currentCombo['name'];
     $currentComboUsed = 0;
     $currentComboTotal = $currentCombo['salePropNum'] + $currentCombo['rentPropNum'];
     //二手房套餐列表
     $comboEsfList = Bll_Broker_Combo_ManageAjk::getComboSpreadHouseList($brokerId, $cityId);
     $comboEsfPropIds = array_keys($comboEsfList);
     //租房套餐列表
     $comboZuFangList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
     $comboZuFangPropIds = array();
     foreach ($comboZuFangList as $v) {
         $comboZuFangPropIds[] = (int) $v['houseId'];
     }
     $currentComboUsed = count($comboZuFangPropIds) + count($comboEsfPropIds);
     $canSpread = $currentComboUsed >= $currentComboTotal ? 0 : (!$currentCombo['openUp'] && !$currentCombo['salePropNum'] ? 0 : 1);
     if (in_array($propId, array_merge($comboEsfPropIds, $comboZuFangPropIds))) {
         $status = 2;
         $statusMsg = '套餐推广中';
     } else {
         $status = 1;
         $statusMsg = '好房源,不推广就浪费了~';
     }
     //房源今日点击  房源总点击
     $houseTodayClickInfo = Bll_House_EsfHouse::getHouseTodayComboClick($propId);
     $todayClicks = $houseTodayClickInfo[$propId];
     //房源总点击
     $houseClickInfo = Bll_House_EsfHouse::getComboHouseAccumulateClickByPropIds($brokerId, $propId, $cityId);
     $totalClicks = $todayClicks + $houseClickInfo[$propId];
     $currentComboInfo = isset($currentCombo) ? $currentComboName . " ({$currentComboUsed}/{$currentComboTotal})" : '尚未购买套餐';
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => $todayClicks, 'totalClicks' => $totalClicks, 'status' => $status, 'statusMsg' => $statusMsg, 'canSpread' => $canSpread, 'currentComboInfo' => $currentComboInfo));
 }
Ejemplo n.º 7
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     //经纪人信息
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     if (!Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         throw new Exception_ISNotComboBrokerException('不是套餐经纪人。');
     }
     /** 套餐信息 */
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     $currentDate = time();
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         /** 获取当前使用的套餐 */
         if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['salePropNum'] > 0) {
             $currentCombo = $comboInfo;
             $comboPropNum = $currentCombo['salePropNum'];
             if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
                 $comboPropNum = $currentCombo['rentPropNum'] + $currentCombo['salePropNum'];
             }
             break;
         }
     }
     $hasCombo = 0;
     //没有二手房套餐
     if (!isset($currentCombo)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => array(), 'oldList' => array(), 'surplus' => 0, 'hasCombo' => $hasCombo));
     } else {
         $hasCombo = 1;
     }
     $cityId = $brokerInfo->cityId;
     //获取套餐推广信息
     $comboSpreadHouseList = Bll_Broker_Combo_ManageAjk::getComboSpreadHouseList($brokerId, $cityId);
     if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
         $currentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCount($brokerId, Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_AJK, true);
     } else {
         $currentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_AJK);
     }
     //套餐还可以推的房源数量
     $surplus = $comboPropNum - $currentSpreadHouseCount;
     if (empty($comboSpreadHouseList)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => array(), 'oldList' => array(), 'surplus' => $surplus, 'hasCombo' => $hasCombo));
     }
     //获取房源信息
     $propIds = array_keys($comboSpreadHouseList);
     $propsInfo = Bll_House_EsfHouse::getHouseBaseInfo($propIds, $cityId);
     //批量获取默认图片
     $propDefImages = Model_House_AjkPropertyData::getDafImages($propIds);
     //批量获取房源总点
     $houseTodayClickInfo = Bll_House_EsfHouse::getHouseTodayComboClick($propIds);
     $houseClickInfo = Bll_House_EsfHouse::getComboHouseAccumulateClickByPropIds($brokerId, $propIds, $cityId);
     //房源竞价&精选计划
     $propSpreadInfo = Model_Plan_EsfAjkPropSpread::getPlanByPropIds($propIds);
     //拼接房源列表中房源数据
     $newList = array();
     $oldList = array();
     foreach ($propsInfo as $prop) {
         $row = array();
         $row['propId'] = $prop->proId;
         $row['title'] = $prop->proName;
         $row['commId'] = $prop->commId;
         $row['commName'] = $prop->commName;
         $row['roomNum'] = $prop->roomNum;
         $row['hallNum'] = $prop->hallNum;
         $row['area'] = round($prop->areaNum);
         $row['toiletNum'] = $prop->toiletNum;
         $row['price'] = intval($prop->proPrice);
         $row['priceUnit'] = '万';
         $row['isBid'] = 0;
         $row['isChoice'] = 0;
         $row['isMoreImg'] = $prop->isHighQulity;
         $row['isPhonePub'] = $prop->uriCode == 'mobile.asyn' || $prop->uriCode == 'mobile-ajk-broker.asyn' ? 1 : 0;
         $row['isVisible'] = isset($houseInfo['isVisible']) ? $houseInfo['isVisible'] : 1;
         //0-违规房源 1-非违规房源
         $row['createTime'] = $prop->postDate;
         //房源发布时间
         $row['imgUrl'] = Model_House_AjkPropertyData::imageUrl($propDefImages[$prop->proId]);
         if ($prop->commitionType == 2) {
             $row['isEntrust'] = 1;
         } else {
             $row['isEntrust'] = 0;
         }
         $row['totalClicks'] = $houseTodayClickInfo[$prop->proId] + $houseClickInfo[$prop->proId];
         if (isset($propSpreadInfo[$prop->proId])) {
             if ($propSpreadInfo[$prop->proId]->bidVersion == 1 && ($propSpreadInfo[$prop->proId]->status == 1 || $propSpreadInfo[$prop->proId]->status == 11)) {
                 $row['isBid'] = 1;
             } elseif ($propSpreadInfo[$prop->proId]->bidVersion == 2 && ($propSpreadInfo[$prop->proId]->status == 1 || $propSpreadInfo[$prop->proId]->status == 11)) {
                 $row['isChoice'] = 1;
             }
         }
         //计算出房源发布天数
         $timeFixStr = strtotime(date("Ymd", $row['createTime']));
         $leftDay = floor((time() - $timeFixStr) / 86400);
         if ($leftDay >= 30) {
             $oldList[] = $row;
         } else {
             $newList[] = $row;
         }
     }
     // 排序
     usort($oldList, function ($a, $b) {
         if ($a['createTime'] == $b['createTime']) {
             return 0;
         }
         return $a['createTime'] > $b['createTime'] ? -1 : 1;
     });
     usort($newList, function ($a, $b) {
         if ($a['createTime'] == $b['createTime']) {
             return 0;
         }
         return $a['createTime'] > $b['createTime'] ? -1 : 1;
     });
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => $newList, 'oldList' => $oldList, 'surplus' => $surplus > 0 ? $surplus : 0, 'hasCombo' => $hasCombo));
 }
Ejemplo n.º 8
0
 public function handle_request_internal()
 {
     if (!$this->isBrokerLogin()) {
         $this->redirect_to_login();
     }
     /**
      * @var $request AJKRequest
      */
     $request = APF::get_instance()->get_request();
     $cityId = $request->getBrokerCityId();
     $brokerId = $request->getBrokerId();
     $userId = $request->getUserId();
     $brokerInfo = self::$BrokerInfo['BaseInfo'];
     //非套餐经纪人不能进入该页面,跳转到首页
     if ($brokerInfo['PAYTYPE'] != 9999) {
         $this->redirect('/user/broker/brokerhome');
     }
     $companyId = intval($brokerInfo['COMPANYID']);
     if ($companyId > 0) {
         /** 通过配置文件配置那些城市的非独立经纪人不可以购买月套餐 */
         $canNotBuyMonthlyComboCitySet = APF::get_instance()->get_config('can_not_buy_monthly_combo_city_set');
         if (is_array($canNotBuyMonthlyComboCitySet) && in_array($cityId, $canNotBuyMonthlyComboCitySet)) {
             $companyId = 0;
         }
     }
     //获取城市可选择的套餐列表
     if ($companyId > 0) {
         $comboList = Bll_Combo_Broker_BrokerComboInfo::getCompanyComboList($cityId, $companyId);
     } else {
         $comboList = Bll_Combo_Broker_BrokerComboInfo::getComboList($cityId);
     }
     //获取经纪人当前套餐
     $brokerCombos = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     //查询账户余额
     $balance = Bll_Service_Payment::balance(Bll_Service_Payment::SITE_ANJUKE, array('userId' => $userId));
     $UserAccountAll = $balance['data']['balance'] / 100.0;
     //账户余额
     $UserAccountPerson = $balance['data']['personBalance'] / 100.0;
     //账户余额(个人)
     $UserAccountCompany = $balance['data']['companyBalance'] / 100.0;
     //账户余额(公司)
     /**
      * 获取经纪人信息身份认证状态(购买套餐时需要身份认证通过)
      * CheckState - 经纪人身份认证状态
      * OperateState - 经纪人审核过程中走到哪一步标记
      *
      * 备注:本处会出bug。(后台显示身份认证通过、不能购买套餐)
      * 经纪人后台判断身份认证状态只使用CheckState=1
      * 套餐购买的api里面判断CheckState=1 && OperateState=4
      * api组的志山同志拍脑袋,使用双验证。
      * caoyang 20140825
      */
     //$brokerInfo['CheckState'] = ($brokerInfo['CHECKSTATE'] == 1 && $brokerInfo['OPERATESTATE'] == 4) ? 1 : 0;
     $brokerInfo['CheckState'] = $brokerInfo['CHECKSTATE'];
     $this->setAttribute('comboList', $comboList);
     $this->setAttribute('brokerCombos', $brokerCombos);
     $this->setAttribute('UserAccountAll', number_format($UserAccountAll, 2, ".", ""));
     $this->setAttribute('UserAccountPerson', number_format($UserAccountPerson, 2, ".", ""));
     $this->setAttribute('UserAccountCompany', number_format($UserAccountCompany, 2, ".", ""));
     $this->setAttribute('brokerInfo', $brokerInfo);
     return 'Combo_Buy_Select';
 }
Ejemplo n.º 9
0
 /**
  * 房源加入套餐推广
  *
  * @param int $brokerId
  * @param int $cityId
  * @param array $params
  * @return array
  */
 public static function houseStartComboSpreadAction($brokerId, $cityId, $params)
 {
     $houseIds = is_array($params['houseIds']) ? $params['houseIds'] : explode(',', $params['houseIds']);
     $realHouseIds = self::removeInvalidateHouseId($brokerId, $houseIds, $cityId);
     if (empty($realHouseIds) || count($houseIds) != count($realHouseIds)) {
         return self::buildResponse('error', $houseIds, '请至少选择一套房源。');
     }
     $comboList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     if (empty($comboList)) {
         return self::buildResponse('error', $realHouseIds, '尚未购买套餐,请购买套餐');
     }
     $currentCombo = array();
     $nextCombo = array();
     $currentTime = time();
     foreach ($comboList as $combo) {
         if (strtotime($combo['endTime']) > $currentTime && strtotime($combo['startTime']) < $currentTime && $combo['salePropNum'] > 0) {
             $currentCombo = $combo;
             break;
         }
         /** 获取续买套餐 */
         if ($combo['salePropNum'] > 0 && strtotime($combo['startTime']) > $currentTime) {
             $nextCombo = $combo;
         }
     }
     if (empty($currentCombo) && empty($nextCombo)) {
         return self::buildResponse('error', $realHouseIds, '尚未购买套餐,请购买套餐');
     }
     if (empty($currentCombo) && !empty($nextCombo)) {
         return self::buildResponse('error', $realHouseIds, sprintf('您购买的套餐 %s 需要到 %s 才能生效。', $nextCombo['name'], date('Y.m.d', strtotime($nextCombo['startTime']))));
     }
     //判断是否是融合套餐
     if ($currentCombo['openUp'] == 1) {
         $ajkCurrentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
         $hzCurrentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
         $jpCurrentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_JP);
         if (count($realHouseIds) + $ajkCurrentSpreadHouseCount + $hzCurrentSpreadHouseCount + $jpCurrentSpreadHouseCount > $currentCombo['salePropNum'] + $currentCombo['rentPropNum'] + $currentCombo['jpPropNum']) {
             return self::buildResponse('error', $realHouseIds, '推广房源数超过上限');
         }
     } else {
         $ajkCurrentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
         if (count($realHouseIds) + $ajkCurrentSpreadHouseCount > $currentCombo['salePropNum']) {
             return self::buildResponse('error', $realHouseIds, '推广房源数超过上限');
         }
     }
     if (Bll_Combo_HouseRelation::houseStartComboSpread($brokerId, $cityId, $realHouseIds, Bll_Combo_HouseRelation::SITE_TYPE_AJK)) {
         return self::buildResponse('ok', $realHouseIds, sprintf('成功推广 %d 套房源。', count($realHouseIds)));
     }
     return self::buildResponse('error', $realHouseIds, '套餐推广失败。');
 }
Ejemplo n.º 10
0
 /**
  * @param Manage_ProplistController $controller
  * @param AJKRequest $request
  * @param AJKResponse $response
  *
  * @return array
  */
 public static function getComboInfo($controller, $request, $response)
 {
     $cityId = $request->getBrokerCityId();
     $brokerId = $request->getBrokerId();
     $query = $request->get_parameter('q');
     $pageParams = array('query' => $query);
     if (!empty($query)) {
         $pageParams['searchByCommunity'] = !is_numeric($query);
     }
     /** 套餐信息 */
     $comboInfoList = Bll_Combo_Broker_BrokerComboInfo::getBrokerComboList($brokerId);
     //echo "<pre>";print_r($comboInfoList);exit;
     $currentCombo = array();
     $nextCombo = array();
     $currentDate = time();
     foreach ($comboInfoList as $comboInfo) {
         $startDate = strtotime($comboInfo['startTime']);
         $endDate = strtotime($comboInfo['endTime']);
         /** 获取当前使用的套餐 */
         if ($currentDate >= $startDate && $currentDate < $endDate && $comboInfo['salePropNum'] > 0) {
             $currentCombo = $comboInfo;
         }
         /** 获取续买套餐 */
         if ($comboInfo['salePropNum'] > 0 && $startDate > $currentDate) {
             if (!empty($nextCombo)) {
                 $nextComboEffectTime = strtotime($nextCombo['startTime']);
                 if ($nextComboEffectTime > $startDate) {
                     $nextCombo = $comboInfo;
                 }
             } else {
                 $nextCombo = $comboInfo;
             }
         }
     }
     $pageParams['currentCombo'] = $currentCombo;
     $pageParams['nextCombo'] = $nextCombo;
     $pageParams['comboCanSpreadHouseCount'] = 0;
     if (!empty($currentCombo)) {
         if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
             $hzSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
             $pageParams['comboCanSpreadHouseCount'] = max(0, $currentCombo['salePropNum'] + $currentCombo['rentPropNum'] - $hzSpreadHouseCount);
         } else {
             $pageParams['comboCanSpreadHouseCount'] = $currentCombo['salePropNum'];
         }
     }
     $pageParams['comboClick'] = Bll_Ppc_NewPackageStatsBrokerDay::getComboClickInfo($brokerId, date('Ymd'), Model_Ppc_NewPackageStatsBrokerDay::SITE_TYPE_AJK);
     $isChoiceCity = Bll_City::isChoiceCity($cityId, Const_Site::ANJUKE);
     $isBlockChoiceCity = Bll_City::isBlockChoice($cityId, Const_Site::ANJUKE);
     /** 精选城市 */
     if ($isChoiceCity) {
         $pageParams['bidTip'] = '精选';
     }
     $pageParams['isChoiceCity'] = $isChoiceCity;
     $pageParams['isBlockChoiceCity'] = $isBlockChoiceCity;
     $pageParams['isBidCity'] = false;
     $pageParams['isShowCaseCity'] = Bll_City::isShowCaseCity($cityId, Const_Site::ANJUKE);
     /** 获取竞价计划信息 */
     if ($isChoiceCity) {
         $bidPropIds = array();
         $pageParams['bidPlanList'] = static::getBrokerBidPlanList($brokerId, $cityId, $bidPropIds, true);
         $pageParams['bidPropIds'] = $bidPropIds;
         $pageParams['bidClickCount'] = Bll_Plan_Bid_AjkPlan::getBrokerBidClick($brokerId, date('Ymd'), $cityId);
         $pageParams['bidCost'] = Bll_Plan_Bid_AjkPlan::getBrokerBidCost($brokerId, date('Ymd'), $cityId);
     }
     /** 获取套餐推广信息 */
     $comboSpreadHouseList = static::getComboSpreadHouseList($brokerId, $cityId);
     $pageParams['comboSpreadHouseList'] = $comboSpreadHouseList;
     $pageParams['comboHouseIds'] = array_keys($comboSpreadHouseList);
     /** 速度优化:effectURL 没有在房源管理页使用,所以这个是可以删除的 */
     // if (!empty($comboSpreadHouseList)) {
     // TODO 获取效果时时看链接
     //    $pageParams['effectURL'] = Bll_Plan_Fix_AjkPlan::GetPlanFixedPriceDetailUri($pageParams['fixPlanPropList'][0]['planInfo']['id'], 0, 1);
     // }
     $houseInfoList = static::getBrokerAllPropInfoList($brokerId, $cityId, $pageParams['comboHouseIds'], $bidPropIds, $pageParams['isChoiceCity'], $query);
     //echo "<pre>";print_r($houseInfoList);exit;
     /** 房源质量信息 */
     //$pageParams['houseSolly'] = static::getHouseSollyResult($houseInfoList['houseIdList']);
     $pageParams['houseSolly'] = static::getHouseSollyResultEx($houseInfoList);
     $pageParams['comboHouseIds'] = array_values(array_intersect($pageParams['comboHouseIds'], array_keys($houseInfoList['comboSpreadHouseList'])));
     if ($isChoiceCity) {
         $houseBidInfoList = array();
         $houseBidStatus = array();
         foreach ($pageParams['bidPlanList'] as $bidInfo) {
             $houseBidInfoList[$bidInfo['propId']] = $bidInfo;
             $houseBidStatus[$bidInfo['propId']] = $bidInfo['status'];
             if ($bidInfo['model'] == Model_Plan_EsfAjkPropSpread::BLOCK_CHOICE) {
                 $pageParams['planInfoUrl'][$bidInfo['propId']]['urlChoice'] = "/ajkbroker/user/ajax/blockchoice";
             } else {
                 $pageParams['planInfoUrl'][$bidInfo['propId']]['urlChoice'] = "/ajkbroker/user/ajax/choice";
             }
         }
         $pageParams['houseBidStatus'] = $houseBidStatus;
         $houseInfoList['comboSpreadHouseList'] = static::extendChoiceInfo($houseInfoList['comboSpreadHouseList'], $houseBidInfoList, $cityId);
         if (Bll_City::isChoiceIndependentCity($cityId, Const_Site::ANJUKE)) {
             $houseInfoList['noSpreadHouseList'] = static::extendChoiceInfo($houseInfoList['noSpreadHouseList'], $houseBidInfoList, $cityId);
         }
         // print_r($houseInfoList['noSpreadHouseList']);
     }
     /** 精选引导优化 (精选城市 && 已经购买了套餐 && 推广房源数>0) */
     $choiceFunctionOptimizationGuide = false;
     /*
      if ($isChoiceCity && (!empty($currentCombo) || !empty($nextCombo)) && (count($comboSpreadHouseList) > 0)) {
          if (Bll_Broker_AjkBrokerGuideNew::getGuideStatus($brokerId, 'Choice_Function_Optimization') == 0) {
              $choiceFunctionOptimizationGuide = true;
          }
      }
     */
     $pageParams['choiceFunctionOptimizationGuide'] = $choiceFunctionOptimizationGuide;
     //echo "<pre>";print_r(array_keys($houseInfoList));exit;
     return array_merge($pageParams, $houseInfoList);
 }