Esempio n. 1
0
 /**
  * @param $brokerId
  * @param AJKRequest $request
  * @return bool
  */
 private function setBrokerLimitTemp($brokerId, $request)
 {
     // TODO 设置经纪人封顶信息
     $tempId = $request->get_parameter('tempId');
     $startTime = strtotime(date('Ymd 00:00:00', strtotime('+1 day')));
     return Bll_Ppc_ServiceAPI::setPpcBrokerLimitTemp($brokerId, $tempId, $startTime);
 }
Esempio n. 2
0
 /**
  * init env
  * @param AJKRequest $request
  * @param $out
  * @throws Exception
  */
 private static function initEnv($request, &$out)
 {
     $out['debug'] = isset($_GET['debug']) ? true : false;
     $out['cityId'] = $request->getBrokerCityId();
     $out['ajkBrokerId'] = $request->getBrokerId();
     $out['isComboBroker'] = Bll_Broker_HzBroker::isComboBroker($out['ajkBrokerId']);
     $route_matches = $request->get_router_matches();
     $out['proId'] = trim($route_matches[2], "/ \t\n\r\v");
     if (!$out['proId']) {
         throw new Exception('缺少房源Id参数');
     }
     $jpMemberInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($out['ajkBrokerId']);
     // 获取金铺brokerId
     $out['jpBrokerId'] = $jpMemberInfo->id;
     // 是否精选
     $out['isChoiceCity'] = Bll_City::isChoiceCity($out['cityId'], Const_Site::JINPU);
     $out['isBidCity'] = Bll_City::isBidCity($out['cityId'], Const_Site::JINPU);
     if ($out['isChoiceCity'] || $out['isBidCity']) {
         $out['bidTip'] = $out['isChoiceCity'] ? '精选' : '竞价';
         $out['bidUrl'] = $out['isChoiceCity'] ? '/ajkbroker/user/choice/set/jp/' . $out['proId'] : '/jinpu/bid/new/' . $out['proId'];
     }
     $multicity = APF::get_instance()->get_config("cities", "multicity");
     $out['cityName'] = $multicity[$out['cityId']];
     // 获取经纪人信息
     if (!($out['brokerInfo'] = Model_Broker_JpBroker::data_access()->filter('id', $jpMemberInfo->id)->get_row())) {
         throw new Exception('获取金铺经纪人信息失败:hzBrokerId [' . $out['hzBrokerId'] . ']');
     }
 }
Esempio n. 3
0
 public function handle_request_internal()
 {
     //$stime=microtime(true);
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     $result = array('status' => 0, 'data' => array(), 'errorMsg' => "");
     // 必须使用POST请求
     if (!$this->request->is_post_method()) {
         $result['errorMsg'] = "请使用POST请求。";
     }
     $houseId = $params['id'];
     $brokerName = self::$BrokerInfo['BaseInfo']['TRUENAME'];
     $brokerPhone = self::$BrokerInfo['BaseInfo']['USERMOBILE'];
     $cityId = self::$BrokerInfo['BaseInfo']['CITYID'];
     /*
     if($cityId == 11){
         APF::get_instance()->get_response()->redirect('/ajkbroker/commissions/mysale');
         return false;
     }
     */
     $isComboCity = Bll_Combo_HouseRelation::ifComboCity($cityId);
     $saleRushResult = Bll_Broker_EntrustQuery::getInstance()->saleRush($houseId, $brokerId, $brokerName, $brokerPhone, $cityId, Const_Entrust::RUSH_FROM_PC, true, $isComboCity);
     $result = array('status' => $saleRushResult['status'], 'data' => $saleRushResult['data'], 'errorMsg' => $saleRushResult['errorMsg']);
     echo json_encode($result);
     exit;
     /* $etime=microtime(true);//获取程序执行结束的时间
        $total=$etime-$stime;   //计算差值
        echo "<br />{$total} times";*/
 }
Esempio n. 4
0
 public function handle_request_internal()
 {
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $this->params = $this->request->get_parameters();
     $act = trim($this->params['act']);
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     $cityId = self::$BrokerInfo['BaseInfo']['CITYID'];
     /*
     if($cityId == 11){
         APF::get_instance()->get_response()->redirect('/ajkbroker/commissions/mysale');
         return false;
     }
     */
     switch ($act) {
         case 'checkConsume':
             $this->checkConsume($brokerId, $cityId);
             break;
         default:
             echo json_encode("非法请求");
             exit;
             break;
     }
 }
Esempio n. 5
0
 /**
  * init env
  * @param AJKRequest $request
  * @param array $out
  * @throws Exception
  */
 private static function initEnv($request, &$out)
 {
     $out['debug'] = isset($_GET['debug']) ? true : false;
     $out['cityId'] = $request->getBrokerCityId();
     $out['ajkBrokerId'] = $request->getBrokerId();
     $route_matches = $request->get_router_matches();
     $out['proId'] = trim($route_matches[2], "/ \t\n\r\v");
     if (!$out['proId']) {
         throw new Exception('缺少房源Id参数');
     }
     // 获取好租brokerId
     $out['hzBrokerId'] = Model_Broker_HzMapping::get_hz_broker_id($out['ajkBrokerId']);
     // 是否精选
     $out['isChoiceCity'] = Bll_City::isChoiceCity($out['cityId'], Const_Site::HAOZU);
     $out['isBidCity'] = false;
     // 获取经纪人信息
     if (!($out['brokerInfo'] = Model_Broker_HzUsersSearch::getUserInfoByUserId($out['hzBrokerId']))) {
         throw new Exception('获取好租经纪人信息失败:hzBrokerId [' . $out['hzBrokerId'] . ']');
     }
     // 身份是否通过
     $out['isPassVerify'] = Bll_Broker_HzBroker::isPassVerify($out['brokerInfo']['profileVerify']);
     // 获取套餐相关
     //$out['brokerLimitInfo'] = Bll_Broker_BrokerLimit::getPpcBrokerLimitInfo($out['ajkBrokerId'], Bll_Broker_BrokerLimit::PPC_BROKER_LIMIT_ZF_SITE);
     // 获取经纪人主推房源
     $out['mainSpreadProIds'] = array();
     $mainSpreads = Model_Broker_AdPropsShowRent::getInstance()->getBrokerAdPropInfo($out['ajkBrokerId']);
     if ($mainSpreads) {
         foreach ($mainSpreads as $v) {
             $out['mainSpreadProIds'][$v->propId] = $v->propId;
         }
     }
 }
