/** * 删除房源,可批量 */ public static function delete_prop($hzBrokerId, $city_id, $proids) { // 获取二手房经纪人ID,用于基于房源定价上下架日志 $ajkBrokerId = Model_Broker_MainBusiness::getMainBusinessByHzBrokerId($hzBrokerId)->ajkBrokerid; $proinfo = Dao_Broker_HzProp::get_prop($proids); foreach ($proinfo as $proid => $prop) { $basic_info = $prop['content_basic']; if ($basic_info['cityid'] != $city_id || $basic_info['userid'] != $hzBrokerId) { continue; } $fix_planning = Dao_Broker_HzPlan::get_prop_planning($proid); if (!empty($fix_planning)) { Bll_HzFixPlan::prop_out_fix($hzBrokerId, $proid, $fix_planning[0]['plan_id']); } Dao_Broker_HzProp::change_prop_status($proid, Const_HzStatus::REMOVE); // 记录房源定价上下架记录 Bll_ProPlanChangeApiBll::get_instance()->insertProPlanChange(array('broker_id' => $ajkBrokerId, 'pro_id' => $proid, 'plan_id' => $fix_planning ? $fix_planning[0]['plan_id'] : '', 'type' => 'pro_del', 'from' => 'hz_' . __CLASS__ . '_' . __FUNCTION__, 'remark' => '删除房源', 'site_type' => 2), $ajkBrokerId); } return true; }
/** * 批量将房源从定价组中移除 */ public static function batchprop_out_fix($hzBrokerId, $proids, $plan_id) { $flag_array = array('status' => 0, 'msg' => ''); $plan_info = Dao_Broker_HzPlan::get_plan($plan_id); if (empty($plan_info)) { $flag_array['msg'] = Const_HzErrorInfo::NULLPLAN; return $flag_array; } if ($plan_info['user_id'] != $hzBrokerId) { $flag_array['msg'] = Const_HzErrorInfo::PLANINFOERROR; return $flag_array; } // 获取二手房经纪人ID,用于基于房源定价上下架日志 $ajkBrokerId = Model_Broker_MainBusiness::getMainBusinessByHzBrokerId($hzBrokerId)->ajkBrokerid; $proinfo = Dao_Broker_HzProp::get_prop($proids); if ($proinfo) { foreach ($proinfo as $prop) { $proid = $prop['proid']; $planning = Dao_Broker_HzPlan::get_check_planning($proid, $plan_id); if (empty($planning)) { continue; } if ($prop['content_basic']['userid'] != $plan_info['user_id']) { continue; } $bid = Dao_Broker_HzPlan::get_prop_planning($proid, Const_HzPlan::BID_TYPE, '1,3,7'); if (!empty($bid)) { //停止竞价 Bll_HzBidPlan::delete_bid($hzBrokerId, $bid[0]['plan_id'], $proid); } $log_option = Const_HzLog::PAUSEPLAN; $new_is_valid = Const_HzPlan::MENUPAUSE; $basic_info = $prop['content_basic']; //更新房源计划信息 if (Dao_Broker_HzProp::change_prop_status($proid, Const_HzStatus::OUTLINE)) { //更新房源状态 if (Dao_Broker_HzPlan::update_planning($planning[0]['id'], $new_is_valid)) { //更新关联关系 Dao_Broker_HzPlan::add_prop_log($proid, $log_option, $basic_info['userid'], $plan_id, $basic_info['status'], Const_HzStatus::OUTLINE); //记房源日志 if ($basic_info['status'] == Const_HzStatus::ONLINE) { //插入solr队列,房源下线 Dao_Broker_HzProp::into_prop_lucene($proid, $basic_info['cityid'], 2); //写日志 Dao_Broker_HzProp::ezft_assistant_log($planning[0]['proid'], $basic_info['userid'], Const_HzPlan::SPREAD_TYPE, $basic_info['spread_type']); Dao_Broker_HzProp::add_updown_log($planning[0]['proid'], $plan_id, Const_HzStatus::GOOFFLINE, $log_option); } // 记录房源定价上下架记录 Bll_ProPlanChangeApiBll::get_instance()->insertProPlanChange(array('broker_id' => $ajkBrokerId, 'pro_id' => $proid, 'plan_id' => $plan_id, 'type' => 'pro_del_from_plan', 'from' => 'hz_' . __CLASS__ . '_' . __FUNCTION__, 'remark' => json_encode(array('fix' => array('plan_status' => $plan_info['status']))), 'site_type' => 2), $ajkBrokerId); } } } $flag_array['status'] = 1; return $flag_array; } $flag_array['msg'] = Const_HzErrorInfo::DATAFAIL; return $flag_array; }
/** * 修复 `ajk_broker_main_business` 表 * * @param $hzBrokerId * @param $ajkBrokerId * @param $memberId * @return bool */ private function repairBrokerMainBusiness($hzBrokerId, $ajkBrokerId, $memberId) { // TODO 修复 `ajk_broker_main_business` 表 $hzMainBusiness = Model_Broker_MainBusiness::getMainBusinessByHzBrokerId($hzBrokerId, false); $ajkMainBusiness = Model_Broker_MainBusiness::getMainBusinessByAjkBrokerId($ajkBrokerId, false); if (empty($hzMainBusiness) && empty($ajkMainBusiness)) { if (Model_Broker_MainBusiness::addMainBusiness($memberId, $hzBrokerId, $ajkBrokerId) == 0) { $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)失败', $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)成功', $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if ($hzMainBusiness['id'] == $ajkMainBusiness['id']) { $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)正确,无须修复', $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if (!empty($hzMainBusiness) && !empty($ajkMainBusiness)) { if ($hzMainBusiness['jpBrokerid'] == 0 && $ajkMainBusiness['jpBrokerid'] != 0) { $jpBrokerid = $ajkMainBusiness['jpBrokerid']; } elseif ($ajkMainBusiness['jpBrokerid'] == 0 && $hzMainBusiness['jpBrokerid'] != 0) { $jpBrokerid = $hzMainBusiness['jpBrokerid']; } else { $jpBrokerid = 0; } Model_Broker_MainBusiness::deleteMainBusinessById($hzMainBusiness['id']); Model_Broker_MainBusiness::deleteMainBusinessById($ajkMainBusiness['id']); if (Model_Broker_MainBusiness::addMainBusiness($memberId, $hzBrokerId, $ajkBrokerId, $jpBrokerid) == 0) { $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)失败2', $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('添加经纪人`ajk_broker_main_business`关系映射(%d, %d, %d)成功2', $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if (!empty($hzMainBusiness)) { $updateData = array('ajkBrokerid' => $ajkBrokerId, 'memberId' => $memberId); if (Model_Broker_MainBusiness::updateMainBusinessById($hzMainBusiness['id'], $updateData) == 0) { $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)失败', $hzMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)成功', $hzMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return true; } if (!empty($ajkMainBusiness)) { $updateData = array('hzBrokerid' => $hzBrokerId); if (Model_Broker_MainBusiness::updateMainBusinessById($ajkMainBusiness['id'], $updateData) == 0) { $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)失败2', $ajkMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return false; } $this->log(sprintf('更新经纪人`ajk_broker_main_business`(%d)关系映射(%d, %d, %d)成功2', $ajkMainBusiness['id'], $memberId, $ajkBrokerId, $hzBrokerId)); return true; } return true; }
/** * @param $ajkPropSpread * @param int $doBucket 0-不处理,1-坑位数加一,-1-坑位数减一 * @return bool * 精选计算排名 */ public function choiceComputeRank($blockId, $priceId) { //获取坑位表信息 $bucketInfo = Model_Choice_HzBidBucket::get_bucket_info($blockId, $priceId); if (empty($bucketInfo)) { return array('未知的坑位表信息,blockId:' . $blockId . ' priceId:' . $priceId); } //获取坑里面的推广、排队的计划 $bidPlanInfo = Model_Plan_HzPlanBasic::getChoiceQueuePlanByBucket($blockId, $priceId, array(Const_HzPlan::SPREAD, Const_HzPlan::WAITING)); if (empty($bidPlanInfo)) { return array('未获取到同板块、价格段的房源。blockId:' . $blockId . ' priceId:' . $priceId); } $tmpRemark = array(); //遍历坑里面的数据,计算排名 foreach ($bidPlanInfo as $key => $list) { $broker = Model_Broker_MainBusiness::getMainBusinessByHzBrokerId($list['user_id'], false); if ($key < $bucketInfo['maxOnlineNum']) { //预期推广中的数据 if ($list['status'] == Const_HzPlan::WAITING) { //更新租房排队中的计划为推广中 Model_Plan_HzPlanBasic::updatePlanStatus($list['id'], Const_HzPlan::SPREAD); //更新租房排队中的计划为推广中 Model_Plan_HzPlanning::updatePlanningByPlanId($list['id'], Const_HzPlan::SPREAD, Const_HzPlan::BID_TYPE); //查询精选关系表信息(获取到房源id) $bidPlanProInfo = Model_Plan_HzPlanning::getPlanByPlanId($list['id']); if (!empty($bidPlanProInfo)) { //更新房源状态 Dao_Broker_HzProp::change_prop_status($bidPlanProInfo['proid'], Const_HzStatus::ONLINE); } //通知solr队列上 Dao_Broker_HzProp::into_prop_lucene($bidPlanProInfo['proid'], $bidPlanProInfo['city_id'], 1); //记录房源日志 Model_Log_HouseLogNew::create(array('houseId' => $bidPlanProInfo['proid'], 'planId' => $bidPlanProInfo['plan_id'], 'brokerId' => $broker['ajkBrokerid'], 'cityId' => $bidPlanProInfo['city_id'], 'type' => 14, 'changeType' => '40' . self::$qInfo['actionId'], 'remark' => '计划' . self::$qInfo['planId'] . self::$actionStr[self::$qInfo['actionId']] . ';重新计算价格段内排名,精选推广', 'operatorId' => self::$qInfo['operationId'], 'siteType' => 2), date('Ymd'))->save(); $tmpRemark[] = 'planId:' . $bidPlanProInfo['plan_id'] . '变更为推广'; } } /* else { //预期排队的数据 if ($list['status'] == Const_HzPlan::SPREAD) { //更新租房排队中的计划为推广中 Model_Plan_HzPlanBasic::updatePlanStatus($list['id'], Const_HzPlan::WAITING); //更新租房排队中的计划为推广中 Model_Plan_HzPlanning::updatePlanningByPlanId($list['id'], Const_HzPlan::WAITING, Const_HzPlan::BID_TYPE); //查询精选关系表信息(获取到房源id) $bidPlanProInfo = Model_Plan_HzPlanning::getPlanByPlanId($list['id']); if (!empty($bidPlanProInfo)) { //查询定价的信息,定价推广中的话,房源状态更新为1 $fixPlanProInfo = Model_Plan_HzPlanning::getBrokerPro($bidPlanProInfo['proid'], Const_HzPlan::SPREAD_TYPE); if (isset($fixPlanProInfo[0]['is_valid']) && $fixPlanProInfo[0]['is_valid'] == Const_HzPlan::SPREAD) { $proStatus = Const_HzStatus::ONLINE; //推广 //更新房源状态 Dao_Broker_HzProp::change_prop_status($bidPlanProInfo['proid'], $proStatus); } } //通知solr队列上 Dao_Broker_HzProp::into_prop_lucene($bidPlanProInfo['proid'], $bidPlanProInfo['city_id'], $proStatus); //记录房源日志 Model_Log_HouseLogNew::create(array( 'houseId' => $bidPlanProInfo['proid'], 'planId' => $bidPlanProInfo['plan_id'], 'brokerId' => $broker['ajkBrokerid'], 'cityId' => $bidPlanProInfo['city_id'], 'type' => 13, //13-精选排队中,14-精选推广,15-取消精选推广,16-取消精选排队 'changeType' => '40' . self::$qInfo['actionId'], 'remark' => '计划' . self::$qInfo['planId'] . self::$actionStr[self::$qInfo['actionId']] . ';重新计算价格段内排名,精选排队中', 'operatorId' => self::$qInfo['operationId'], 'siteType' => 2, ), date('Ymd'))->save(); $tmpRemark[] = 'planId:' . $bidPlanProInfo['plan_id'] . '变更为排队中'; } } */ } if (empty($tmpRemark)) { $tmpRemark[] = '未找到需要变更的计划'; } return $tmpRemark; }