public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $propId = $this->_params['propId']; // 获取Broker Mapping $brokerMapping = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($brokerId); if (!$brokerMapping) { throw new Exception('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } // 获取房源信息 $prop = Model_House_HzProp::findByPropId($propId); if (!$prop) { throw new Exception('房源不存在', Const_APIStatus::E_PROP_NOT_EXISTS); } // 判断房源和经纪人关联关系 $contentBasic = $prop->getContentBasic(); if ($contentBasic['userid'] != $brokerMapping['hzBrokerid']) { throw new Exception('房源不属于该经纪人', Const_APIStatus::E_PROP_NOT_EXISTS); } $data = array(); $area_id = $contentBasic['areaid']; $block_id = $contentBasic['blockid']; $areaInfo = Model_City_HzArea::getAreaById($area_id); $area_name = $areaInfo['typeName']; $blockInfo = Model_City_HzArea::getAreaById($block_id); $block_name = $blockInfo['typeName']; $data['areaname'] = $area_name; $data['blockname'] = $block_name; $data['propId'] = $propId; $data['url'] = $this->build_base_url($contentBasic['cityid'], $propId); $data['title'] = $contentBasic['title']; $data['imgUrl'] = $prop->getDefaultImageUrl(); $data['commId'] = $contentBasic['commid']; $data['commName'] = $contentBasic['commname']; $data['roomNum'] = $contentBasic['roomnum']; $data['hallNum'] = $contentBasic['hallnum']; $data['toiletNum'] = $contentBasic['toilnetnum']; $data['area'] = round($contentBasic['areanum']); $data['price'] = round($contentBasic['pricenum']); $data['priceUnit'] = '元/月'; $data['isVisible'] = intval(!$prop->isIllegal()); $data['isMoreImg'] = intval($prop->isMultiImages()); $data['isBid'] = intval($prop->isBid()); $data['isChoice'] = intval($prop->isChoice()); $data['isPhonePub'] = intval($prop->isFromMobile()); $data['publishDays'] = $prop->getPublishedDays(); $data['publishDaysMsg'] = $prop->getPublishedDays() > 0 ? "{$data['publishDays']}天前发布" : '今天发布'; $data['createTime'] = date('Y-m-d H:i:s', $contentBasic['created']); $data['updateTime'] = date('Y-m-d H:i:s', $contentBasic['updated']); //增加委托房源标签 $isEntrust = Bll_Zufang_Choice::isCommissionHouse($propId, $brokerId, Model_House_Commission::TYPE_RENT); if ($isEntrust) { $data['isEntrust'] = 1; } else { $data['isEntrust'] = 0; } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data); }
private function initEnv() { $this->objAPF = $objAPF = APF::get_instance(); $this->request = $this->objAPF->get_request(); $this->params = $this->request->get_parameters(); $this->brokerId = $this->request->getBrokerId(); $this->cityId = $this->request->getBrokerCityId(); //设置租房、金铺的经纪人id $MainBusiness = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($this->brokerId, false); $this->hzBrokerId = $MainBusiness['hzBrokerid']; $this->jpBrokerId = $MainBusiness['jpBrokerid']; $this->debug = isset($_GET['debug']) ? true : false; }
public function handle_request() { $brokerid = $this->getOption('brokerid'); $cityId = 11; printf('[%s] lastLogId: %s, start: %s, end: %s' . PHP_EOL, date('Y-m-d H:i:s'), $this->lastLogId, $this->start, $this->end); if (!isset($brokerid)) { $brokerid = 0; } $brokerInfos = Model_Broker_AjkBrokerExtend::getBrokerInfoByCityId($cityId, $this->lastLogId, $this->pageSize, $brokerid, 'K'); if (empty($brokerInfos)) { printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '任务执行完成.'); $this->setStop(); $this->setShStopFlag(); exit; } foreach ($brokerInfos as $brokerInfo) { if ($cityId != $brokerInfo->cityId) { continue; } $this->lastLogId = $brokerInfo->brokerId; $brokers = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($brokerInfo->brokerId); if (empty($brokers)) { echo "no data! \r\n"; } else { if ($brokers->ajkBrokerid) { printf('[%s]开始处理二手房: 城市ID为%s的历史数据,brokerId为%s' . PHP_EOL, date('Y-m-d H:i:s'), $cityId, $brokers->ajkBrokerid); //请求二手房API,处理竞价历史数据 $result = Uri_Curl::get($this->url . 'user/broker/transformmoney', array('id' => $brokers->ajkBrokerid, 'status' => 5)); printf('[%s]开始处理二手房: 城市ID为%s的历史数据,brokerId为%s,处理结果:%s' . PHP_EOL, date('Y-m-d H:i:s'), $cityId, $brokers->ajkBrokerid, $result); } if ($brokers->hzBrokerid) { printf('[%s]开始处理租房: 城市ID为%s的历史数据,brokerId为%s' . PHP_EOL, date('Y-m-d H:i:s'), $cityId, $brokers->ajkBrokerid); //请求租房API,处理竞价历史数据 $result = Uri_Curl::get($this->url . 'zufang/api/broker/transformmoney', array('id' => $brokers->ajkBrokerid, 'status' => 5)); printf('[%s]开始处理租房: 城市ID为%s的历史数据,brokerId为%s,处理结果:%s' . PHP_EOL, date('Y-m-d H:i:s'), $cityId, $brokers->ajkBrokerid, $result); } if ($brokers->jpBrokerid) { printf('[%s]开始处理商业地产: 城市ID为%s的历史数据,brokerId为%s' . PHP_EOL, date('Y-m-d H:i:s'), $cityId, $brokers->ajkBrokerid); //请求商业地产API,处理竞价历史数据 $result = Uri_Curl::get($this->url . 'jinpu/api/choice/brokerprop', array('brokerid' => $brokers->jpBrokerid, 'status' => 5)); printf('[%s]开始处理商业地产: 城市ID为%s的历史数据,brokerId为%s,处理结果:%s' . PHP_EOL, date('Y-m-d H:i:s'), $cityId, $brokers->ajkBrokerid, $result); } sleep(1); } } $params = array('cityId' => $cityId, 'lastLogId' => $this->lastLogId); $this->setFlag($params); }
public function handle_request_internal() { $this->brokerId = $this->_params['brokerId']; $this->propId = $this->_params['propId']; // 获取经纪人映射 $mapping = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($this->brokerId); if (!$mapping) { throw new Exception_BrokerNotFoundException(); } $hzBrokerId = $mapping['hzBrokerid']; $this->broker = Model_Broker_AjkBrokerExtend::findWithBrokerId($this->brokerId); $cityId = $this->broker['cityId']; // 非精选城市 if (!Bll_City::isChoiceCity($cityId, Const_Site::HAOZU)) { throw new Exception('非精选城市', Const_APIStatus::E_NOT_CHOICE_CITY); } // 获取房源信息 $this->prop = Model_House_HzProp::findByPropId($this->propId); if (!$this->prop) { throw new Exception_PropertyNotFoundException('房源不存在', Const_APIStatus::E_PROP_NOT_EXISTS); } // 检查房源是否属于当前经纪人 if (!$this->prop->belongToBroker($hzBrokerId)) { throw new Exception('房源不属于经纪人', Const_APIStatus::E_PROP_NOT_EXISTS); } $price = $this->prop->getContentBasic('pricenum'); $blockId = $this->prop->getContentBasic('blockid'); // 获取精选推广位 $this->bucket = Bll_Choice_HzBidBucket::get_bucket_info($blockId, $cityId, $price); $this->bucketId = $this->bucket['id']; // 检查房源是否可以添加精选推广位订阅 if (($result = $this->hasAddChoiceRemindPermission()) !== true) { throw new Exception($result['msg'], intval($result['code'])); } // 创建订阅 $subscription = Model_Choice_Subscription::data_access()->filter('site', Model_Choice_Subscription::SITE_RENT)->filter('brokerId', $this->brokerId)->filter('propId', $this->propId)->filter('bucketId', $this->bucketId)->find_only(); if (!$subscription) { Model_Choice_Subscription::create(array(Model_Choice_Subscription::SITE => Model_Choice_Subscription::SITE_RENT, Model_Choice_Subscription::BROKER_ID => $this->brokerId, Model_Choice_Subscription::PROP_ID => $this->propId, Model_Choice_Subscription::BUCKET_ID => $this->bucketId, Model_Choice_Subscription::STATUS => Model_Choice_Subscription::SUBSCRIPTION_START, Model_Choice_Subscription::CREATE_TIME => date('Y-m-d H:i:s'), Model_Choice_Subscription::UPDATE_TIME => date('Y-m-d H:i:s')))->save(); } else { $subscription->status = Model_Choice_Subscription::SUBSCRIPTION_START; $subscription->save(); } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('remindStatus' => 1, 'remindStatusMsg' => '取消推广位提醒')); }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $propId = $this->_params['propId']; // 获取Broker Mapping $brokerMapping = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($brokerId); if (!$brokerMapping) { throw new Exception('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } $data = array(); // 获取房源和计划关系 $planRelation = Model_Plan_HzPlanning::getPropFixPlan($propId); if ($planRelation) { $data['status'] = 1; //推广中 } else { $data['status'] = 0; //未推广 } // 获取房源信息 $prop = Model_House_HzProp::data_access()->filter('propId', $propId)->find_only(); if (!$prop) { throw new Exception('房源不存在', Const_APIStatus::E_PROP_NOT_EXISTS); } // 判断房源和经纪人关联关系 $propBasic = json_decode($prop['contentBasic'], true); if ($propBasic['userid'] != $brokerMapping['hzBrokerid']) { throw new Exception('房源不属于该经纪人', Const_APIStatus::E_PROP_NOT_EXISTS); // TODO } // 根据房源的计划ID判断房源是否已定价推广 $data['planId'] = ''; if ($plan = $prop->getFixPlan()) { $data['planId'] = $plan['id']; } // 点击单价 $data['clickPrice'] = round($prop->getFixClickPrice(), 2); $data['clickPriceUnit'] = '元'; // 今日定价点击量 $data['todayClicks'] = $prop->getTodayClickSums('fix'); // 定价点击总量 $data['totalClicks'] = $prop->getTotalClickSums('fix'); return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data); }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $cityId = $this->_params['cityId']; $planId = $this->_params['planId']; // 获取Broker Mapping $brokerMapping = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($brokerId); if (!$brokerMapping) { throw new Exception('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } // 判断计划和经纪人关联关系 $plan = Model_Plan_HzPlanBasic::get_plan_by_id($planId); if ($plan['user_id'] != $brokerMapping['hzBrokerid']) { throw new Exception('计划不属于该经纪人', Const_APIStatus::E_PLAN_NOT_BELONG_BROKER); } // 获取定价推广房源列表 $propertyList = array(); $props = Bll_HzFixPlan::get_plan_props($planId, $cityId); if (isset($props[$planId]) && isset($props[$planId]['props'])) { $propIds = array(); foreach ($props[$planId]['props'] as $prop) { $propId = $prop['proid']; $propIds[] = $propId; $row = array(); $row['propId'] = $row['id'] = $propId; $row['title'] = $prop['content_basic']['title']; $row['imgUrl'] = ''; $row['commId'] = $prop['content_basic']['commid']; $row['commName'] = $prop['content_basic']['commname']; $row['roomNum'] = $prop['content_basic']['roomnum']; $row['hallNum'] = $prop['content_basic']['hallnum']; $row['toiletNum'] = $prop['content_basic']['toilnetnum']; $row['area'] = round($prop['content_basic']['areanum']); $row['price'] = round($prop['content_basic']['pricenum']); $row['priceUnit'] = '元/月'; $row['todayClicks'] = $prop['fix_click']; $row['totalClicks'] = $prop['fix_total_click']; $row['isBid'] = 0; $row['isChoice'] = 0; $row['isVisible'] = (int) ($prop['content_basic']['status'] != 6); $row['isMoreImg'] = (int) $prop['content_basic']['quality']; $row['isPhonePub'] = (int) (isset($prop['content_basic']['from']) && $prop['content_basic']['from'] == 'mobile-ajk-broker'); $row['publishDays'] = floor((time() - $prop['content_basic']['created']) / 86400); $row['publishDaysMsg'] = $row['publishDays'] > 0 ? "{$row['publishDays']}天前发布" : '今天发布'; $row['createTime'] = date('Y-m-d H:i:s', $prop['content_basic']['created']); $row['updateTime'] = date('Y-m-d H:i:s', $prop['content_basic']['updated']); //增加委托房源标签 $isEntrust = Bll_Zufang_Choice::isCommissionHouse($propId, $brokerId, Model_House_Commission::TYPE_RENT); if ($isEntrust) { $row['isEntrust'] = 1; } else { $row['isEntrust'] = 0; } $propertyList[$propId] = $row; } if ($propIds) { // 批量获取房源的默认图片 $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds); foreach ($defaultImages as $defaultImage) { $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl(); } // 批量获取房源和竞价计划的关联记录(精选是竞价2.0)(只取推广中和排队中的关系) $relations = Model_Plan_HzPlanning::getBidRelationsByHouseIds($propIds, array(Const_HzPlan::SPREAD, Const_HzPlan::WAITING)); // 批量获取房源竞价计划 $planIds = array(); $planPropMap = array(); foreach ($relations as $relation) { $planIds[] = $relation['plan_id']; $planPropMap[$relation['plan_id']] = $relation['proid']; } if ($planIds) { $plans = Model_Plan_HzPlanBasic::getPlansByIds($planIds); foreach ($plans as $plan) { // 忽略已删除计划 if ($plan->flag == 0) { continue; } // 精选 if ($plan->bid_version == 2) { $propId = $planPropMap[$plan['id']]; $propertyList[$propId]['isChoice'] = 1; } else { // 竞价 $propId = $planPropMap[$plan['id']]; $propertyList[$propId]['isBid'] = 1; } } } } } // 排序 • 按发布时间倒序 usort($propertyList, function ($a, $b) { if ($a['createTime'] == $b['createTime']) { return 0; } return strtotime($a['createTime']) > strtotime($b['createTime']) ? -1 : 1; }); // 分组 $newList = array(); $oldList = array(); foreach ($propertyList as $property) { if ($property['publishDays'] > 30) { $oldList[] = $property; } else { $newList[] = $property; } } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('newList' => $newList, 'oldList' => $oldList)); }
/** * 修复 `ajk_broker_main_business` 表 * * @param $hzBrokerId * @param $ajkBrokerId * @param $memberId * @return bool */ private function repairBrokerMainBusiness($hzBrokerId, $ajkBrokerId, $memberId) { // TODO 修复 `ajk_broker_main_business` 表 $hzMainBusiness = Model_Broker_MainBusiness::getMainBusinessByHzBrokerId($hzBrokerId, false); $ajkMainBusiness = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($ajkBrokerId, false); if (empty($hzMainBusiness) && empty($ajkMainBusiness)) { if (Model_Broker_MainBusiness::addMainBusiness($memberId, $hzBrokerId, $ajkBrokerId) == 0) { $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)失败', $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)成功', $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if ($hzMainBusiness['id'] == $ajkMainBusiness['id']) { $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)正确,无须修复', $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if (!empty($hzMainBusiness) && !empty($ajkMainBusiness)) { if ($hzMainBusiness['jpBrokerid'] == 0 && $ajkMainBusiness['jpBrokerid'] != 0) { $jpBrokerid = $ajkMainBusiness['jpBrokerid']; } elseif ($ajkMainBusiness['jpBrokerid'] == 0 && $hzMainBusiness['jpBrokerid'] != 0) { $jpBrokerid = $hzMainBusiness['jpBrokerid']; } else { $jpBrokerid = 0; } Model_Broker_MainBusiness::deleteMainBusinessById($hzMainBusiness['id']); Model_Broker_MainBusiness::deleteMainBusinessById($ajkMainBusiness['id']); if (Model_Broker_MainBusiness::addMainBusiness($memberId, $hzBrokerId, $ajkBrokerId, $jpBrokerid) == 0) { $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)失败2', $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)成功2', $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if (!empty($hzMainBusiness)) { $updateData = array('ajkBrokerid' => $ajkBrokerId, 'memberId' => $memberId); if (Model_Broker_MainBusiness::updateMainBusinessById($hzMainBusiness['id'], $updateData) == 0) { $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)失败', $hzMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)成功', $hzMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if (!empty($ajkMainBusiness)) { $updateData = array('hzBrokerid' => $hzBrokerId); if (Model_Broker_MainBusiness::updateMainBusinessById($ajkMainBusiness['id'], $updateData) == 0) { $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)失败2', $ajkMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)成功2', $ajkMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return true; } return true; }