Esempio n. 6
0
 /**
  * @param AJKRequest $request
  * @param array $out
  * @throws Exception
  */
 public static function initEnv($request, &$out)
 {
     $out['debug'] = isset($_GET['debug']) ? true : false;
     $out['cityId'] = $request->getBrokerCityId();
     $out['ajkBrokerId'] = $request->getBrokerId();
     $brokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerIdEx($out['ajkBrokerId']);
     if (empty($brokerInfo)) {
         throw new Exception('获取金铺经纪人信息失败:ajkBrokerId [' . $out['ajkBrokerId'] . ']');
     }
     $out['brokerInfo'] = $brokerInfo;
     // 获取金铺brokerId
     $out['jpBrokerId'] = $brokerInfo['id'];
     // 是否精选
     $out['isChoiceCity'] = Bll_City::isChoiceCity($out['cityId'], Const_Site::JINPU);
     $out['isBidCity'] = false;
     $out['isShowCaseCity'] = Bll_City::isShowCaseCity($out['cityId'], Const_Site::JINPU);
     $out['bidTip'] = '精选';
     //经纪人全部有效房源
     $out['houses'] = Bll_House_JpHouseInfo::getAllHouseInfoEx($out['ajkBrokerId']);
     $out['houseIds'] = array();
     foreach ($out['houses'] as $infoP) {
         $base = $infoP['base'];
         $info = $infoP['info'];
         $type = $infoP['houseType'];
         $propertyId = in_array($type, array(1, 2)) ? $info['buildingId'] : $info['propertyId'];
         $out['houseIds'][$type][$base['id']] = array('houseId' => $base['id'], 'propertyId' => $propertyId);
     }
     $out['publishUrl'] = Bll_Broker_Combo_ManageJp::buildHousePublishUrl();
 }
Esempio n. 7
0
 /**
  * 重新定价推广
  *
  * @param int $brokerId
  * @param  AJKRequest $request
  * @return array
  */
 public function startPlan($brokerId, $request)
 {
     $managerCookie = $request->get_cookie('manager_id');
     if (!empty($managerCookie)) {
         return array('status' => 'error', 'data' => '没有操作权限。');
     }
     $planId = $request->get_parameter('planId');
     if (Bll_Ppc_ServiceAPI::restartFixPlan($brokerId, $planId, 21181)) {
         return array('status' => 'ok');
     }
     return array('status' => 'error', 'data' => '调用API错误');
 }
Esempio n. 8
0
 public function handle_request_internal()
 {
     if (!Bll_City::isShowCaseCity(static::$intBrokerCityID)) {
         $this->outData(array(), 0);
         exit;
     }
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $this->params = $this->request->get_parameters();
     $this->brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     $this->userId = self::$BrokerInfo['BaseInfo']['USERID'];
     $this->getBrokerMoney();
 }
Esempio n. 9
0
 public function handle_request_internal()
 {
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     try {
         // 必须使用POST请求
         if (!$this->request->is_post_method()) {
             throw new Exception('请使用POST请求。');
         }
         // 判断委托ID
         $id = isset($params['id']) & intval($params['id']) > 0 ? intval($params['id']) : 0;
         if ($id <= 0) {
             throw new Exception('非法的委托编号。');
         }
         // 判断委托是否存在
         $commission = Model_House_Commission::data_access()->filter('id', $id)->find_only();
         if (!$commission) {
             throw new Exception('委托不存在。');
         }
         // 确认委托的经纪人和当前经纪人是同一人
         if ($commission->brokerId != $brokerId) {
             throw new Exception('非法的委托编号。');
         }
         // 删除委托
         $commission->isDelete = Model_House_Commission::DELETE_YES;
         $commission->deleteTime = date('Y-m-d H:i:s');
         $commission->save();
         // 如果是出售,记录到commission_sale_log日志表
         if (Model_House_CommissionHouse::COMMISSION_TYPE_SALE == $commission->type) {
             $this->insertCommissionSaleLog($commission);
         }
         // 返回结果
         $result = array('code' => 0, 'message' => 'Delete successfully.');
     } catch (Exception $e) {
         $result = array('code' => $e->getCode() ? $e->getCode() : 1, 'message' => $e->getMessage());
     }
     $this->response->add_header('Content-type', 'application/json');
     // $response->add_header(); // todo no cache
     echo json_encode($result);
     die;
 }
Esempio n. 10
0
 public function handle_request_internal()
 {
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     try {
         // 必须使用POST请求
         if (!$this->request->is_post_method()) {
             throw new Exception('请使用POST请求。');
         }
         // 判断委托ID
         $id = isset($params['id']) & intval($params['id']) > 0 ? intval($params['id']) : 0;
         if ($id <= 0) {
             throw new Exception('非法的委托编号。');
         }
         // 判断委托是否存在
         $commission = Model_House_Commission::data_access()->filter('id', $id)->find_only();
         if (!$commission) {
             throw new Exception('委托不存在。');
         }
         // 确认委托的经纪人和当前经纪人是同一人
         if ($commission->brokerId != $brokerId) {
             throw new Exception('非法的委托编号。');
         }
         // 获取委托房源信息
         $house = Model_House_CommissionHouse::data_access()->filter('id', $commission->houseId)->find_only();
         if (!$house) {
             throw new Exception('房源不存在');
         }
         // 返回结果
         $result = array('code' => 0, 'data' => array('phone' => $house->getPhone()));
     } catch (Exception $e) {
         $result = array('code' => $e->getCode() ? $e->getCode() : 1, 'message' => $e->getMessage());
     }
     $this->response->add_header('Content-type', 'application/json');
     // $response->add_header(); // todo no cache
     echo json_encode($result);
     die;
 }
Esempio n. 11
0
 protected function dispatchRequest()
 {
     if (!$this->isBrokerLogin()) {
         $this->outPut(0, '请先登入');
     }
     // 伪登陆操作限制
     $managerCookie = $this->request->get_cookie('manager_id');
     if (!empty($managerCookie) && $this->isLimitPseudo) {
         $this->outPut(0, '您没有操作权限');
     }
     if (!isset($this->params['act']) || empty($this->params['act'])) {
         $this->outPut(-1, '参数错误');
     }
     $action_method = 'do_' . $this->params['act'];
     if (!method_exists($this, $action_method)) {
         $this->outPut(-1, '功能不存在');
     }
     $this->checkInputValid($this->params['act']);
     return $this->{$action_method}();
 }
