Exemplo n.º 1
0
 /**
  * 房源开始套餐推广
  *
  * @param int $brokerId
  * @param int $cityId
  * @param int|array $houseIds
  * @param string $siteType
  * @return bool
  */
 public static function houseStartComboSpread($brokerId, $cityId, $houseIds, $siteType = self::SITE_TYPE_AJK)
 {
     // TODO 房源开始套餐推广 && 修改套餐推广房源数
     //  TODO 先查出所有需要推广的房源 再统一更新 和 新加
     $condition = array('brokerId' => $brokerId, 'cityId' => $cityId, 'houseId' => $houseIds);
     $houseRelationList = Model_Combo_HouseRelation::getList($siteType, $condition);
     $spreadHouseCount = 0;
     if (empty($houseRelationList)) {
         foreach ($houseIds as $houseId) {
             if (0 < static::insertHouseRelation($brokerId, $cityId, $houseId, Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, $siteType)) {
                 $spreadHouseCount++;
             }
         }
         /** TODO 添加上下架通知 */
         static::notifyHouseUpDownTask($brokerId, $houseIds, $cityId, $siteType, Model_House_UpDown_Task::TYPE_PRO_START_COMBO, '房源手动套餐推广', __METHOD__, $brokerId);
         return true;
     }
     $spreadHouse = array();
     foreach ($houseRelationList as $houseRelation) {
         $spreadHouse[] = $houseRelation['houseId'];
     }
     $firstSpreadHouse = array_diff($houseIds, $spreadHouse);
     $spreadHouseCount = Model_Combo_HouseRelation::updateHouseComboSpreadStateEx($brokerId, $cityId, $spreadHouse, Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, $siteType);
     if ($spreadHouseCount == 0) {
         return false;
     }
     foreach ($firstSpreadHouse as $houseId) {
         if (0 < static::insertHouseRelation($brokerId, $cityId, $houseId, Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, $siteType)) {
             $spreadHouseCount++;
         }
     }
     /** TODO 添加上下架通知 */
     static::notifyHouseUpDownTask($brokerId, $houseIds, $cityId, $siteType, Model_House_UpDown_Task::TYPE_PRO_START_COMBO, '房源手动套餐推广', __METHOD__, $brokerId);
     return true;
 }
