Пример #1
0
 /**
  * 添加房源到推广计划中
  * @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);
         }
     }
 }