Esempio n. 12
0
 public function handle_request_internal()
 {
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $baseDomain = APF::get_instance()->get_config('base_domain', 'common');
     $baseUri = defined('BASE_URI') ? BASE_URI : '';
     $pageUrl = "http://my.{$baseDomain}{$baseUri}/commissions";
     /*
      * 1.参数获取
      */
     $params = $this->request->get_parameters();
     $type = isset($params['type']) && in_array($params['type'], array('rent', 'sale')) ? $params['type'] : '';
     // 房源类型:不限、出粗、出售
     // $room = (isset($params['room']) && in_array($params['room'], array('1', '2', '3', '4'))) ? $params['room'] : ''; // 房源房型:不限、一室、二室、三室、三室以上
     //$areaId = (isset($params['area']) && is_numeric($params['area'])) ? intval($params['area']) : 0; // 房源区域:主版块
     //$subAreaId = ($areaId && isset($params['subArea']) && is_numeric($params['subArea'])) ? intval($params['subArea']) : 0; // 房源区域:子版块
     $cityId = $this->request->getBrokerCityId();
     //如果是审核直接跳到我得房源库
     /*
     if($cityId == 11){
         APF::get_instance()->get_response()->redirect($pageUrl.'/mysale');
         return false;
     }
     */
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     $per = 10;
     $page = isset($params[Const_Listing::PARAM_N_PAGE]) && intval($params[Const_Listing::PARAM_N_PAGE]) > 0 ? intval($params[Const_Listing::PARAM_N_PAGE]) : 1;
     /*
      * 2.获取经纪人主营板块下的所有委托房源(按照创建时间排序)
      */
     $rushedHouses = array();
     $daHouse = Model_House_CommissionHouse::data_access()->filter('cityId', $cityId)->filter('proStatus', Model_House_CommissionHouse::STATUS_ONGOING)->filter_by_op('openBrokerCnt', '<', Model_House_CommissionHouse::allowedMaxCommissionCount());
     // 房源区域
     /*$areas = $this->getCityAreas($cityId);
             $subAreas = array();
             if ($areaId) {
                 $subAreas = $this->getSubAreas($areaId);
     
                 if ($subAreas) {
                     $subAreaIds = array();
                     $subAreaCodes = array();
                     foreach ($subAreas as $subArea) {
                         $subAreaIds[$subArea->typeId] = $subArea->typeId;
                         $subAreaCodes[$subArea->typeId] = $subArea->typeCode;
                     }
     
                     if ($subAreaId && isset($subAreaCodes[$subAreaId])) {
                         $daHouse->filter('areaCode', $subAreaCodes[$subAreaId]);
                     } else {
                         $daHouse->filter('areaCode', $subAreaCodes);
                     }
                 } else {
                     $daHouse->filter('areaCode', 0);
                 }
             }
             */
     // 房源类型
     if ($type) {
         switch ($type) {
             case 'rent':
                 $daHouse->filter('commissionType', Model_House_CommissionHouse::COMMISSION_TYPE_RENT);
                 break;
             case 'sale':
                 $daHouse->filter('commissionType', Model_House_CommissionHouse::COMMISSION_TYPE_SALE);
                 break;
         }
     }
     /*
     // 房源房型
     if ($room) {
         switch ($room) {
             case '1':
             case '2':
             case '3':
                 $daHouse->filter('roomNum', $room);
                 break;
             case '4':
                 $daHouse->filter_by_op('roomNum', '>=', $room);
                 break;
         }
     }
     */
     // 获取经纪人的区域id
     $brokerAreaCode = $this->getBrokerAreaCode(self::$BrokerInfo['BaseInfo']);
     if (!empty($brokerAreaCode)) {
         $daHouse->filter_by_op('areaCode', 'like', "{$brokerAreaCode}%");
     } else {
         $daHouse->filter('id', 0);
         // 没有区域id,则不显示数据
     }
     // 获取满足条件的总量
     $daTotal = clone $daHouse;
     $total = $daTotal->count();
     // 分页
     $pager = Util_MultiPage::multiPage($params, '', $total, $per, 10, $pageUrl);
     $this->request->set_attribute('page', $page);
     $this->request->set_attribute('pager', $pager);
     $this->request->set_attribute('showPager', $total > $per);
     // 当前页面的个人房源
     $houses = $daHouse->limit($per)->offset(($page - 1) * $per)->sort('created', 'desc')->find_all();
     //print_r($daHouse->get_last_sql());
     $overHouses = $this->getHasOverHouses($cityId);
     // 获取小区默认图片 和 区域板块名称
     $houseIds = array();
     $communityIds = array();
     $areaCodes = array();
     foreach ($houses as $house) {
         $houseIds[] = $house->id;
         $communityIds[] = $house->commId;
         $areaCodes[] = $house->areaCode;
     }
     // 判断已经抢完的数据是否存在
     if (!empty($overHouses)) {
         foreach ($overHouses as $house) {
             $houseIds[] = $house->id;
             $communityIds[] = $house->commId;
             $areaCodes[] = $house->areaCode;
         }
     }
     // 房东房源图片
     $propImageUrls = Bll_Image_UtilsImage::getCommissionProImage($houseIds);
     $this->request->set_attribute('propImageUrls', $propImageUrls);
     // 小区默认图片
     $communityImageUrls = $this->getCommunityImageUrls($communityIds);
     $this->request->set_attribute('communityImageUrls', $communityImageUrls);
     // 区域板块
     $areaCodesNames = $this->getAreaCodeNames($areaCodes);
     $this->request->set_attribute('areaCodeNames', $areaCodesNames);
     // 获取当前经纪人房源委托情况,如果已经委托,提示已委托
     if ($houseIds) {
         $rushedCommissions = Model_House_Commission::data_access()->filter('houseId', $houseIds)->filter('brokerId', $brokerId)->find_all();
         $rushedHouses = array();
         foreach ($rushedCommissions as $rushedCommission) {
             $rushedHouses[$rushedCommission->houseId] = $rushedCommission->id;
         }
     }
     $rechargeUrl = "http://my.{$baseDomain}/user/broker/hpsupplement";
     $isCombo = Bll_Combo_HouseRelation::ifComboCity(self::$BrokerInfo['BaseInfo']['CITYID']);
     if ($isCombo == ture) {
         // 获取经纪人套餐房源数
         $conbosProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($brokerId);
         $this->request->set_attribute('conbosProNum', $conbosProNum);
     }
     $this->request->set_attribute('isCombo', $isCombo);
     $this->request->set_attribute('type', $type);
     //$this->request->set_attribute('room', $room);
     //$this->request->set_attribute('area', $areaId);
     //$this->request->set_attribute('subArea', $subAreaId);
     //$this->request->set_attribute('areas', $areas);
     //$this->request->set_attribute('subAreas', $subAreas);
     $this->request->set_attribute('pageUrl', $pageUrl);
     $this->request->set_attribute('houses', $houses);
     $this->request->set_attribute('rushedHouses', $rushedHouses);
     $this->request->set_attribute('overHouses', $overHouses);
     $this->request->set_attribute('rechargeUrl', $rechargeUrl);
     return 'House_Commission_All';
 }
Esempio n. 13
0
 /**
  * 处理搜索
  * @param  AJKRequest $request
  * @param $out
  */
 private static function prepareSearch($request, &$out)
 {
     $out['query'] = trim($request->get_parameter('q'));
     $out['isSearch'] = empty($out['query']) ? false : true;
     $out['searchNoResult'] = true;
     // 拼接小区
     $out['communityList'] = array();
     if (count($out['props']) > 0) {
         foreach ($out['props'] as $prop) {
             if (!$prop['commid']) {
                 continue;
             }
             $out['communityList'][$prop['commid']] = trim($prop['commname']);
         }
     }
     if (!$out['query']) {
         return;
     }
     // 过滤竞价推广
     if (isset($out['bidList']) && count($out['bidList']) > 0) {
         foreach ($out['bidList'] as $k => $list) {
             if (!isset($list['planning']) || empty($list['planning'])) {
                 continue;
             }
             $prop = $list['prop'];
             $compareField = is_numeric($out['query']) ? $prop['proId'] : $prop['commName'];
             if ($out['query'] != trim($compareField)) {
                 unset($out['bidList'][$k]);
             }
         }
     }
     // 过滤套餐推广
     if (count($out['comboList']) > 0) {
         foreach ($out['comboList'] as $k => $combo) {
             if (!isset($out['props'][$combo['houseId']])) {
                 unset($out['comboList'][$k]);
                 continue;
             }
             $prop = $out['props'][$combo['houseId']];
             $compareField = is_numeric($out['query']) ? $prop['propId'] : $prop['commname'];
             if ($out['query'] != trim($compareField)) {
                 unset($out['comboList'][$k]);
             }
         }
     }
     // 过滤未推广
     if (count($out['outList']) > 0) {
         foreach ($out['outList'] as $k => $list) {
             $compareField = is_numeric($out['query']) ? $list['proId'] : $list['commname'];
             if ($out['query'] != trim($compareField)) {
                 unset($out['outList'][$k]);
             }
         }
     }
     $out['searchNoResult'] = count($out['bidList']) > 0 || count($out['comboList']) > 0 || count($out['outList']) > 0 ? false : true;
 }
