/** * 板块下经纪人 * @param $areaCode * @return array */ private function areaEntrustBroker($areaCode, $pushOpen, $houseCityId, $houseId) { $areaBrokerIds = array(); $rankBrokerIds = array(); //推送给当前板块的经纪人 $areaCodeForAjkBrokerExtends = Model_Broker_AjkBrokerExtend::getDataByAreaCode($areaCode); //剔除非本城市的经纪人 $aroundBrokerRaws = array(); foreach ($areaCodeForAjkBrokerExtends as $areaBroker) { if ($areaBroker['cityId'] != $houseCityId) { continue; } $aroundBrokerRaws[] = $areaBroker['brokerId']; } //读取微聊id $areaChatinfos = Model_Mobile_BrokerChatInfo::getActiveBrokerIdsCV($aroundBrokerRaws); $areaChatinfos = array_filter($areaChatinfos); //读取接口-版本号处理 $chargeMinCV = APF::get_instance()->get_config("charge_entrust_min_cv"); $freeMinCV = APF::get_instance()->get_config("free_entrust_min_cv"); if (empty($areaChatinfos)) { return array(); } $brokerIdsBefore = array(); foreach ($areaChatinfos as $areaChatinfo) { //读取接口 if (!empty($areaChatinfo['chatId'])) { $response = Bll_Mobile_ChatInfoBll::getInstance()->apiGetChatInfoByCV($areaChatinfo['chatId']); } //判断3.7版本以上或者免费城市3.4版本以上 if ($response['data']['result']['cv'] >= $chargeMinCV || !$pushOpen && $response['data']['result']['cv'] >= $freeMinCV) { $brokerIdsBefore[] = $areaChatinfo['brokerId']; } } //将经纪人按Rank值从高到低排序,并限制人数 $brokerIds = array(); $rushAreaLimit = APF::get_instance()->get_config('rush_area_limit'); $rankBrokerInfo = Model_Broker_BrokerActionCenter::getBrokerIdsOrderByRank($brokerIdsBefore, $rushAreaLimit); if (count($brokerIdsBefore) > count($rankBrokerInfo)) { $this->setLog(date('Y-m-d H:i:s') . '-houseId: ' . $houseId . ' - areaCode: ' . $areaCode . '--板块推送人数已做限制或经纪人活动中心表中缺少数据'); } foreach ($rankBrokerInfo as $rankBroker) { $brokerIds[] = $rankBroker['brokerId']; } if (!empty($brokerIds)) { echo '板块已执行成功' . "\n"; $this->setLog(date('Y-m-d H:i:s') . '-houseId: ' . $houseId . ' - areaCode: ' . $areaCode . '--板块推送执行完成'); } return $brokerIds; }