Пример #1
0
 /**
  * 房源加入套餐推广
  *
  * @param int $brokerId
  * @param int $cityId
  * @param array $params
  * @return array
  */
 private function houseStartComboSpreadAction($brokerId, $cityId, $params)
 {
     $houseIds = is_array($params['houseIds']) ? $params['houseIds'] : explode(',', $params['houseIds']);
     $realHouseIds = $this->removeInvalidateHouseId($brokerId, $houseIds, $cityId);
     if (empty($realHouseIds)) {
         return $this->buildResponse('error', $houseIds, '请至少选择一套房源。');
     }
     $comboList = Bll_Combo_Broker_BrokerComboInfo::getComboListBySite($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
     if (empty($comboList)) {
         return $this->buildResponse('error', $realHouseIds, '您还没有购买套餐,购买后才能推广房源。<br /><a href="/ajkbroker/combo/buy/select" target="_blank">去购买套餐&gt;&gt;</a> ');
     }
     $currentComboHouseCount = 0;
     $currentCombo = array();
     $nextCombo = array();
     $currentTime = time();
     foreach ($comboList as $combo) {
         /** 打通的套餐 */
         if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($combo)) {
             /** 获取当前使用的套餐 */
             if (strtotime($combo['endTime']) > $currentTime && strtotime($combo['startTime']) < $currentTime) {
                 if ($combo['salePropNum'] > 0 || $combo['rentPropNum'] > 0) {
                     $currentCombo = $combo;
                     $currentComboHouseCount = $combo['salePropNum'] + $combo['rentPropNum'];
                 }
                 continue;
             }
             /** 获取续买套餐 */
             if (strtotime($combo['startTime']) > $currentTime) {
                 if ($combo['salePropNum'] > 0 || $combo['rentPropNum'] > 0) {
                     $nextCombo = $combo;
                 }
             }
             continue;
         }
         /** 未打通的套餐 */
         if (strtotime($combo['endTime']) > $currentTime && strtotime($combo['startTime']) < $currentTime && $combo['salePropNum'] > 0) {
             $currentComboHouseCount = $combo['salePropNum'];
             $currentCombo = $combo;
             break;
         }
         /** 获取续买套餐 */
         if ($combo['salePropNum'] > 0 && strtotime($combo['startTime']) > $currentTime) {
             $nextCombo = $combo;
         }
     }
     if (empty($currentCombo) && empty($nextCombo)) {
         return $this->buildResponse('error', $realHouseIds, '您还没有购买套餐,购买后才能推广房源。<br /><a href="/ajkbroker/combo/buy/select" target="_blank">去购买套餐&gt;&gt;</a> ');
     }
     if (empty($currentCombo) && !empty($nextCombo)) {
         return $this->buildResponse('error', $realHouseIds, sprintf('您购买的套餐 %s 需要到 %s 才能生效。', $nextCombo['name'], date('Y.m.d', strtotime($nextCombo['startTime']))));
     }
     if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
         $currentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCount($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_AJK, true);
     } else {
         $currentSpreadHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($brokerId, $cityId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
     }
     if (count($realHouseIds) + $currentSpreadHouseCount > $currentComboHouseCount) {
         return $this->buildResponse('error', $realHouseIds, sprintf('最多只能推广 %d 套房源。', $currentComboHouseCount));
     }
     if (Bll_Combo_HouseRelation::houseStartComboSpread($brokerId, $cityId, $realHouseIds, Bll_Combo_HouseRelation::SITE_TYPE_AJK)) {
         return $this->buildResponse('ok', $realHouseIds, sprintf('成功推广 %d 套房源。', count($realHouseIds)));
     }
     return $this->buildResponse('error', $realHouseIds, '套餐推广失败。');
 }