Esempio n. 14
0
 public function handle_request_internal()
 {
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     $cityId = self::$BrokerInfo['BaseInfo']['CITYID'];
     try {
         // 必须使用POST请求
         if (!$this->request->is_post_method()) {
             throw new Exception('请使用POST请求。');
         }
         /*
         if($cityId == 11){
             APF::get_instance()->get_response()->redirect('/ajkbroker/commissions/my');
             return false;
         }
         */
         // 判断是否套餐城市
         $isComboCity = Bll_Combo_HouseRelation::ifComboCity($cityId);
         if ($isComboCity == true) {
             // 判断经纪人是否购买了租房套餐
             $conbosProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($brokerId);
             if ($conbosProNum['totalRentPropNum'] <= 0) {
                 $isPlan = 0;
                 throw new Exception('经纪人无租房套餐。');
             } else {
                 $isPlan = 1;
             }
         } else {
             $isPlan = 1;
         }
         // 判断房源ID
         $id = isset($params['id']) & intval($params['id']) > 0 ? intval($params['id']) : 0;
         if ($id <= 0) {
             throw new Exception('无效的房源编号。');
         }
         // 判断委托房源是否存在
         $house = Model_House_CommissionHouse::data_access()->filter('id', $id)->find_only();
         if (!$house) {
             throw new Exception('房源不可委托:房源不存在或已被业主删除。');
         }
         // 判断类型是否是出租
         if ($house->commissionType != Model_House_CommissionHouse::COMMISSION_TYPE_RENT) {
             throw new Exception('房源类型不是出租');
         }
         // 判断委托房源状态
         if ($house->proStatus != Model_House_CommissionHouse::STATUS_ONGOING) {
             throw new Exception('房源不可委托:已过期或已被删除。');
         }
         // 判断委托房源已委托数量
         if ($house->openBrokerCnt >= Model_House_CommissionHouse::allowedMaxCommissionCount()) {
             throw new Exception('委托已满。', 37);
         }
         // 判断是否已抢过委托
         $commission = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('houseId', $house->id)->find_only();
         if ($commission) {
             throw new Exception('你已经委托了该房源。', 77);
         }
         // 防并发(先插入,再检测(超出,删除),最后更新)
         // TODO 该方案层使用在2013圣诞活动“找锤子,砸金蛋”,并导致数据库多次TMC,但是在该业务场景中瞬时并发并没有那么多,暂定使用 by 胡言言 2014.02.28
         $commission = Model_House_Commission::create(array('type' => $house->commissionType, 'ownerId' => $house->userId, 'houseId' => $house->id, 'brokerId' => $brokerId, 'createTime' => date('Y-m-d H:i:s'), 'updateTime' => date('Y-m-d H:i:s')));
         $commission->save();
         $rank = Model_House_Commission::data_access()->filter_by_op('houseId', '=', $house->id)->filter_by_op('id', '<=', $commission->id)->sort('id', 'asc')->count();
         if ($rank > Model_House_CommissionHouse::allowedMaxCommissionCount()) {
             $commission->delete();
             throw new Exception('委托已满。', 37);
         }
         // 更新房源的委托数量
         $house->incrCommissionCount();
         // 更新推送房源状态
         $pushedHouse = Model_House_CommissionHousePushed::data_access()->filter('brokerId', $brokerId)->filter('propertyId', $house->id)->find_only();
         if ($pushedHouse) {
             $pushedHouse->propertyStatus = Model_House_CommissionHousePushed::STATUS_RUSHED;
             $pushedHouse->save();
         }
         // 拼装返回数据
         $result = array('isPlan' => $isPlan, 'code' => 0, 'data' => array('owner' => $house->userName, 'phone' => $house->getPhone(), 'title' => '', 'summary' => ''));
         $area = '[' . implode('-', $house->getAreaCodeNames()) . '] ';
         $houseModel = "{$house->roomNum}室{$house->hallNum}厅{$house->toiletNum}卫,{$house->areaNum}平方米,";
         switch ($house->commissionType) {
             case Model_House_CommissionHouse::COMMISSION_TYPE_SALE:
                 // 记录到commission_sale_log日志表
                 $this->insertCommissionSaleLog($house, $brokerId);
                 $result['data']['title'] = '[出售] ' . $house->commName;
                 $result['data']['summary'] = $area . $houseModel . $house->proPrice . '万元';
                 break;
             case Model_House_CommissionHouse::COMMISSION_TYPE_RENT:
                 $result['data']['title'] = '[出租] ' . $house->commName;
                 $result['data']['summary'] = $area . $houseModel . $house->proPrice . '元/月';
                 break;
         }
     } catch (Exception $e) {
         $result = array('code' => $e->getCode() ? $e->getCode() : 1, 'message' => $e->getMessage(), 'isPlan' => $isPlan);
     }
     $baseDomain = APF::get_instance()->get_config('base_domain', 'common');
     $baseUri = defined('BASE_URI') ? BASE_URI : '';
     $result['data']['manageUrl'] = "http://my.{$baseDomain}{$baseUri}/commissions/my";
     $this->response->add_header('Content-type', 'application/json');
     echo json_encode($result);
     die;
 }
