Пример #1
0
 public static function stopJpBidData($list)
 {
     $checkList = self::checkList($list);
     if (!$checkList['status']) {
         return $checkList;
     }
     $planInfo = Model_Plan_Jp::data_access()->filter('id', $list['planId'])->find_only();
     if ($planInfo->isDelete == Model_Plan_Jp::ENUM_IS_DELETE_YES) {
         return Bll_HzPropBll::build_return(0, '无效的竞价计划' . json_encode($list));
     }
     if ($planInfo->status != Model_Plan_Jp::ENUM_STATUS_ONLINE) {
         return Bll_HzPropBll::build_return(0, '竞价计划不在推广中' . json_encode($list));
     }
     if ($planInfo->type != Model_Plan_Jp::ENUM_TYPE_BID) {
         return Bll_HzPropBll::build_return(0, '竞价计划类型有误' . json_encode($list));
     }
     if (!in_array($planInfo->bidVersion, array(Model_Plan_Jp::BIDVERSION_OLD, Model_Plan_Jp::BIDVERSION_CHOICE))) {
         return Bll_HzPropBll::build_return(0, '竞价计划version error' . json_encode($list));
     }
     $houseIdx = Model_House_JpHouseIdx::data_access()->filter('id', $planInfo['houseId'])->find_only();
     if (empty($houseIdx)) {
         return Bll_HzPropBll::build_return(0, '金铺房源信息没有' . json_encode($list));
     }
     if ($houseIdx->bidSpreadId != $planInfo->id) {
         return Bll_HzPropBll::build_return(0, '金铺房源信息有误bidSpreadId' . json_encode($list));
     }
     $houseIdx->bidSpreadId = 0;
     if (!$houseIdx->save()) {
         return Bll_HzPropBll::build_return(0, '金铺房源信息更新失败' . json_encode($list));
     }
     //发送结算
     $params = array();
     $params['spread_id'] = $planInfo->id;
     $params['log_status'] = 7;
     Bll_Plan_Bid_JpSettlement::getInstance()->settlement($params, 'bid');
     $planInfo->status = Model_Plan_Jp::ENUM_STATUS_OVER;
     $planInfo->isDelete = 1;
     $planInfo->updateTime = date('Y-m-d H:i:s');
     if (!$planInfo->save()) {
         return Bll_HzPropBll::build_return(0, '金铺计划信息更新失败' . json_encode($list));
     }
     //房源下架tosolr
     Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1);
     //通知更新q_spread_bid_update表 计算竞价系数
     Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id);
     //记录房源日志
     $data = array('houseId' => $houseIdx->id, 'planId' => $planInfo->id, 'brokerId' => $list['brokerId'], 'cityId' => $planInfo->cityId, 'type' => 15, 'changeType' => 407, 'remark' => '房源' . $houseIdx->id . '移出定价计划/取消套餐推广。竞价' . $planInfo->id . '(id)取消竞价推广。', 'addDate' => date('Y-m-d H:i:s'), 'operatorId' => $list['operationId'], 'siteType' => 3);
     if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         return Bll_HzPropBll::build_return(0, array("日志写入失败"));
     }
     return Bll_HzPropBll::build_return(1, array('竞价' . $planInfo->id . '(id)取消竞价推广。'));
 }
Пример #2
0
 /**
  * 通知solr处理
  *
  * <ol>
  * <li>
  * 当房源日志type为房源更新(4),房源推广(5)时,通知solr更新
  * </li>
  * <li>
  * 当房源日志type为取消推广(6),第二天推广(7),取消第二天推广(12)时,通知solr更新
  * </li>
  * </ol>
  */
 public function noticeSolrJp($record)
 {
     $type = $record['type'];
     if (!in_array($type, array(4, 5, 6, 7, 12))) {
         $this->setLog('不需要做solr处理' . __METHOD__);
         return true;
     }
     $result = Bll_House_JpHouseInfo::updateHouseToSolr(1, $record['houseId'], 1);
     if ($result) {
         //记录处理日志
         $this->setLog('solr处理成功');
         return true;
     } else {
         //记录处理日志
         $this->setLog('solr处理失败');
         return false;
     }
 }
Пример #3
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);
         }
     }
 }
