예제 #1
0
 /**
  * 手动暂停好租经纪人的定价计划
  *
  * @param int $hzBrokerId
  * @param int $cityId
  * @param array $fixPlan
  */
 private function stopHzFixPlan($hzBrokerId, $cityId, $fixPlan)
 {
     $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($hzBrokerId);
     if ($ajkBrokerId == 0) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]获取经纪人ajkBrokerId失败。', $cityId, $hzBrokerId, $fixPlan['id']));
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]的好租定价计划,处理开始。', $cityId, $ajkBrokerId, $hzBrokerId));
     $data = array('houseId' => 0, 'planId' => 0, 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'type' => 207, 'remark' => '切新端口,暂停定价计划', 'flag' => 0, 'addDate' => time(), 'dealRemark' => '', 'operateId' => 0, 'from' => __METHOD__, 'siteType' => 2);
     $this->logMsg(json_encode($fixPlan));
     if ($fixPlan['status'] == Const_HzPlan::MANUALLY_PAUSE) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d]已经手动暂停,不做处理。', $cityId, $hzBrokerId, $ajkBrokerId, $fixPlan['id']));
         return;
     }
     if (false == Bll_HzFixPlan::stopPlanByHand($fixPlan['id'])) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]手动暂停失败。', $cityId, $hzBrokerId, $ajkBrokerId, $fixPlan['id'], $fixPlan['status']));
         return;
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]手动暂停成功。', $cityId, $hzBrokerId, $ajkBrokerId, $fixPlan['id'], $fixPlan['status']));
     if ($fixPlan['status'] != Const_HzPlan::SPREAD) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d]已经暂停,不通知上下架。', $cityId, $hzBrokerId, $ajkBrokerId, $fixPlan['id']));
         return;
     }
     /**
      * 记录上下架队列
      */
     $data['planId'] = $fixPlan['id'];
     if (!Model_House_UpDown_Task::create($data, date('Ymd'))->save()) {
         $this->logMsg(sprintf('%s 记录上下架队列失败。', json_encode($data)));
     } else {
         $this->logMsg(sprintf('%s 记录上下架队列成功。', json_encode($data)));
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]的好租定价计划,处理结束。', $cityId, $hzBrokerId, $hzBrokerId));
 }
예제 #2
0
 /**
  * 通知SOLR下架房源
  *
  * @param $cityId
  * @param $hzBrokerId
  * @param $houseId
  * @param int $ajkBrokerId
  */
 private function noticeComboSolr($cityId, $hzBrokerId, $houseId, $ajkBrokerId = 0)
 {
     if ($ajkBrokerId == 0) {
         $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($hzBrokerId);
     }
     $result = Bll_Combo_NoticeSolrUpDown::noticeChoiceSolrZfAPI($cityId, $ajkBrokerId, $houseId, 2, Bll_Combo_NoticeSolrUpDown::SOLR_ACTION_DOWN, Bll_Combo_NoticeSolrUpDown::HLS_FROM_HOUSE_STATE_REPAIR);
     $this->setLog(sprintf('通知房源[%d]solr下架,result: %s', $houseId, json_encode($result)));
 }
예제 #3
0
 public function dealTask($task)
 {
     // 获取ajkBrokerId
     if (!($ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($task['userid']))) {
         printf('获取二手房brokerId失败, hzBrokerId: %s ' . PHP_EOL, $task['userid']);
         return false;
     }
     // 重新通知上下架房子删除
     Bll_Combo_HouseRelation::notifyHouseUpDownTask($ajkBrokerId, $task['proid'], $task['cityid'], Bll_Combo_HouseRelation::SITE_TYPE_HZ, 105, '房源状态为4,由job通知上下架房子删除', __METHOD__, $ajkBrokerId);
     printf('房源 %s 成功通知上下架队列' . PHP_EOL, $task['proid']);
     return true;
 }