Esempio n. 15
0
 public function handlePost()
 {
     $this->request = APF::get_instance()->get_request();
     $brokerId = $this->request->getBrokerId();
     $cityId = $this->request->getBrokerCityId();
     $params = $this->request->get_parameters();
     $params['broker_id'] = $brokerId;
     $result = array();
     try {
         if ($this->action == 'edit') {
             $houseInfo = Bll_House_EsfEdit::getHouseBaseInfo($this->houseId);
             /** 违规房源不可以编辑 */
             if (isset($houseInfo['isIllegal']) && $houseInfo['isIllegal']) {
                 $this->redirect2Result(Const_PublishCode::UNKNOWN_ERROR, 'ajk', 'edit', $this->houseId, '已违规房源不可编辑');
             }
             $result = Bll_House_EsfEdit::saveHouseInfo($brokerId, $cityId, $this->houseId, $params);
         }
         if ($this->action == 'publish') {
             $result = Bll_House_EsfPublish::saveHouseInfo($brokerId, $params, $this->isComboBroker);
             if ($result['status'] == 'ok') {
                 $this->houseId = $result['houseId'];
             }
         }
         /** 委托房源发布 */
         if ($this->action == 'commission') {
             $result = Bll_House_EsfCommission::saveHouseInfo($brokerId, $cityId, $this->commissionId, $params, $this->isComboBroker);
             if ($result['status'] == 'ok') {
                 $this->houseId = $result['houseId'];
             }
         }
         if ($result['status'] != 'ok') {
             $this->redirect2Result(Const_PublishCode::PUBLISH_PROP_ERROR, 'ajk', $this->action, $this->houseId, $result['info']);
         }
     } catch (Exception $e) {
         $params['brokerId'] = self::$intBrokerID;
         APF::get_instance()->get_nlogger()->log(__CLASS__, $params);
         $this->redirect2Result(Const_PublishCode::PUBLISH_PROP_ERROR, 'ajk', $this->action, $this->houseId, $e->getMessage());
     }
     /** 立即推广 */
     if (isset($params['broker_action']) && $params['broker_action'] == 'publish') {
         /** 套餐推广 */
         if ($this->isComboBroker) {
             $spreadResult = Bll_Combo_HouseRelation::houseStartComboSpreadV2($brokerId, $cityId, array($this->houseId), Bll_Combo_HouseRelation::SITE_TYPE_AJK);
             if ($spreadResult['status'] != 1) {
                 switch ($spreadResult['status']) {
                     /** 没有套餐 */
                     case -1:
                     case -2:
                         $this->redirect2Result(Const_PublishCode::SPREAD_PROP_NO_COMBO, 'ajk', $this->action, $this->houseId, $spreadResult['msg']);
                         break;
                         /** 套餐未生效 */
                     /** 套餐未生效 */
                     case -3:
                         $this->redirect2Result(Const_PublishCode::SPREAD_PROP_COMBO_ACTIVE, 'ajk', $this->action, $this->houseId, $spreadResult['msg']);
                         break;
                         /** 推广房源数已满 */
                     /** 推广房源数已满 */
                     case -4:
                     case -5:
                         $this->redirect2Result(Const_PublishCode::SPREAD_PROP_COMBO_LIMIT, 'ajk', $this->action, $this->houseId, $spreadResult['msg']);
                         break;
                     default:
                         $this->redirect2Result(Const_PublishCode::SPREAD_PROP_COMBO_FAIL, 'ajk', $this->action, $this->houseId, $spreadResult['msg']);
                 }
             }
         } else {
             /** 定价推广 */
             if ($this->action == 'edit') {
                 /** 定价推广失败 房源已经推广 */
                 if (BLL_Plan_EsfPropFixedPlanRelation::isHouseOnline($cityId, $this->houseId)) {
                     $this->redirect2Result(Const_PublishCode::SPREAD_PROP_PLAN_IN, 'ajk', $this->action, $this->houseId, '房源已经推广');
                 }
             }
             $fixPlanList = BLL_Plan_EsfPropFixedPlanRelation::getBrokerValidPlan($brokerId);
             if (empty($fixPlanList)) {
                 $this->redirect2Result(Const_PublishCode::UNKNOWN_ERROR, 'ajk', $this->action, $this->houseId, '获取定价计划信息失败');
             }
             $fixPlan = $fixPlanList[0];
             /** 定价推广失败 已经超出推广房源上限 */
             if (!Bll_Broker_HzBroker::ajkPpcBrokerCanSpreadHouse($cityId, $brokerId)) {
                 $this->redirect2Result(Const_PublishCode::SPREAD_PROP_OUT_LIMIT, 'ajk', $this->action, $this->houseId, '已经超出推广房源上限');
             }
             $spreadResult = Bll_Ppc_ServiceAPI::fixPlanAddHouse($brokerId, $this->houseId, $fixPlan['id'], '23532');
             if (isset($spreadResult['status'])) {
                 if ($spreadResult['status'] != 'ok') {
                     $this->redirect2Result(Const_PublishCode::API_ERROR, 'ajk', $this->action, $this->houseId, $spreadResult['info']);
                 }
             } else {
                 $this->redirect2Result(Const_PublishCode::API_ERROR, 'ajk', $this->action, $this->houseId, '系统繁忙(推广房源超时)');
             }
             /** 定价推广失败 计划已经手动停止 */
             if ($fixPlan['viewTime'] == 1861891200) {
                 /** 定价推广失败 认证未通过 */
                 $brokerCheckState = Bll_Broker_BrokerCheckInfo::getCheckStateByBrokerId($brokerId);
                 if ($brokerCheckState != 1) {
                     $this->redirect2Result(Const_PublishCode::SPREAD_PROP_AUDITED_ERROR, 'ajk', $this->action, $this->houseId, '认证未通过');
                 }
                 $this->redirect2Result(Const_PublishCode::SPREAD_PROP_HANDLE_STOP, 'ajk', $this->action, $this->houseId, '计划已经手动停止');
             }
             /** 定价推广失败 账户余额不足,充值后自动推广 */
             if ($fixPlan['viewTime'] == 1893427200) {
                 $this->redirect2Result(Const_PublishCode::SPREAD_PROP_BALANCE_ERROR, 'ajk', $this->action, $this->houseId, '账户余额不足,充值后自动推广');
             }
         }
         /** 推广成功 */
         $this->redirect2Result(Const_PublishCode::HOUSE_SPREAD_SUCCESS, 'ajk', $this->action, $this->houseId);
     }
     /** 发布成功 */
     $this->redirect2Result(Const_PublishCode::HOUSE_SAVE_SUCCESS, 'ajk', $this->action, $this->houseId);
 }
