/** * 房源加入套餐推广 * * @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">去购买套餐>></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">去购买套餐>></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, '套餐推广失败。'); }