Пример #4
0
 /**
  * 把房源从竞价推广中移除
  * @param $objHouse
  * @param int $p_intMemberId
  * @param $log_type:1,手动停止 2,房源过期
  * @param int $do_choice  是否处理精选计划,如果为false 说明插入竞价队列表,在竞价队列JOB中处理
  * @return mixed
  */
 public static function removeBidHouseFromSpread($objHouse, $memberId = 0, $log_type = 1, $do_choice = true)
 {
     if ($log_type == 1) {
         $arr_log_param = array('spread_status' => Model_Log_JpSpreadStatusUpdate::ENUM_STATUS_SPREAD_STOP, 'house_log' => Model_Log_JpHouseUpDown::ENUM_BID_MEMBER_HOUSE_STOP);
     } elseif ($log_type == 2) {
         $arr_log_param = array('spread_status' => Model_Log_JpSpreadStatusUpdate::ENUM_STATUS_SPREAD_HOUSE_EXPIRE, 'house_log' => Model_Log_JpHouseUpDown::ENUM_JOB_HOUSE_EXPIRE);
     }
     $p_intHouseId = $objHouse->id;
     //检查推广信息
     $arrResult = Bll_Plan_JpPlanManage::getInstance()->checkSpreadInfo($objHouse->bidSpreadId, $memberId, $objHouse->id);
     if (!$arrResult['success']) {
         return $arrResult;
     }
     $objSpread = $arrResult['data'];
     //从竞价中移除房源
     if ($objSpread->type == Model_Plan_Jp::ENUM_TYPE_HP) {
         if ($objSpread->bidVersion == Model_Plan_Jp::BIDVERSION_CHOICE) {
             if (false == $do_choice) {
                 return array('success' => true, 'data' => '操作成功');
             }
         }
         //记录停止日志
         Bll_Log_JpPlan::getInstance()->writeSpreadStatusLog($arr_log_param['spread_status'], $objHouse->bidSpreadId, '房源停止计划:触发结算前');
         //发送结算
         $params = array();
         $params['spread_id'] = $objHouse->bidSpreadId;
         $params['log_status'] = 7;
         Bll_Plan_Bid_JpSettlement::getInstance()->settlement($params, 'bid');
         //解除关系
         $objHouse->bidSpreadId = 0;
         $objHouse->save();
         //判断是否下架房源
         $intXiaJia = 1;
         if (!empty($objHouse->fixSpreadId)) {
             $objModel = Model_Plan_Jp::data_access();
             try {
                 $objFixSpread = $objModel->find_by_pk($objHouse->fixSpreadId, false);
             } catch (Exception $e) {
                 $objFixSpread = null;
             }
             if (!empty($objFixSpread) && $objFixSpread->status == 2) {
                 $intXiaJia = 0;
             }
         }
         //操作下架
         if ($intXiaJia) {
             //下架房源
             self::updateHouseIsList($objHouse->id, $objHouse->houseType, 0);
             //记录房源操作
             $intTitle = Const_CrmHouseLog::V_OPERATION_TITLE_OUT_SHELVES;
             $intComment = Const_CrmHouseLog::V_OPERATION_COMMENT_HOUSE_SPREAD_OFFLINE;
             Bll_Log_JpHouse::getInstance()->logHouseOperation($objHouse->id, $objHouse->memberId, $intTitle, $intComment);
         }
         //更新solr
         Bll_House_JpHouseInfo::updateHouseToSolr(1, $p_intHouseId, 1);
         //TO 初始化房源统计日志
         Bll_House_JpBwAnalysis::getInstance()->openSaveBluewhaleHouse($objHouse->id, date('Y-m-d'), $objHouse->bidSpreadId, $objSpread->type);
         //竞价房源下线日志
         Bll_Log_JpHouse::getInstance()->writeHouseLog($objHouse->id, $objHouse->bidSpreadId, 0, $objHouse->memberId, $arr_log_param['house_log']);
         $objSpread->isDelete = 1;
         $objSpread->save();
         return array('success' => true, 'data' => '操作成功');
     }
 }
Пример #5
0
 public static function updateBucketStatusAndHouseToSolr($spreadInfo, $brokerId = 0, $func = '', $reason = '')
 {
     $bidBucket = Model_Choice_JPBidBucket::getBucketInfo($spreadInfo->blockId, $spreadInfo->newBlockId, $spreadInfo->houseType, $spreadInfo->priceId);
     $limit = $bidBucket['totalNum'];
     $bidChoicePlan = Model_Plan_Jp::getBidChoicePlan($spreadInfo->blockId, $spreadInfo->newBlockId, $spreadInfo->priceId, $spreadInfo->houseType, $limit, $spreadInfo->memberId, $spreadInfo->cityId);
     $upHouse = $downHouse = array();
     if ($bidChoicePlan && $bidBucket) {
         foreach ($bidChoicePlan as $i => $planInfo) {
             if ($i < $bidBucket['maxOnlineNum']) {
                 if (6 == $planInfo->status) {
                     //将计划状态改成 2
                     $planInfo->status = 2;
                     $planInfo->save();
                     $params = array();
                     $params['houseId'] = $planInfo->houseId;
                     $params['plan_id'] = $planInfo->id;
                     $params['ajk_broker_id'] = $brokerId;
                     $params['city_id'] = $spreadInfo->cityId;
                     $params['type'] = 14;
                     //13-精选排队中,14-精选推广,15-取消精选推广,16-取消精选排队
                     $params['changeType'] = self::$propLog[$func]['changeType'];
                     $_remark = '由于' . $reason . ',导致房源:' . $planInfo->houseId . '上架';
                     self::writeHouseLogV2($params, $_remark);
                     //房源上架tosolr
                     Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1);
                     //通知更新q_spread_bid_update表 计算竞价系数
                     Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id);
                     $upHouse[] = $planInfo->houseId;
                 }
             } else {
                 if (2 == $planInfo->status) {
                     //将计划状态改成 6
                     $planInfo->status = 6;
                     $planInfo->save();
                     $params = array();
                     $params['houseId'] = $planInfo->houseId;
                     $params['plan_id'] = $planInfo->id;
                     $params['ajk_broker_id'] = $brokerId;
                     $params['city_id'] = $spreadInfo->cityId;
                     $params['type'] = 15;
                     //13-精选排队中,14-精选推广,15-取消精选推广,16-取消精选排队
                     $params['changeType'] = self::$propLog[$func]['changeType'];
                     $_remark = '由于' . $reason . ',导致房源:' . $planInfo->houseId . '下架';
                     self::writeHouseLogV2($params, $_remark);
                     //房源下架tosolr
                     Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1);
                     //通知更新q_spread_bid_update表 计算竞价系数
                     Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id);
                     $downHouse[] = $planInfo->houseId;
                 }
             }
         }
         $remark = '由于' . $reason . ',导致商业地产精选推广';
         if ($upHouse || $downHouse) {
             if ($upHouse) {
                 $remark .= '上架房源:' . implode(',', $upHouse);
             }
             if ($downHouse) {
                 $remark .= '下架房源:' . implode(',', $downHouse);
             }
         } else {
             $remark .= '暂无上下架房源';
         }
         return $remark;
     }
     return $reason;
 }