Esempio n. 16
0
 /**
  * @param House_PropviewController $controller
  * @param AJKRequest $request
  * @param AJKResponse $response
  *
  * @return array
  */
 public static function handlerPropViewRequest($controller, $request, $response)
 {
     $routeMatches = $request->get_router_matches();
     $houseId = $routeMatches[2];
     $cityId = $request->getBrokerCityId();
     $brokerId = $request->getBrokerId();
     $pageParams = array('houseId' => $houseId);
     $houseInfo = Bll_House_EsfHouse::getHouseBaseInfoEx($houseId, $cityId);
     /** 不是当前经纪人的房源则返回到房源管理页去 */
     if (empty($houseInfo) || $houseInfo['brokerId'] != $brokerId) {
         $response->redirect('/ajkbroker/user/manage/proplist/ajk/');
     }
     $pageParams['title'] = $houseInfo['proName'];
     $houseInfo['mobile'] = $houseInfo['uriCode'] == 'mobile.asyn' || $houseInfo['uriCode'] == 'mobile-ajk-broker.asyn' ? 1 : 0;
     $pageParams['info'] = sprintf('%s %d平米,%d室%d厅%d卫,%d/%d层,%.2f万 (房源ID:%d)', $houseInfo['commName'], $houseInfo['areaNum'], $houseInfo['roomNum'], $houseInfo['hallNum'], $houseInfo['toiletNum'], $houseInfo['proFloor'], $houseInfo['floorNum'], $houseInfo['proPrice'], $houseId);
     $currentDate = strtotime(date('Y-m-d 00:00:00'));
     $postDate = strtotime(date('Y-m-d 00:00:00', $houseInfo['postDate']));
     $pageParams['leftDay'] = max(0, 90 - floor(($currentDate - $postDate) / 86400));
     $pageParams['houseInfo'] = $houseInfo;
     $pageParams['viewLink'] = Util_Url::ajkHouseDetailUrl($houseId, $cityId);
     $pageParams['editURL'] = Bll_Ppc_LinkManager::getSaleEditUrl($houseId);
     $houseAdShow = Model_House_AdPropShowSale::getHouseAdSale($brokerId, $houseInfo['proId']);
     $pageParams['AdShow'] = empty($houseAdShow) ? false : true;
     $pageParams['isIllegal'] = $houseInfo['isVisible'] == 0 && $houseInfo['expireWorker'] != 'propertyReport';
     // TODO 获取小区在线房源和排名 需要重构
     $pageParams['communitySaleCount'] = Model_Community_AjkSaleRentCount::getCommunitySaleNum($houseInfo['commId']);
     $isBidCity = Bll_City::isBidCity($cityId);
     if ($isBidCity) {
         $pageParams['bidTip'] = '竞价';
     }
     $isChoiceCity = Bll_City::isChoiceCity($cityId);
     /** 精选城市 */
     if ($isChoiceCity) {
         $pageParams['bidTip'] = '精选';
     }
     $pageParams['isChoiceCity'] = $isChoiceCity;
     $pageParams['isBidCity'] = $isBidCity;
     $houseRank = Bll_Broker_Manage_AjkPropList::getHouseSollyResult(array($houseId));
     if (isset($houseRank[$houseId])) {
         $pageParams['houseRank'] = $houseRank[$houseId];
     } else {
         $pageParams['houseRank'] = '待评';
     }
     $houseSpreadDate = array();
     for ($interval = -6; $interval <= 0; $interval++) {
         $houseSpreadDate[] = date('m.d', strtotime("{$interval} day"));
     }
     $pageParams['houseSpreadDate'] = $houseSpreadDate;
     $fixPlanId = Bll_Plan_Fix_AjkPlan::getPlanIdByHouseId($brokerId, $houseId, $cityId);
     $startDate = date('Ymd', strtotime('-6 day'));
     $endDate = date('Ymd');
     $houseFixDailyCostList = array();
     for ($i = -6; $i <= 0; $i++) {
         $date = date('m.d', strtotime("{$i} day"));
         $houseFixDailyCostList[$date] = 0;
     }
     /** 获取房源指定日期内每天的定价点击 */
     if (Bll_Broker_HzBroker::isComboBroker($brokerId)) {
         $pageParams['houseFixSpreadClickInfoList'] = static::getHouseComboSpreadClickInfo($houseId);
     } else {
         $pageParams['houseFixSpreadClickInfoList'] = static::getHouseFixSpreadClickInfoEx($brokerId, $houseId);
         /** 获取房源指定日期内每天的定价花费 */
         $pageParams['houseFixDailyCostList'] = array_merge($houseFixDailyCostList, static::getHouseFixDailyCost($brokerId, $fixPlanId, $houseId, $startDate, $endDate));
     }
     if ($isChoiceCity || $isBidCity) {
         $houseBidSpreadInfo = static::getHouseBidSpreadInfo($houseId, $cityId);
         $pageParams['houseBidSpreadInfo'] = $houseBidSpreadInfo;
     }
     // $pageParams['houseDetail'] = Bll_Ppc_ServiceAPI::getHouseInfo($houseId);
     $houseImageInfo = Bll_Ppc_ServiceAPI::getHouseImageInfo($houseId);
     $pageParams['optimize'] = static::getHouseOptimizeInfo($houseId, $houseImageInfo, $houseInfo, $cityId);
     $pageParams['imageCount'] = count($houseImageInfo['imageBaseInfo']);
     if (count($houseImageInfo['imageBaseInfo']) <= 0) {
         $pageParams['houseDefaultImage'] = 'http://pages.anjukestatic.com/img/global/nopic_150x113.gif';
     } else {
         $pageParams['houseDefaultImage'] = static::getThumbImageUrl($houseId, $houseImageInfo['imageBaseInfo']);
     }
     $pageParams['houseStatisticsInfo'] = static::getHouseStatisticsInfo($houseId, $cityId, $houseInfo['commId'], $houseInfo['proPriceInt']);
     //市场分析,小区价格段供需比。获取前天的数据
     $pageParams['demandSupplyPriceInfo'] = static::getDemandSupplyByPriceInfo($houseInfo['commId']);
     //市场分析,小区户型供需比。获取前天数据
     $pageParams['demandSupplyRoomInfo'] = static::getCommTotalRoomInfo($houseInfo['commId']);
     $pageParams['subRegionRank'] = static::getCommunityRank($houseInfo['areaCode'], $houseInfo['commId']);
     return $pageParams;
 }
Esempio n. 17
0
 public function handle_request_internal()
 {
     $type = "rent";
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $baseDomain = APF::get_instance()->get_config('base_domain', 'common');
     $baseUri = defined('BASE_URI') ? BASE_URI : '';
     $pageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/my";
     $commissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions";
     $myCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/mysale";
     $myRentCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/my";
     // *** *** *** *** *** *** ***
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     $per = 5;
     $page = isset($params[Const_Listing::PARAM_N_PAGE]) && intval($params[Const_Listing::PARAM_N_PAGE]) > 0 ? intval($params[Const_Listing::PARAM_N_PAGE]) : 1;
     $cityId = $this->request->getBrokerCityId();
     if ($cityId == 11) {
         $this->request->set_attribute('propCheck', 0);
     } else {
         $this->request->set_attribute('propCheck', 1);
     }
     // 获取经纪人的所有委托
     $daCommissions = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('type', 2)->filter('isDelete', Model_House_Commission::DELETE_NO);
     $daTotal = clone $daCommissions;
     $commissions = $daCommissions->limit($per)->offset(($page - 1) * $per)->sort('id', 'desc')->find_all();
     // 获取委托关联的房源
     if (!empty($commissions)) {
         $houseIds = array();
         foreach ($commissions as $commission) {
             $houseIds[] = $commission->houseId;
         }
         $houses = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->sort('id', 'asc')->find_all();
         $this->request->set_attribute('houses', $houses);
         // 获取小区默认图片 和 区域板块名称
         $communityIds = array();
         $areaCodes = array();
         foreach ($houses as $house) {
             $communityIds[] = $house->commId;
             $areaCodes[] = $house->areaCode;
         }
         // 房东房源图片
         $propImageUrls = Bll_Image_UtilsImage::getCommissionProImage($houseIds);
         $this->request->set_attribute('propImageUrls', $propImageUrls);
         // 小区默认图片
         $communityImageUrls = $this->getCommunityImageUrls($communityIds);
         $this->request->set_attribute('communityImageUrls', $communityImageUrls);
         // 区域板块
         $areaCodesNames = $this->getAreaCodeNames($areaCodes);
         $this->request->set_attribute('areaCodeNames', $areaCodesNames);
         // 分页
         $total = $daTotal->count();
         $pager = Util_MultiPage::multiPage($params, '', $total, $per, 5, $pageUrl);
         $this->request->set_attribute('page', $page);
         $this->request->set_attribute('pager', $pager);
         $this->request->set_attribute('showPager', $total > $per);
     }
     $this->request->set_attribute('commissions', $commissions);
     $this->request->set_attribute('commissionsPageUrl', $commissionsPageUrl);
     $this->request->set_attribute('myCommissionsPageUrl', $myCommissionsPageUrl);
     $this->request->set_attribute('type', $type);
     $this->request->set_attribute('myRentCommissionsPageUrl', $myRentCommissionsPageUrl);
     return 'House_Commission_My';
 }
