コード例 #1
0
 /**
  * 板块下经纪人
  * @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;
 }