Пример #1
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $houseId = $this->_params['propId'];
     $budget = $this->_params['budget'];
     if ($budget < 20 || $budget > 50) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '请输入20~50之间的整数');
     }
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS);
     }
     $cityId = $brokerInfo->cityId;
     if (!Bll_City::isChoiceCity($cityId, Const_Site::HAOZU)) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => Const_APIStatus::E_NOT_CHOICE_CITY, 'message' => '非精选城市');
     }
     // 获取房源基本信息
     $propInfo = Model_House_HzProp::get_prop_info_by_prop_id($houseId);
     $block_id = $propInfo['contentBasic']['blockid'];
     // 获取点击单价
     try {
         $clickPriceInfo = Bll_Service_Choice::hzClickPrice(array('cityId' => $cityId, 'price' => (int) $propInfo['contentBasic']['pricenum'], 'blockId' => $block_id, 'brokerId' => $brokerId));
         if ($clickPriceInfo['status'] == 'error') {
             return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '系统繁忙(code:-33)');
         }
     } catch (Exception $e) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '系统繁忙(code:-33)');
     }
     $params = array();
     $params['price'] = $clickPriceInfo['realTradeAmount'] / 100;
     // 点击单价单位转换:分 -> 元;
     $params['show'] = 0;
     $params['budget'] = $budget;
     $params['ip'] = $this->_request->get_client_ip();
     // 判断是否是重新推广
     $bllChoice = new Bll_Zufang_Choice();
     $planInfo = $bllChoice->get_plan_by_proid($houseId);
     //planning表中查找精选计划
     if (!empty($planInfo)) {
         $planId = $planInfo->plan_id;
         $basicPlanInfo = $bllChoice->get_plan($planId);
         if (!empty($basicPlanInfo)) {
             if ($basicPlanInfo[0]->status == 1 || $basicPlanInfo[0]->status == 13) {
                 return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '该房源已做精选推广!');
             }
             if ($basicPlanInfo[0]->status != Const_HzPlan::DELETE) {
                 $params['plan_id'] = $planInfo->plan_id;
             }
         }
     }
     // 开始精选推广
     $result = Bll_Plan_Bid_Choice::hz_setting_post($brokerId, $cityId, $houseId, $params);
     if ($result['err_no'] != Bll_Plan_Bid_Choice::BID_WAIT_SUCCESS) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => $result['err_msg']);
     }
     if ($result['rank'] > 10) {
         $status = 2;
         $msg = "排在第{$result['rank']}位";
     } else {
         $status = 1;
         $msg = "精选推广成功";
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => $status, 'statusMsg' => $msg));
 }