Exemplo n.º 2
0
 /**
  * 502 经纪人套餐生效
  *
  * @param $queueInfo
  * @return array
  */
 public static function comboEffect($queueInfo)
 {
     $dealRemark = array();
     $currentCombo = Bll_Combo_Broker_BrokerComboInfo::getBrokerCurrentCombo($queueInfo['broker_id'], Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_AJK);
     $onlineHouseRelationList = Bll_Combo_HouseRelation::getOnlineHouseList($queueInfo['broker_id'], $queueInfo['city_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK);
     /** 当前没有生效的套餐,下掉所有的房子 */
     if (empty($currentCombo)) {
         $dealRemark[] = sprintf('%d 经纪人当前[%s]没有生效的租售套餐', $queueInfo['id'], date('Y-m-d H:i:s'));
         $data = static::buildHouseLog($queueInfo, 21, '经纪人套餐生效,未获取到套餐信息房源下架', 0);
         if (!empty($onlineHouseRelationList)) {
             foreach ($onlineHouseRelationList as $onlineHouseRelation) {
                 $data['houseId'] = $onlineHouseRelation['houseId'];
                 if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                     $dealRemark[] = sprintf('%d 套餐生效,未获取到套餐信息,下掉房源(%d) 失败', $queueInfo['id'], $onlineHouseRelation['houseId']);
                     continue;
                 }
                 $dealRemark[] = sprintf('%d 套餐生效,未获取到套餐信息,下掉房源(%d) 成功', $queueInfo['id'], $onlineHouseRelation['houseId']);
             }
         }
         return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark);
     }
     /** 添加打通的套餐的逻辑 */
     if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
         $dealRemark[] = '当前套餐为打通套餐';
         $comboSpreadHouseCount = $currentCombo['salePropNum'] + $currentCombo['rentPropNum'];
         $hzHouseOnlineRelationList = Bll_Combo_HouseRelation::getOnlineHouseList($queueInfo['broker_id'], $queueInfo['city_id'], Bll_Combo_HouseRelation::SITE_TYPE_HZ);
         $spreadHouseCount = count($hzHouseOnlineRelationList) + count($onlineHouseRelationList);
         if ($spreadHouseCount >= $comboSpreadHouseCount) {
             $dealRemark[] = sprintf('%d 经纪人当前[%s]套餐,可推广房源数小于当前在线房源数,不处理。', $queueInfo['id'], date('Y-m-d H:i:s'));
             return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark);
         }
         /** 上架房源 */
         $needSpreadHouseCount = $comboSpreadHouseCount - $spreadHouseCount;
         $hzExpiredHouseRelationList = Bll_Combo_HouseRelation::getHouseRelations($queueInfo['broker_id'], Bll_Combo_HouseRelation::SITE_TYPE_HZ, Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE);
         $ajkExpiredHouseRelationList = Bll_Combo_HouseRelation::getHouseRelations($queueInfo['broker_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK, Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE);
         $rangedHouseRelation = Bll_Combo_Updown_AjkDealJob::calculateRangeByCreated($ajkExpiredHouseRelationList, $hzExpiredHouseRelationList);
         /** 过滤无效房源 */
         $validateHouseRelation = array();
         foreach ($rangedHouseRelation as $houseRelation) {
             $houseId = $houseRelation['houseId'];
             if ($houseRelation['siteType'] == Bll_Combo_HouseRelation::SITE_TYPE_HZ) {
                 $houseInfo = Model_House_HzPropSearch::get_prop_by_prop_id($queueInfo['city_id'], $houseId);
                 if (empty($houseInfo)) {
                     $dealRemark[] = sprintf('好租房源[%d]不存在', $houseId);
                     continue;
                 }
                 if (in_array($houseInfo['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) {
                     $dealRemark[] = sprintf('好租房源[%d]不是有效的房源', $houseId);
                     continue;
                 }
                 $validateHouseRelation[] = $houseRelation;
                 continue;
             }
             $houseInfo = Bll_House_EsfHouse::getHouseBaseInfoEx($houseId, $queueInfo['city_id']);
             if (empty($houseInfo)) {
                 $dealRemark[] = sprintf('二手房房源[%d]不是有效的房源', $houseId);
                 continue;
             }
             if ($houseInfo['isVisible'] == 0 && $houseInfo['expireWorker'] != 'propertyReport') {
                 $dealRemark[] = sprintf('二手房房源(%d)违规,不做处理', $houseId);
                 continue;
             }
             $validateHouseRelation[] = $houseRelation;
         }
         $houseUpRelationList = array_slice($validateHouseRelation, 0, $needSpreadHouseCount);
         $data = static::buildHouseLog($queueInfo, 20, '经纪人套餐生效,房源上架', 0);
         foreach ($houseUpRelationList as $onlineHouseRelation) {
             $site = $onlineHouseRelation['siteType'] == Bll_Combo_HouseRelation::SITE_TYPE_AJK ? '二手房' : '好租';
             if (1 == Model_Combo_HouseRelation::updateHouseComboSpreadStateEx($queueInfo['broker_id'], $queueInfo['city_id'], $onlineHouseRelation['houseId'], Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, $onlineHouseRelation['siteType'])) {
                 $dealRemark[] = sprintf('上架' . $site . '房源[%d]成功', $onlineHouseRelation['houseId']);
             } else {
                 $dealRemark[] = sprintf('上架' . $site . '房源[%d]失败', $onlineHouseRelation['houseId']);
             }
             $data['houseId'] = $onlineHouseRelation['houseId'];
             $data['siteType'] = $onlineHouseRelation['siteType'] == Bll_Combo_HouseRelation::SITE_TYPE_AJK ? 1 : 2;
             if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                 $dealRemark[] = sprintf('%d 套餐生效,上架' . $site . '房源(%d) 失败', $queueInfo['id'], $onlineHouseRelation['houseId']);
                 continue;
             }
             $dealRemark[] = sprintf('%d 套餐生效,上架' . $site . '房源(%d) 成功', $queueInfo['id'], $onlineHouseRelation['houseId']);
         }
         $dealRemark[] = sprintf('%d [%s] 经纪人套餐生效,上架%d套房源。', $queueInfo['id'], date('Y-m-d H:i:s'), $spreadHouseCount);
         return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark);
     }
     /**
      * 下掉超出限制的房源
      */
     if (count($onlineHouseRelationList) >= $currentCombo['salePropNum']) {
         $data = static::buildHouseLog($queueInfo, 21, '经纪人套餐生效,下掉多余房子', 0);
         $offLineHouseList = array_slice($onlineHouseRelationList, $currentCombo['salePropNum']);
         if (empty($offLineHouseList)) {
             return static::buildReturn(self::PROCESS_STATUS_SUCCESS, sprintf('%d [%s] 经纪人在线房源数已经达到套餐限制[%d]。', $queueInfo['id'], date('Y-m-d H:i:s'), $currentCombo['salePropNum']));
         }
         foreach ($offLineHouseList as $offLineHouse) {
             $data['houseId'] = $offLineHouse['houseId'];
             if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                 $dealRemark[] = sprintf('%d 套餐生效,未获取到套餐信息,下掉房源(%d) 失败', $queueInfo['id'], $offLineHouse['houseId']);
                 continue;
             }
             $dealRemark[] = sprintf('%d 套餐生效,未获取到套餐信息,下掉房源(%d) 成功', $queueInfo['id'], $offLineHouse['houseId']);
         }
         return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark);
     }
     $expiredHouseRelationList = Bll_Combo_HouseRelation::getHouseRelations($queueInfo['broker_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK, Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE);
     if (empty($expiredHouseRelationList)) {
         return static::buildReturn(self::PROCESS_STATUS_SUCCESS, sprintf('%d [%s] 没有获取到经纪人因套餐到期而下架的房源。', $queueInfo['id'], date('Y-m-d H:i:s')));
     }
     $expiredHouseRelationIds = array();
     foreach ($expiredHouseRelationList as $expiredHouseRelation) {
         $expiredHouseRelationIds[] = $expiredHouseRelation['houseId'];
     }
     $houseInfoList = Bll_House_EsfHouse::getHouseInfoByHouseIdEx($queueInfo['broker_id'], $expiredHouseRelationIds, $queueInfo['city_id'], array('proId', 'expireWorker', 'isVisible'));
     if (empty($houseInfoList)) {
         return static::buildReturn(self::PROCESS_STATUS_SUCCESS, sprintf('%d [%s] 没有获取到房源(%s)信息。', $queueInfo['id'], date('Y-m-d H:i:s'), implode(',', $expiredHouseRelationIds)));
     }
     /** 过滤掉违规房源 */
     $validateHouseIds = array();
     foreach ($houseInfoList as $houseInfo) {
         if ($houseInfo['isVisible'] == 0 && $houseInfo['expireWorker'] != 'propertyReport') {
             $dealRemark[] = sprintf('房源(%d)违规,不做处理', $houseInfo['proId']);
             continue;
         }
         $validateHouseIds[] = $houseInfo['proId'];
     }
     /** 按照房源ID 排序 */
     sort($validateHouseIds, SORT_NUMERIC);
     if (count($validateHouseIds) > $currentCombo['salePropNum']) {
         $onlineHouseIds = array_slice($validateHouseIds, count($validateHouseIds) - $currentCombo['salePropNum']);
     } else {
         $onlineHouseIds = $validateHouseIds;
     }
     $data = static::buildHouseLog($queueInfo, 20, '经纪人套餐生效,房源上架', 0);
     foreach ($onlineHouseIds as $onlineHouseId) {
         $data['houseId'] = $onlineHouseId;
         if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $dealRemark[] = sprintf('%d 套餐生效,上架房源(%d) 失败', $queueInfo['id'], $onlineHouseId);
             continue;
         }
         $dealRemark[] = sprintf('%d 套餐生效,上架房源(%d) 成功', $queueInfo['id'], $onlineHouseId);
     }
     $spreadHouseCount = Model_Combo_HouseRelation::updateHouseComboSpreadStateEx($queueInfo['broker_id'], $queueInfo['city_id'], $onlineHouseIds, Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
     $dealRemark[] = sprintf('%d [%s] 经纪人套餐生效,上架%d套房源[%s]。', $queueInfo['id'], date('Y-m-d H:i:s'), $spreadHouseCount, implode(',', $onlineHouseIds));
     return static::buildReturn(self::PROCESS_STATUS_SUCCESS, $dealRemark);
 }