/** * 添加房源到推广计划中 * @param $intMemberId * @param $intHouseId * @param $intSpreadId * @return array|bool */ public function addHouseToSpread($intMemberId, $intHouseId, $intSpreadId) { //判断参数 if (empty($intMemberId) || empty($intHouseId) || empty($intSpreadId)) { return array('success' => false, 'data' => '传递参数有误', 'err_code' => Const_PublishCode::UNKNOWN_ERROR); } //检查推广信息 $arrResult = $this->checkSpreadInfo($intSpreadId, $intMemberId); if (!$arrResult['success']) { $arrResult['err_code'] = Const_PublishCode::UNKNOWN_ERROR; return $arrResult; } $objSpread = $arrResult['data']; //推广数量限制 $checkPlanHouseNum = $this->checkPlanHouseNum($intMemberId); if (!$checkPlanHouseNum['success']) { return $checkPlanHouseNum; } if ($objSpread->status == 2 && date('Y-m-d', $objSpread->noBudgetDate) == date('Y-m-d')) { //第二天推广 $is_plan_online_status = 2; } elseif ($objSpread->status == 2 && date('Y-m-d', $objSpread->noBudgetDate) != date('Y-m-d')) { //立刻推广 $is_plan_online_status = 1; } else { //不推广 $is_plan_online_status = 0; } //检查房源信息 $arrResult = $this->checkHouse($intHouseId, $intMemberId, $intSpreadId, true); if (!$arrResult['success']) { $arrResult['err_code'] = Const_PublishCode::UNKNOWN_ERROR; return $arrResult; } $objHouse = $arrResult['data']; //房源已经在定价推广中 if ($objHouse['fixSpreadId'] > 0) { return array('success' => false, 'data' => '房源已经在定价推广计划中', 'err_code' => Const_PublishCode::SPREAD_PROP_PLAN_IN); } //如果没有基准价格 $intHouseType = $objHouse['houseType']; if (in_array($intHouseType, array(1, 3))) { $floPrice = $objHouse['detail']['monthlyRent']; } else { $floPrice = $objHouse['detail']['totalPrice']; } $arrBasePrice = $this->getSpreadPriceByPrice($floPrice, $intHouseType, $objHouse['cityId']); $strClass = Model_House_JpHouseIdx::getHouseTypeModelClass($objHouse['houseType']); $strClass::data_access()->filter('id', $objHouse['id'])->set_field('spreadPrice', $arrBasePrice['base_price'])->update(); //重算rank if ($objSpread->status == Model_Plan_Jp::ENUM_STATUS_ONLINE) { BLL_House_JpHouseManage::saveRank($intHouseId, true); } //首先修改房源和推广对应关系 Model_House_JpHouseIdx::data_access()->filter('id', $objHouse['id'])->set_field('fixSpreadId', $intSpreadId)->set_field('spreadId', $intSpreadId)->update(); //更新计划房源数量 $objSpread->houseNum = $objSpread->houseNum + 1; $objSpread->save(); //添加统计和队列 if ($objSpread->status == Model_Plan_Jp::ENUM_STATUS_ONLINE) { //添加更新solr队列 $intStatus = 1; if (isset($objSpread->noBudgetDate) && date('Ymd') == date('Ymd', $objSpread->noBudgetDate)) { $intStatus = 2; } Bll_House_JpHouseInfo::updateHouseToSolr(1, $intHouseId, $intStatus); } //写入定价上下架队列 $brokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByPk($objHouse['memberId']); Bll_Combo_HouseRelation::notifyHouseUpDownTask($brokerInfo['ajkMemberId'], $intHouseId, $objHouse['cityId'], Bll_Combo_HouseRelation::SITE_TYPE_JP, 107, json_encode(array('is_plan_online' => $is_plan_online_status)), __METHOD__, $brokerInfo['ajkMemberId']); if ($objSpread->status == Model_Plan_Jp::ENUM_STATUS_ONLINE) { if (isset($objSpread->noBudgetDate) && date('Ymd') == date('Ymd', $objSpread->noBudgetDate)) { return array('success' => false, 'data' => '日限额花完,房源已经停止推广', 'err_code' => Const_PublishCode::SPREAD_PROP_BUDGET_OVER); } else { return array('success' => true, 'data' => '添加成功', 'err_code' => 0); } } elseif ($objSpread->status == Model_Plan_Jp::ENUM_STATUS_OVER) { if ($objSpread->stopReason == 1) { return array('success' => false, 'data' => '计划已经手动停止,房源已经停止推广', 'err_code' => Const_PublishCode::SPREAD_PROP_HANDLE_STOP); } elseif ($objSpread->stopReason == 2) { return array('success' => false, 'data' => '账户余额不足,房源已经停止推广,充值后自动推广', 'err_code' => Const_PublishCode::SPREAD_PROP_BALANCE_ERROR); } elseif ($objSpread->stopReason == 3) { return array('success' => false, 'data' => '认证未通过,房源已经停止推广', 'err_code' => Const_PublishCode::SPREAD_PROP_AUDITED_ERROR); } elseif ($objSpread->stopReason == 0) { return array('success' => false, 'data' => '计划已经暂停', 'err_code' => Const_PublishCode::SPREAD_PROP_PLAN_STOP); } } }