Esempio n. 18
0
 /**
  * @param Manage_ProplistController $controller
  * @param AJKRequest $request
  * @param AJKResponse $response
  *
  * @return array
  */
 public static function getBrokerSpreadInfo($controller, $request, $response)
 {
     $cityId = $request->getBrokerCityId();
     $brokerId = $request->getBrokerId();
     $query = trim($request->get_parameter('q'));
     $pageParams = array('query' => $query);
     if (!empty($query)) {
         $pageParams['searchByCommunity'] = !is_numeric($query);
     }
     $bidPropIds = array();
     $fixPropIds = array();
     /**
      * 速度优化阶段一
      * $brokerCheckState = Bll_Broker_BrokerCheckInfo::getCheckStateByBrokerId($brokerId);
      */
     $brokerCheckState = $controller->getBrokerCheckState();
     $isChoiceCity = Bll_City::isChoiceCity($cityId);
     /** 精选城市 */
     if ($isChoiceCity) {
         $pageParams['bidTip'] = '精选';
     }
     $pageParams['isChoiceCity'] = $isChoiceCity;
     $pageParams['isBidCity'] = false;
     $pageParams['isShowCaseCity'] = Bll_City::isShowCaseCity($cityId, Const_Site::ANJUKE);
     if ($isChoiceCity) {
         /** 获取竞价计划信息 */
         $pageParams['bidPlanList'] = static::getBrokerBidPlanList($brokerId, $cityId, $bidPropIds, $isChoiceCity);
         $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);
     }
     /** 获取定价计划信息 */
     $pageParams['fixPlanPropList'] = static::getBrokerFixPlanList($brokerId, $cityId, $fixPropIds, $brokerCheckState);
     $pageParams['fixPropIds'] = $fixPropIds;
     if (!empty($pageParams['fixPlanPropList'])) {
         $pageParams['effectURL'] = Bll_Plan_Fix_AjkPlan::GetPlanFixedPriceDetailUri($pageParams['fixPlanPropList'][0]['planInfo']['id'], 0, 1);
     }
     $houseInfoList = static::getBrokerAllPropInfoList($brokerId, $cityId, $fixPropIds, $bidPropIds, $pageParams['isChoiceCity'], $query);
     /** 房源数量 > 0 没有计划就创建计划 创建失败的话应该是API 错误 */
     if (!empty($houseInfoList) && empty($pageParams['fixPlanPropList'])) {
         Bll_Ppc_ServiceAPI::createFixPlan($brokerId, '定价', 100000, 1, 21181);
     }
     $ppcLimitInfo = Bll_Ppc_ServiceAPI::getPpcBrokerLimitInfo($brokerId);
     if (empty($ppcLimitInfo)) {
         echo '<script type="text/javascript"> alert("服务器繁忙,请重试!"); </script>';
         exit;
     }
     $pageParams['ppcLimitInfo'] = $ppcLimitInfo;
     /** 房源质量信息 */
     $pageParams['houseSolly'] = static::getHouseSollyResult($houseInfoList['houseIdList']);
     $pageParams['selectLimitTempAvailable'] = static::checkSelectLimitTempAvailable($cityId);
     $pageParams['fixPropIds'] = array_values(array_intersect($fixPropIds, array_keys($houseInfoList['fixSpreadHouseList'])));
     //$pageParams['bidPropIds'] = array_values(array_intersect($bidPropIds, $pageParams['fixPropIds']));
     if ($isChoiceCity) {
         $houseBidInfoList = array();
         $houseBidStatus = array();
         foreach ($pageParams['bidPlanList'] as $bidInfo) {
             $houseBidInfoList[$bidInfo['propId']] = $bidInfo;
             $houseBidStatus[$bidInfo['propId']] = $bidInfo['status'];
         }
         $pageParams['houseBidStatus'] = $houseBidStatus;
         $houseInfoList['fixSpreadHouseList'] = static::extendChoiceInfo($houseInfoList['fixSpreadHouseList'], $houseBidInfoList, $cityId);
     }
     /** 精选引导优化 */
     $choiceFunctionOptimizationGuide = false;
     /*
     if ($isChoiceCity && count($houseInfoList['fixSpreadHouseList']) > 0) {
         if (Bll_Broker_AjkBrokerGuideNew::getGuideStatus($brokerId, 'Choice_Function_Optimization') == 0) {
             $choiceFunctionOptimizationGuide = true;
         }
     }
     */
     $pageParams['choiceFunctionOptimizationGuide'] = $choiceFunctionOptimizationGuide;
     return array_merge($pageParams, $houseInfoList);
 }
Esempio n. 19
0
 /**
  * @param User_Statistics_BrokerStatisticsController $controller
  * @param AJKRequest $request
  * @param AJKResponse $response
  *
  * @return array
  */
 public static function getBrokerStatistics($controller, $request, $response)
 {
     $brokerId = $request->getBrokerId();
     $cityId = $request->getBrokerCityId();
     $params = $request->get_parameters();
     $pageParams = static::setSearchDay($params);
     $isChoiceCity = Bll_City::isChoiceCity($cityId);
     $isBidCity = Bll_City::isChoiceCity($cityId);
     $isShowCaseCity = Bll_City::isShowCaseCity($cityId);
     $pageParams['isChoiceCity'] = $isChoiceCity;
     $pageParams['isBidCity'] = $isBidCity;
     $pageParams['isShowCaseCity'] = $isShowCaseCity;
     $startDate = date('Ymd', $pageParams['beginDateUnix']);
     $endDate = date('Ymd', $pageParams['endDateUnix']);
     if ($startDate > $endDate) {
         return $pageParams;
     }
     /** 非精选城市 */
     if ($isBidCity) {
         $pageParams['bidMessage'] = '竞价';
     }
     if ($isChoiceCity) {
         $pageParams['bidMessage'] = '精选';
     }
     $tempBrokerStatisticsInfoList = Model_Broker_AjkComboBrokerDay::getBrokerStatistics($brokerId, $startDate, $endDate);
     if (empty($tempBrokerStatisticsInfoList)) {
         return $pageParams;
     }
     $total = array('TotalPropNum' => 0, 'TotalClickNum' => 0, 'TotalAmount' => 0, 'saleProp' => 0, 'saleGoodProp' => 0, 'saleNewProp' => 0, 'saleNewGoodProp' => 0, 'saleVppv' => 0, 'saleBidProp' => 0, 'saleBidGoodProp' => 0, 'saleBidNewProp' => 0, 'saleBidNewGoodProp' => 0, 'saleBidCost' => 0, 'saleBidVppv' => 0);
     $dateList = static::getDateList($pageParams['beginDateUnix'], $pageParams['endDateUnix']);
     if ($isShowCaseCity) {
         $adPriceInfo = static::getBrokerPriceInfo($brokerId, $startDate, $endDate);
         $adClickInfo = static::getBrokerAdClickInfo($brokerId, $startDate, $endDate);
     }
     $brokerStatisticsInfoList = array();
     foreach ($dateList as $key => $date) {
         $brokerStatisticsInfoList[$key] = array('_DayDate' => $date);
     }
     foreach ($tempBrokerStatisticsInfoList as $brokerStatisticsInfo) {
         $date = $brokerStatisticsInfo['dayDate'];
         $brokerStatisticsInfo['_DayDate'] = $dateList[$date];
         $brokerStatisticsInfo['TotalPropNum'] = $brokerStatisticsInfo['saleProp'];
         $brokerStatisticsInfo['TotalClickNum'] = $brokerStatisticsInfo['saleVppv'];
         $brokerStatisticsInfo['TotalAmount'] = $brokerStatisticsInfo['saleBidCost'];
         if ($isBidCity || $isChoiceCity) {
             $brokerStatisticsInfo['TotalPropNum'] += $brokerStatisticsInfo['saleBidProp'];
             $brokerStatisticsInfo['TotalClickNum'] += $brokerStatisticsInfo['saleBidVppv'];
         }
         /**
          * 总计
          */
         $total['TotalPropNum'] += $brokerStatisticsInfo['TotalPropNum'];
         $total['TotalClickNum'] += $brokerStatisticsInfo['TotalClickNum'];
         $total['TotalAmount'] += $brokerStatisticsInfo['TotalAmount'];
         $total['saleProp'] += $brokerStatisticsInfo['saleProp'];
         $total['saleGoodProp'] += $brokerStatisticsInfo['saleGoodProp'];
         $total['saleNewProp'] += $brokerStatisticsInfo['saleNewProp'];
         $total['saleNewGoodProp'] += $brokerStatisticsInfo['saleNewGoodProp'];
         $total['saleVppv'] += $brokerStatisticsInfo['saleVppv'];
         if ($isBidCity || $isChoiceCity) {
             $total['saleBidProp'] += $brokerStatisticsInfo['saleBidProp'];
             $total['saleBidVppv'] += $brokerStatisticsInfo['saleBidVppv'];
             $total['saleBidCost'] += $brokerStatisticsInfo['saleBidCost'];
             $total['saleBidNewProp'] += $brokerStatisticsInfo['saleBidNewProp'];
             $total['saleBidGoodProp'] += $brokerStatisticsInfo['saleBidGoodProp'];
             $total['saleBidNewGoodProp'] += $brokerStatisticsInfo['saleBidNewGoodProp'];
         }
         /**
          * 橱窗
          */
         if ($isShowCaseCity) {
             $brokerStatisticsInfo['props_sum'] = $adPriceInfo[$date]['propsSum'];
             $brokerStatisticsInfo['quantity_count'] = $adClickInfo[$date]['quantity_count'];
             $brokerStatisticsInfo['price'] = $adPriceInfo[$date]['price'];
             $total['props_sum'] += $adPriceInfo[$date]['propsSum'];
             $total['quantity_count'] += $adClickInfo[$date]['quantity_count'];
             $total['price'] += $adPriceInfo[$date]['price'];
         }
         $brokerStatisticsInfoList[$date] = $brokerStatisticsInfo;
     }
     $BrokerWorkLogInfo = array('data' => array_reverse($brokerStatisticsInfoList), 'total' => $total);
     $pageParams['BrokerWorkLogInfo'] = $BrokerWorkLogInfo;
     return $pageParams;
 }