예제 #4
0
 /**
  * 修复 `broker_mapping` 表
  *
  * @param $hzBrokerId
  * @param $ajkBrokerId
  * @return bool
  */
 private function repairBrokerMapping($hzBrokerId, $ajkBrokerId)
 {
     $ajkBrokerIdTmp = Model_Broker_HzMapping::get_ajk_broker_id($hzBrokerId);
     $hzBrokerIdTmp = Model_Broker_HzMapping::get_hz_broker_id(${$ajkBrokerId});
     /** 经纪人映射关系正确 */
     if ($ajkBrokerId == $ajkBrokerIdTmp && $hzBrokerId == $hzBrokerIdTmp) {
         return true;
     }
     Model_Broker_HzMapping::deleteByHzBrokerId($hzBrokerId);
     Model_Broker_HzMapping::deleteByAjkBrokerId($ajkBrokerId);
     if (Model_Broker_HzMapping::addMapping($hzBrokerId, $ajkBrokerId) == 1) {
         $this->log(sprintf('经纪人关系(%d, %d)映射添加成功', $hzBrokerId, $ajkBrokerId));
         return true;
     }
     $this->log(sprintf('经纪人关系(%d, %d)映射添加失败', $hzBrokerId, $ajkBrokerId));
     return false;
 }
 private function moveHzPPCFixPlanRelation($cityId, $hzBrokerId, $fixPlan)
 {
     $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($hzBrokerId);
     if ($ajkBrokerId == 0) {
         $this->logMsg(sprintf('经纪人[%d - %d]没有获取到二手房经纪人ID。', $cityId, $hzBrokerId));
         return;
     }
     $fixPlanId = $fixPlan['id'];
     $fixPlanHouseRelationList = Model_Plan_HzPlanning::getHouseFixPlanRelation($hzBrokerId, $fixPlanId);
     if (empty($fixPlanHouseRelationList)) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d - %d]没有获取到好租定价计划房源', $cityId, $ajkBrokerId, $hzBrokerId, $fixPlanId));
         return;
     }
     foreach ($fixPlanHouseRelationList as $fixPlanHouseRelation) {
         $comboHouseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($fixPlanHouseRelation['proid'], Model_Combo_HouseRelation::SITE_TYPE_HZ);
         if (!empty($comboHouseRelation)) {
             if ($comboHouseRelation['state'] == Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE) {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],且state==205', $fixPlanHouseRelation['proid'], $comboHouseRelation['id']));
                 continue;
             }
             if (1 == Bll_Combo_HouseRelation::updateComboStatusById($comboHouseRelation['id'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, Model_Combo_HouseRelation::SITE_TYPE_HZ)) {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新成功', $fixPlanHouseRelation['proid'], $comboHouseRelation['id']));
             } else {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新失败', $fixPlanHouseRelation['proid'], $comboHouseRelation['id']));
             }
             continue;
         }
         $data = array('houseId' => $fixPlanHouseRelation['proid'], 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'state' => Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, 'created' => $fixPlanHouseRelation['last_update']);
         if (1 == Model_Combo_HouseRelation::create($data, Model_Combo_HouseRelation::SITE_TYPE_HZ)->save()) {
             $this->logMsg(sprintf('房源[%d]转移成功', $fixPlanHouseRelation['proid']));
         } else {
             $this->logMsg(sprintf('房源[%d]转移失败', $fixPlanHouseRelation['proid']));
         }
     }
 }
