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)); }
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'; } }