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)取消竞价推广。')); }
/** * 通知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; } }
/** * 添加房源到推广计划中 * @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); } } }
/** * 把房源从竞价推广中移除 * @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' => '操作成功'); } }
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; }