예제 #6
0
 /**
  * 租房精选房源取消推广
  * 1. 维护计划状态
  * 2. 通知solr上下
  */
 public static function choicePropOutBid($broker_id, $proid)
 {
     $flag_array = array('status' => 0, 'msg' => '');
     //获取精选 房源、计划关系表信息(promotion_prop_planning)
     $planning = Dao_Broker_HzPlan::get_prop_all_planning($proid, Const_HzPlan::BID_TYPE);
     if (empty($planning)) {
         $flag_array['msg'] = Const_HzErrorInfo::PROPFIXNULL;
         return $flag_array;
     }
     //根据计划查询精选计划的信息
     $plan_info = Dao_Broker_HzPlan::get_plan($planning[0]['plan_id']);
     if (empty($plan_info)) {
         $flag_array['msg'] = Const_HzErrorInfo::NULLPLAN;
         return $flag_array;
     }
     //判断计划是否为该经纪人的
     if ($plan_info['user_id'] != $broker_id) {
         $flag_array['msg'] = Const_HzErrorInfo::PLANINFOERROR;
         return $flag_array;
     }
     //获取精选计划的冻结号
     $sn = Dao_Broker_HzPlan::get_bid_sn($plan_info['id']);
     $sn = $sn['sn'];
     if (empty($sn)) {
         $flag_array['msg'] = Const_HzErrorInfo::PROPERROR;
         return $flag_array;
     }
     //获取精选花费
     // $amount = $plan_info['total_consume'];
     $amount = $plan_info['amount'] - $plan_info['total_consume'];
     $note = urlencode('推广房源' . $proid);
     $user_id = Bll_HzBroker::get_userid_by_hzbrokerid($broker_id);
     /** 精选结算 调用3次 */
     $charge_sn = false;
     $unfreezeOrderData = array('userId' => $user_id, 'proId' => $proid, 'serialNumber' => $sn, 'planId' => $plan_info['id'], 'amount' => $amount);
     $unfreezeOrder = Bll_Ppc_BidUnfreeze::createHzOrder($unfreezeOrderData);
     for ($i = 0; $i < 3 && !$charge_sn; $i++) {
         $charge_sn = Bll_PayAccount::cancel_frozen($user_id, $amount, $proid, Const_PaymentApp::HZ_CHOICE, $sn, $note, true);
     }
     if (!$charge_sn) {
         $unfreezeOrder->fail();
         $flag_array['msg'] = Const_HzErrorInfo::CHARGEFAIL;
         // 此处不需要block,由job保证此处解冻正确
         //return $flag_array;
     } else {
         $unfreezeOrder->complete();
     }
     //查询房源信息
     $proInfo = Model_House_HzProp::get_prop_info_by_prop_id($proid);
     //房源违规的、删除的不能更新房源状态
     $prop_status = $proInfo['contentBasic']['status'];
     // 兼容新套餐
     $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($broker_id);
     if (Bll_Broker_HzBroker::isComboBroker($ajkBrokerId)) {
         /** 判断房源是否在套餐推广中 */
         if (!Bll_Combo_HouseRelation::getOnlineRelationByHouseId($proid, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) {
             $prop_status = Const_HzStatus::OUTLINE;
         }
     } else {
         //查询房源是否在计划里面
         $fix_planning = Dao_Broker_HzPlan::get_prop_planning($proid, Const_HzPlan::SPREAD_TYPE);
         if (!in_array($proInfo['contentBasic']['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) {
             if (empty($fix_planning)) {
                 //房源不在计划里面
                 $prop_status = Const_HzStatus::OUTLINE;
                 //房源不在计划里面
             } elseif ($fix_planning[0]['is_valid'] == Const_HzPlan::SPREAD) {
                 $prop_status = Const_HzStatus::ONLINE;
                 //定价正在推广
             } elseif ($fix_planning[0]['is_valid'] == Const_HzPlan::UPPERLIMIT) {
                 //定价非推广(没钱状态)
                 $prop_status = Const_HzStatus::NOCASH;
                 //房源没钱
             } else {
                 $prop_status = Const_HzStatus::MANUALLY;
                 //房源状态更新为9手动停止
             }
         }
     }
     //维护精选关联关系
     if (!Dao_Broker_HzPlan::update_planning($planning[0]['id'], Const_HzPlan::MENUOVER)) {
         $flag_array['msg'] = Const_HzErrorInfo::UPDATAPLANNINGFAIL;
         return $flag_array;
     }
     //维护计划状态
     if (!Dao_Broker_HzPlan::update_plan_status($plan_info['id'], Const_HzPlan::MENUOVER)) {
         $flag_array['msg'] = Const_HzErrorInfo::UPDATAPLANFAIL;
         return $flag_array;
     }
     //通知solr
     if ($prop_status == Const_HzStatus::ONLINE) {
         //定价正在推广
         Dao_Broker_HzProp::into_prop_lucene($proid, $planning[0]['city_id'], 1);
         //竞价下,定价还在线。则更新上
     } else {
         Dao_Broker_HzProp::into_prop_lucene($proid, $planning[0]['city_id'], 2);
         //下线房源
     }
     $flag_array['status'] = 1;
     return $flag_array;
 }
예제 #7
0
 /**
  * 将单个房源从定价组中移除
  */
 public static function prop_out_fix($broker_id, $proid, $plan_id)
 {
     $flag_array = array('status' => 0, 'msg' => '');
     $proinfo = Dao_Broker_HzProp::get_prop($proid);
     if (empty($proinfo[$proid])) {
         $flag_array['msg'] = Const_HzErrorInfo::PROPNULL;
         return $flag_array;
     }
     $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'] != $broker_id) {
         $flag_array['msg'] = Const_HzErrorInfo::PLANINFOERROR;
         return $flag_array;
     }
     if ($proinfo[$proid]['content_basic']['userid'] != $plan_info['user_id']) {
         $flag_array['msg'] = Const_HzErrorInfo::PROPUSERNULL;
         return $flag_array;
     }
     $planning = Dao_Broker_HzPlan::get_check_planning($proid, $plan_id);
     if (empty($planning)) {
         $flag_array['msg'] = Const_HzErrorInfo::PROPFIXNULL;
         return $flag_array;
     }
     //写入定价上下架队列表
     $ProPlanChangeApiBll = Bll_ProPlanChangeApiBll::get_instance();
     $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($broker_id);
     $ProPlanChangeApiBll->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' => 1))), 'site_type' => 2), $ajkBrokerId);
     $bid = Dao_Broker_HzPlan::get_prop_planning($proid, Const_HzPlan::BID_TYPE, '1');
     if (!empty($bid)) {
         //停止竞价
         $deleteBidResult = Bll_HzBidPlan::delete_bid($broker_id, $bid[0]['plan_id'], $proid);
     }
     $log_option = Const_HzLog::PAUSEPLAN;
     $new_is_valid = Const_HzPlan::MENUPAUSE;
     $basic_info = $proinfo[$proid]['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);
             }
             $flag_array['status'] = 1;
             return $flag_array;
         }
     }
     $flag_array['msg'] = Const_HzErrorInfo::DATAFAIL;
     return $flag_array;
 }
예제 #8
0
 /**
  * 根据租房经纪人ID获取二手房经纪人ID
  * @param $brokerId
  * @return int
  */
 public static function getAjkBrokerByhzBrokerId($brokerId)
 {
     return Model_Broker_HzMapping::get_ajk_broker_id($brokerId);
 }
예제 #9
0
 /**
  * 根据好租经纪人Id获取二手房经纪人Id
  *
  * @param int $hzBrokerId
  * @return int
  */
 private function getAjkBrokerId($hzBrokerId)
 {
     $ajkBrokerId = Model_Broker_HzMapping::get_ajk_broker_id($hzBrokerId);
     return intval($ajkBrokerId);
 }