Example #1
0
 /**
  * 删除房源,可批量
  */
 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;
 }
Example #2
0
 /**
  * 批量将房源从定价组中移除
  */
 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;
 }
Example #3
0
 /**
  * 修复 `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;
 }
Example #4
0
 /**
  * @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;
 }