Esempio n. 20
0
 public function handle_request_internal()
 {
     $type = "sale";
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $baseDomain = APF::get_instance()->get_config('base_domain', 'common');
     $baseUri = defined('BASE_URI') ? BASE_URI : '';
     $baseUrl = "http://my.{$baseDomain}";
     $commissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions";
     $myCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/mysale";
     $myRentCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/my";
     $cityId = $this->request->getBrokerCityId();
     if ($cityId == 11) {
         $this->request->set_attribute('propCheck', 0);
     } else {
         $this->request->set_attribute('propCheck', 1);
     }
     $params = $this->request->get_parameters();
     $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
     // TODO 替换为其他的方式
     $per = 10;
     $page = isset($params[Const_Listing::PARAM_N_PAGE]) && intval($params[Const_Listing::PARAM_N_PAGE]) > 0 ? intval($params[Const_Listing::PARAM_N_PAGE]) : 1;
     // 获取经纪人的委托
     $daCommissions = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('type', 1)->filter('isDelete', Model_House_Commission::DELETE_NO);
     $daTotal = clone $daCommissions;
     $commissions = $daCommissions->limit($per)->offset(($page - 1) * $per)->sort('id', 'desc')->find_all();
     // 获取委托关联的房源
     if (!empty($commissions)) {
         $houseIds = array();
         $brokerHouseIds = array();
         foreach ($commissions as $commission) {
             $houseIds[] = $commission->houseId;
             if (!empty($commission->brokerHouseId)) {
                 $brokerHouseIds[] = $commission->brokerHouseId;
             }
         }
         $houses = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->sort('id', 'asc')->find_all();
         $this->request->set_attribute('houses', $houses);
         // 获取小区默认图片 和 区域板块名称
         $communityIds = array();
         $areaCodes = array();
         foreach ($houses as $house) {
             $communityIds[] = $house->commId;
             $areaCodes[] = $house->areaCode;
         }
         // 房东房源图片
         $propImageUrls = Bll_Image_UtilsImage::getCommissionProImage($houseIds);
         $this->request->set_attribute('propImageUrls', $propImageUrls);
         // 小区默认图片
         $communityImageUrls = $this->getCommunityImageUrls($communityIds);
         $this->request->set_attribute('communityImageUrls', $communityImageUrls);
         // 区域板块
         $areaCodesNames = $this->getAreaCodeNames($areaCodes);
         $this->request->set_attribute('areaCodeNames', $areaCodesNames);
         // 是否推广数据
         $staticPro = Bll_House_EsfHouse::getHouseOnLineInfo(self::$BrokerInfo['BaseInfo']['CITYID'], $brokerId, $brokerHouseIds);
         if (!empty($brokerHouseIds)) {
             $publishedProInfo = Bll_House_EsfHouse::getHouseInfo($brokerHouseIds, self::$BrokerInfo['BaseInfo']['CITYID']);
         }
         // 分页
         $total = $daTotal->count();
         $pager = Util_MultiPage::multiPage($params, '', $total, $per, 10, $myCommissionsPageUrl);
         $this->request->set_attribute('page', $page);
         $this->request->set_attribute('pager', $pager);
         $this->request->set_attribute('showPager', $total > $per);
     }
     $proSpreadUrl1 = "http://my." . $baseDomain . "/user/ajax/ppclimit";
     $proSpreadUrl2 = "http://my." . $baseDomain . "/user/ajax/sale/staticplan/";
     // 立即推广地址
     $isCombo = Bll_Combo_HouseRelation::ifComboCity(self::$BrokerInfo['BaseInfo']['CITYID']);
     if ($isCombo == true) {
         $tgUrl = $baseUrl . "/ajkbroker/combo/broker/manage/ajk";
     } else {
         $tgUrl = $baseUrl . "/user/broker/sale/homepage";
     }
     $this->request->set_attribute('commissions', $commissions);
     $this->request->set_attribute('commissionsPageUrl', $commissionsPageUrl);
     $this->request->set_attribute('myCommissionsPageUrl', $myCommissionsPageUrl);
     $this->request->set_attribute('type', $type);
     $this->request->set_attribute('staticPro', $staticPro);
     $this->request->set_attribute('publishedProInfo', $publishedProInfo);
     $this->request->set_attribute('myRentCommissionsPageUrl', $myRentCommissionsPageUrl);
     $this->request->set_attribute('proSpreadUrl1', $proSpreadUrl1);
     $this->request->set_attribute('proSpreadUrl2', $proSpreadUrl2);
     $this->request->set_attribute('baseUrl', $baseUrl);
     $this->request->set_attribute('tgUrl', $tgUrl);
     return 'House_Commission_MySale';
 }
Esempio n. 21
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);
 }