/** * @param $request object * @param $brokerInfo array * @param $type string rent || sale * @return array */ public static function getShopBeforePost($request, $brokerInfo, $type) { $out = $logGiveArr = array(); $params = $request->get_parameters(); // manager_id不为空,说明是伪登录 $out['managerId'] = $request->get_cookie('manager_id'); // 经纪人信息 $out['brokerInfo'] = $brokerInfo; $cityId = $brokerInfo['CITYID']; //金铺城市ID转换 $jpCityId = $out['brokerInfo']['jpCityId'] = BLL_House_JpHouseManage::getMemberCityId($cityId); $out['ajkBrokerId'] = $out['brokerInfo']['BROKERID']; $jpMember = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($out['ajkBrokerId']); $out['brokerInfo']['jpMemberId'] = intval($jpMember->id); //获取城市配置信息是否是精选推广 $out['isChoiceCity'] = Bll_City::isChoiceCity($jpCityId, Const_Site::JINPU); $out['bidTip'] = $out['isChoiceCity'] ? '精选' : '竞价'; //是否套餐经纪人 $out['isCombo'] = $brokerInfo['PAYTYPE'] == 9999 ? 1 : 0; //套餐城市是否显示推广按钮,以及提示 $out['spreadFlagInfo'] = array('spreadFlag' => 1, 'info' => ''); if ($out['isCombo']) { $comboCheck = Bll_Combo_HouseRelation::housePublishComboCheck($out['ajkBrokerId'], $cityId, Bll_Combo_HouseRelation::SITE_TYPE_JP); if ($comboCheck['status'] != 1) { $out['spreadFlagInfo'] = array('spreadFlag' => 0, 'info' => $comboCheck['msg']); } } // 获取全部图片分类信息(用于编辑时候默认展示分类情况) $arrCategory = array(); $arrAllCates = Model_Image_Category::get_img_cates_by_type('shop'); $arrCategory['all'] = $arrAllCates; $arrCategory['classify'] = array_fill_keys(array_keys($arrAllCates), 0); $out['arrCategory'] = $arrCategory; // 描述引导 $out['descGuide'] = self::getShopDescGuideTitle($type); //编辑图片,用于展示退回照片模块 $out['editPic'] = $params['edit_pic']; //北上广深 四城市 $citySpecial = array('13', '14'); $out['priceType'] = in_array($jpCityId, $citySpecial) ? 1 : 0; $out['isPost'] = $request->is_post_method(); if ($type == 'rent') { //交租方式 $out['rentModeFirst'] = Model_House_JpShopRent::getRentModeFirst(); $out['rentModeSecond'] = Model_House_JpShopRent::getRentModeSecond(); } //---------是否编辑---------------// $shopInfo = array(); $shopId = 0; $propertyId = 0; // 初始化参数 $matches = $request->get_router_matches(); if (isset($matches[2]) && !empty($matches[2])) { $shopId = intval($matches[2]); $shopInfo = $type == 'rent' ? Model_House_JpShopRent::getPropInfoById($shopId) : Model_House_JpShopSale::getPropInfoById($shopId); $propertyId = $shopInfo['propertyId']; } $out['isEdit'] = empty($shopInfo) ? 0 : 1; //四选一弹层 $out['bolFlag'] = $out['isEdit'] || !isset($params['from']) ? 0 : 1; $out['shopInfo'] = $shopInfo; $out['shopId'] = $shopId; if (!$out['isCombo']) { $planInfo = BLL_House_JpHouseManage::getFixPlanInfo($shopId); if ($out['isEdit'] && $planInfo['success'] && $planInfo['data']['status'] == 3) { //定价计划状态为3,不可编辑 return array('status' => 'error', 'errCode' => Const_PublishCode::UNKNOWN_ERROR); } } //新发,需要验证房源发布套数限制 if (!$out['isEdit']) { if (BLL_House_JpHouseManage::houseNumLimit($out['brokerInfo']['jpMemberId'], $out['ajkBrokerId'], true)) { //保存漏斗日志 if ($out['isPost']) { $houseType = Bll_Loudou_Log::jinpuHouseType('shop', $type); $str = ''; switch ($params['goto_next_step']) { case 'planCombo': case 'planFix': $str = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_OTHERS; break; case 'justSaveHouse': $str = Bll_Loudou_Log::RESULT_TYPE_SAVE_FAILED_HOUSE_MAX_LIMIT; break; } $logGiveArr[] = array('func' => array('Bll_Loudou_log', 'add'), 'params' => array($houseType, $str, Bll_Loudou_Log::SOURCE_TYPE_FORM)); } return array('status' => 'error', 'errCode' => Const_PublishCode::PUBLISH_OUT_OF_LIMIT); } } //经营信息模块的配置信息 list($out['enumShopType'], $out['enumShopMatching'], $out['enumShopIndustry'], $out['enumShopIndustryLimit'], $out['enumShopPassengerType']) = BLL_House_JpProperty::getShopEnum(); //页面精品房源url $out['exquisiteUrl'] = BLL_Plan_JpPlanUrl::buildHelpUrl('1026'); //页面经典范例url $out['exampleTitleUrl'] = BLL_Plan_JpPlanUrl::buildHelpUrl('1044'); //页面房源描述下方经典范例url $out['exampleDescUrl'] = BLL_Plan_JpPlanUrl::buildHelpUrl('1045'); //房源发布协议url $out['contractUrl'] = BLL_Plan_JpPlanUrl::buildHelpUrl('554'); //房源PPC价格段信息 $out['ppcInfo'] = Bll_Plan_JpPlanManage::getInstance()->getPPCPrice($jpCityId, $type == 'rent' ? 3 : 4); //城市区域列表,选择区域使用 $out['districts'] = Model_Jinpu_District::getCityDistricts($jpCityId); //经纪人定价推广组信息 $out['fixPlanInfo'] = $out['isCombo'] ? array() : Bll_Plan_JpPlanManage::getInstance()->getBrokerFixPlans($out['brokerInfo']['jpMemberId']); if ($out['isEdit']) { //编辑状态下的特殊信息 //编辑 验证房源是否属于经纪人 if ($out['brokerInfo']['jpMemberId'] != $out['shopInfo']['memberId']) { return array('status' => 'error', 'errCode' => Const_PublishCode::NOT_OWN_HOUSE); } //房源交租方式(付一押一) list($out['rentModelFirst'], $out['rentModelSecond']) = explode(',', $shopInfo['rentMode']); //单层 多层 独栋 $out['floorType'] = 1; if ($shopInfo['isFullFloor']) { $out['floorType'] = 3; } elseif ($shopInfo['upFloor']) { $out['floorType'] = 2; } //房源推广信息,被编辑的房源是否在推广中 $houseCanSpread = 1; if ($out['isCombo']) { $houseCombo = Model_Combo_HouseRelation::getOnlineHousebyHouseId($out['ajkBrokerId'], $shopId, $cityId, Model_Combo_HouseRelation::SITE_TYPE_JP); if (!empty($houseCombo)) { $houseCanSpread = 0; } } else { $shopIdx = Model_House_JpHouseIdx::data_access()->filter('id', $shopId)->get_row(); if (!empty($shopIdx['fixSpreadId'])) { $houseCanSpread = 0; } } $out['houseCanSpread'] = $houseCanSpread; //图片退回信息 $out['backRows'] = array(); if ($shopId && $out['isEdit']) { $out['backRows'] = Bll_Image_JpHouseImage::getBackRows($shopId, $type == 'rent' ? 3 : 4); } //房源描述 $desc = $type == 'rent' ? Model_Jinpu_ShopRentDesc::getByPk($shopId) : Model_Jinpu_ShopSaleDesc::getByPk($shopId); $out['shopDesc'] = $desc['desc']; //房源物业信息 $out['propertyData'] = $propertyData = (array) BLL_House_JpProperty::getProperty($shopInfo['propertyId']); if (!$propertyData) { return array('status' => 'error', 'errCode' => Const_PublishCode::NOT_OWN_HOUSE); } if ($propertyData['isRoad'] == 1 && ($shopInfo['districtId'] || !$shopInfo['blockId'])) { $out['forceBlockEdit'] = true; } elseif ($propertyData['isRoad'] == 0 && (!$propertyData['districtId'] || !$propertyData['blockId'])) { $out['forceBlockEdit'] = true; } if (!$out['forceBlockEdit']) { //逻辑好多啊 妹子的 $districtIdForSearch = !$propertyData['isRoad'] ? $propertyData['districtId'] : $shopInfo['districtId']; $blockIdForSearch = !$propertyData['isRoad'] ? $propertyData['blockId'] : $shopInfo['blockId']; $districtInfo = Model_Jinpu_District::data_access()->filter('id', $districtIdForSearch)->get_row(); $districtName = $districtInfo['is_actived'] == 1 ? $districtInfo['name'] : ''; $blockInfo = Model_Jinpu_Block::data_access()->filter('id', $blockIdForSearch)->get_row(); $blockName = $blockInfo['isActived'] == 1 ? $blockInfo['name'] : ''; $titleStr = $districtName . ' ' . $blockName . ' ' . (!$propertyData['isRoad'] ? $propertyData['address'] : '') . (!empty($shopInfo['closeRoad']) ? '靠近:' . $shopInfo['closeRoad'] : ''); $showStr = strlen($titleStr) > 90 ? Util_GlobalFunc::cutchar($titleStr, 28) : $titleStr; $out['titleStr'] = $titleStr; $out['showStr'] = $showStr; } $out['hasLibrary'] = BLL_House_JpProperty::hasLibrary($out['brokerInfo']['jpMemberId'], $shopInfo['propertyId'], 'property'); //房源图片查询和排序 $images = self::handleShopImages($shopId, $type); //个人图库图片是否被锁定 foreach ($images as $key => $imgVal) { $imgVal['isLock'] = 0; if ($imgVal && $imgVal['personalImgId']) { $personalImg = Model_Jinpu_PersonalGallery::getImgById($imgVal['personalImgId']); if ($personalImg && $personalImg->category) { $imgVal['isLock'] = 1; } } if ($imgVal['category'] && isset($out['arrCategory']['classify'][intval($imgVal['category'])])) { $out['arrCategory']['classify'][intval($imgVal['category'])] += 1; } $images[$key] = $imgVal; } $out['images'] = $images; } $lng = $lat = $mapDataFlag = 0; //地图标注商铺位置的逻辑 $DShopMap = Model_Jinpu_MapShop::getByPK($shopId); if (!empty($DShopMap)) { $lng = $DShopMap['lng']; $lat = $DShopMap['lat']; $mapDataFlag = 1; } else { if ($propertyId > 0) { $shopLocation = Model_Jinpu_MapProperty::getPropertyMapById($propertyId); if (!empty($shopLocation)) { $lng = $shopLocation['lng']; $lat = $shopLocation['lat']; } } else { list($lng, $lat) = BLL_House_JpHouseManage::getDefaultMap($out['brokerInfo']['CITYID']); } $mapDataFlag = 0; } $out['lng'] = $lng; $out['lat'] = $lat; $out['mapDataFlag'] = $mapDataFlag; return array('status' => 'ok', 'info' => $out, 'logArr' => $logGiveArr); }
/** * @return bool * post之后的处理 */ public function afterPost() { $loudouLogResultType = $url = ''; $params = APF::get_instance()->get_request()->get_parameters(); $resultCode = Const_PublishCode::HOUSE_SAVE_SUCCESS; if ($params['goto_next_step'] == 'planFix') { // 添加至定价计划 $arrResult = Bll_Plan_JpPlanManage::getInstance()->addHouseToSpread($this->jpMemberId, $this->officeId, intval($params['fix_plan_id'])); if ($arrResult['success'] == true) { $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_SUCCESS; $resultCode = Const_PublishCode::HOUSE_SPREAD_SUCCESS; } else { // 添加定价计划失败,跳转 switch ($arrResult['err_code']) { case Const_PublishCode::SPREAD_PROP_OUT_LIMIT: // 房源定价推广失败 - 已经超出推广房源上限(定价推广房源已满50套) $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_HOUSE_MAX_LIMIT; break; case Const_PublishCode::SPREAD_PROP_HANDLE_STOP: // 房源定价推广失败 - 定价推广计划手动停止 $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_PLAN_MANUALLY_STOPPED; break; case Const_PublishCode::SPREAD_PROP_BALANCE_ERROR: // 房源定价推广失败 - 账户余额不足 $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_NO_BALANCE; break; case Const_PublishCode::SPREAD_PROP_AUDITED_ERROR: // 房源定价推广失败 - 认证未通过 $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_AUDITED_FAILED; break; case Const_PublishCode::SPREAD_PROP_BUDGET_OVER: // 房源定价推广失败 - 定价计划限额花完 $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_PLAN_NO_BUDGET; break; default: $arrResult['err_code'] = Const_PublishCode::UNKNOWN_ERROR; break; } $resultCode = $arrResult['err_code']; } } elseif ($params['goto_next_step'] == 'planCombo') { $comboResult = Bll_Combo_HouseRelation::houseStartComboSpreadV2($this->brokerId, $this->cityId, $this->officeId, Bll_Combo_HouseRelation::SITE_TYPE_JP); //todo 错误提示 if ($comboResult['status'] == 1) { $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_SUCCESS; $resultCode = Const_PublishCode::HOUSE_SPREAD_SUCCESS; } else { switch ($comboResult['status']) { case -1: case -2: $resultCode = Const_PublishCode::SPREAD_PROP_NO_COMBO; break; case -3: $resultCode = Const_PublishCode::SPREAD_PROP_COMBO_ACTIVE; break; case -4: case -5: $resultCode = Const_PublishCode::SPREAD_PROP_COMBO_LIMIT; break; case -6: $resultCode = Const_PublishCode::SPREAD_PROP_COMBO_FAIL; break; } $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_FIX_FAILED_OTHERS; } } elseif ($params['goto_next_step'] == 'justSaveHouse') { $loudouLogResultType = Bll_Loudou_Log::RESULT_TYPE_SAVE_SUCCESS; $resultCode = Const_PublishCode::HOUSE_SAVE_SUCCESS; } $loudouLogHoustType = Bll_Loudou_Log::jinpuHouseType('office', 'rent'); $this->logGiveArr[] = array('func' => array('Bll_Loudou_log', 'add'), 'params' => array($loudouLogHoustType, $loudouLogResultType, Bll_Loudou_Log::SOURCE_TYPE_FORM)); $this->redirect2Result($resultCode, self::SITE_JP, $this->act, $this->officeId); return true; }
public static function change_prop_price($params) { $all_return = array("队列(" . $params['id'] . ")开始处理"); $houseStatus = json_decode($params['remark'], 1); //根据查询结果判定房源是否在线 if (Bll_City::isComboCity($params['city_id'])) { $houseRelationList = Bll_Combo_HouseRelation::getHouseRelation($params['broker_id'], $params['city_id'], array($params['pro_id']), Bll_Combo_HouseRelation::SITE_TYPE_JP); if (empty($houseRelationList)) { $all_return[] = '房源套餐关系为空'; return self::build_return(1, $all_return); } foreach ($houseRelationList as $houseRelation) { if (Bll_Combo_HouseRelation::isRelationOnline($houseRelation['state'])) { $data = self::build_prop_log($params, 4, '房源更新;队列表id为' . $params['id'], $params['broker_id']); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = '房源更新日志写入失败'; } else { $all_return[] = '房源更新日志写入成功'; } } } // return self::build_return(1, $all_return); } //PPC经纪人 房源是否在线 $isHouseOnline = Bll_Plan_JpPlanManage::getInstance()->isHouseOnline($params['pro_id']); if ($isHouseOnline) { //写房源更新solr日志 $data = self::build_prop_log($params, 4, "房源价格变更需要更新solr", $params['broker_id']); $houseStatus['newPrice'] = $houseStatus['price']; $houseStatus['msg'] = $data['remark']; $data['remark'] = json_encode($houseStatus); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = "房源" . $params['pro_id'] . "更新solr成功"; //价格变更需要重新rebuild房源的spreadPrice字段 Bll_Plan_JpPlanManage::getInstance()->rebuildSpreadPrice($params['pro_id'], true); } else { $all_return[] = "房源" . $params['pro_id'] . "更新solr失败"; } } //写房源修改价格日志 $data = self::build_prop_log($params, 2, "房源修改价格", $params['broker_id']); $houseStatus['newPrice'] = $houseStatus['price']; $houseStatus['msg'] = $data['remark']; $data['remark'] = json_encode($houseStatus); if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { $all_return[] = '房源修改价格日志写入成功'; return self::build_return(1, $all_return); } else { $all_return[] = '房源修改价格日志写入失败'; return self::build_return(0, $all_return); } }
/** * 把房源从竞价推广中移除 * @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' => '操作成功'); } }
protected static function checkPriceChange($params = array(), $spreadInfo, $houseInfo) { $result = array('res' => false, 'msg' => '', 'priceId' => 0, 'newPriceId' => 0); if (!isset($params['oldPrice']) || !isset($params['newPrice'])) { $result['msg'] = '请传入oldPrice和price'; return $result; } if ($spreadInfo->houseType == 1 || $spreadInfo->houseType == 3) { if (!isset($params['oldArea'])) { $result['msg'] = '请传入oldArea'; return $result; } } $oldPrice = intval($params['oldPrice']); $newPriceArr = Bll_House_JpHouseInfo::getPrice($spreadInfo->cityId, $spreadInfo->houseType, $houseInfo['info']); if ($spreadInfo->houseType == 1) { //dailyRent $oldSpreadPriceArr = Bll_Plan_JpPlanManage::getInstance()->getSpreadPriceByPrice($oldPrice, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_RENT, $spreadInfo->cityId); //计算出租房源定价 $newSpreadPriceArr = Bll_Plan_JpPlanManage::getInstance()->getSpreadPriceByPrice($houseInfo['info']->monthlyRent, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_RENT, $spreadInfo->cityId); //计算出租房源定价 $houseInfo['info']->dailyRent = round($oldPrice / $params['oldArea'] / 30.42, 2); $houseInfo['info']->monthlyRent = $oldPrice; } elseif ($spreadInfo->houseType == 2) { //totalPrice $houseInfo['info']->totalPrice = $oldPrice; } elseif ($spreadInfo->houseType == 3) { //dailyRent $oldSpreadPriceArr = Bll_Plan_JpPlanManage::getInstance()->getSpreadPriceByPrice($oldPrice, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT, $spreadInfo->cityId); //计算出租房源定价 $newSpreadPriceArr = Bll_Plan_JpPlanManage::getInstance()->getSpreadPriceByPrice($houseInfo['info']->monthlyRent, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT, $spreadInfo->cityId); //计算出租房源定价 $houseInfo['info']->dailyRent = round($oldPrice / $params['oldArea'] / 30.42, 2); $houseInfo['info']->monthlyRent = $oldPrice; } else { //totalPrice $houseInfo['info']->totalPrice = $oldPrice; } $oldPriceArr = Bll_House_JpHouseInfo::getPrice($spreadInfo->cityId, $spreadInfo->houseType, $houseInfo['info']); if ($spreadInfo->houseType == 1 || $spreadInfo->houseType == 3) { if ($oldPriceArr['price_id'] == $newPriceArr['price_id']) { //价格区间是否一致 if ($oldSpreadPriceArr['id'] == $newSpreadPriceArr['id']) { //定价价格段是否一致 $result['res'] = true; $result['msg'] = '价格段没有变更不需要处理'; return $result; } } } else { if ($oldPriceArr['price_id'] == $newPriceArr['price_id']) { //价格区间是否一致 $result['res'] = true; $result['msg'] = '价格段没有变更不需要处理'; return $result; } } $result['res'] = true; $result['msg'] = ''; $result['oldPriceId'] = $oldPriceArr['price_id']; $result['newPriceId'] = $newPriceArr['price_id']; return $result; }