Пример #2
0
 public function handle_request_internal()
 {
     /**
      * @var $request AJKRequest
      */
     $request = APF::get_instance()->get_request();
     $response = APF::get_instance()->get_response();
     $params = $this->getParameters();
     $route_matches = $request->get_router_matches();
     $brokerId = $request->getBrokerId();
     $cityId = $request->getBrokerCityId();
     $userId = $request->getUserId();
     $business = trim($route_matches[1]);
     $prop_id = $route_matches[2];
     if (empty($brokerId)) {
         $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query(array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '请登陆操作', 'from' => 'bid_set'))));
         return false;
     }
     $isChoiceCity = false;
     $isChoiceCityTwo = false;
     switch ($business) {
         case 'ajk':
             $isChoiceCity = Bll_City::isChoiceCity($cityId, Const_Site::ANJUKE);
             $isChoiceCityTwo = Bll_City::isBlockChoice($cityId, Const_Site::ANJUKE);
             break;
         case 'hz':
             $isChoiceCity = Bll_City::isChoiceCity($cityId, Const_Site::HAOZU);
             break;
         case 'jp':
             $isChoiceCity = Bll_City::isChoiceCity($cityId, Const_Site::JINPU);
             break;
     }
     if (!$isChoiceCity) {
         $response->redirect('/user/combo/brokerhome?from=not_choice_city');
         return false;
     }
     //验证choice城市
     $config = Model_Config_CommonCity::getConfig(Model_Config_CommonCity::CHOICENAME, $cityId);
     /** 判断精选计划开启时间是否到了 */
     //$request->set_attribute('choiceStarted', time()<$config['startTime']);
     $request->set_attribute('choiceStarted', !$this->getCityOpenTimeBegin($config['startTime']));
     //计算精选是否到开放时间
     $request->set_attribute('choiceStartTimeMsg', sprintf('%d点准时开放', date('H', $config['startTime'])));
     /*if(time()<$config['startTime']){
           $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query(array('err_no'=>Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg'=>'还未到精选房源开始时间。', 'from'=>'bid_set'))));
           return false;
       }*/
     if (empty($route_matches) || count($route_matches) < 3) {
         $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query(array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '请从精选房源管理页设置精选房源计划', 'from' => 'bid_set'))));
         return false;
     }
     if (!is_numeric($route_matches[2])) {
         $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query(array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '房源ID必须是数字', 'from' => 'bid_set'))));
         return false;
     }
     $params['ip'] = $request->get_client_ip();
     //        var_dump($business);exit;
     if ($request->is_post_method()) {
         switch ($business) {
             case 'ajk':
                 try {
                     $result = Bll_Plan_Bid_Choice::esf_setting_post($brokerId, $cityId, $prop_id, $userId, $params);
                     //创建精选
                 } catch (Exception $e) {
                     $result = array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '服务器繁忙,请重试');
                 }
                 break;
             case 'hz':
                 $result = Bll_Plan_Bid_Choice::hz_setting_post($brokerId, $cityId, $prop_id, $params);
                 break;
             case 'jp':
                 try {
                     $result = Bll_Plan_Bid_Choice::jp_setting_post($brokerId, $cityId, $prop_id, $params);
                 } catch (Exception $e) {
                     $result = array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '服务器繁忙,请重试');
                 }
                 break;
             default:
                 $result = http_build_query(array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '参数错误。', 'from' => 'bid_set'));
                 break;
         }
         $result = array_merge($result, array('act' => $business, 'propId' => $prop_id));
         $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query($result)));
         return false;
     }
     switch ($business) {
         case 'ajk':
             try {
                 $pageAttributes = Bll_Plan_Bid_Choice::esf_setting($brokerId, $cityId, $prop_id, $userId, $params);
             } catch (Exception $e) {
                 $pageAttributes = array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '服务器繁忙,请重试');
             }
             break;
         case 'hz':
             $pageAttributes = Bll_Plan_Bid_Choice::hz_setting($brokerId, $cityId, $prop_id, $params);
             break;
         case 'jp':
             try {
                 $pageAttributes = Bll_Plan_Bid_Choice::jp_setting($brokerId, $cityId, $prop_id, $params);
                 $pageAttributes['choice_open'] = $this->getCityOpenTimeBegin($config['startTime']);
             } catch (Exception $e) {
                 $pageAttributes = array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '服务器繁忙,请重试');
             }
             break;
         default:
             $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query(array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => '参数错误。', 'from' => 'bid_set'))));
             break;
     }
     if (isset($pageAttributes['err_no'])) {
         $result = array('err_no' => Bll_Plan_Bid_Choice::BID_FAIL_OTHER, 'err_msg' => $pageAttributes['err_msg'], 'from' => 'bid_set');
         $result = array_merge($result, array('act' => $business, 'propId' => $prop_id));
         $response->redirect(Util_Url::buildChoiceResultUrl(http_build_query($result)));
         return false;
     }
     $request->set_attribute('business', $business);
     $request->set_attribute('isChoiceCityTwo', $isChoiceCityTwo);
     $request->set_attribute('isChoiceCity', $isChoiceCity);
     $request->set_attribute('prop_id', $prop_id);
     $this->set_attributes($pageAttributes);
     /**
      * 2015 年关精选打折 预计时间2.1 ~ 3.5
      * TODO 2015.4.1 删除这部分代码
      */
     $isChoiceRebate = Bll_Onoff_Choice::getChoiceRebateByBroekrId($brokerId);
     $this->setAttribute('isChoiceRebate', $isChoiceRebate);
     switch ($business) {
         case 'jp':
             return 'Choice_SetJP';
             break;
         default:
             return 'Choice_Set';
     }
 }