Example #1
0
 /**
  * 把经纪人因为套餐到期停止推广的房源(套餐规定的可推广房源数)重新上线,(按房源发布时间 倒序排列)
  * @return string
  */
 private function reUpExpireHouse()
 {
     $currentCombo = Bll_Combo_Broker_BrokerComboInfo::getBrokerCurrentCombo($this->params['ajk_broker_id'], Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_HZ);
     if (Bll_Combo_Broker_BrokerComboInfo::isOpenUp($currentCombo)) {
         return $this->allReturn[] = '打通套餐,好租不处理';
     }
     // 当前在线房源数
     $onLineSpreadHouseCount = Bll_Combo_HouseRelation::getOnLineSpreadHouseCount($this->params['ajk_broker_id'], Bll_Combo_HouseRelation::SITE_TYPE_HZ);
     $comboProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($this->params['ajk_broker_id']);
     // 套餐可以推广的房源数
     $comboProNum = isset($comboProNum['totalRentPropNum']) ? $comboProNum['totalRentPropNum'] : 0;
     if (!$comboProNum) {
         return $this->allReturn[] = "套餐可以推广的房源数0";
     }
     if ($onLineSpreadHouseCount >= $comboProNum) {
         return $this->allReturn[] = "在线推广房源数{$onLineSpreadHouseCount}, 套餐可推广房源数{$comboProNum},不需要上线套餐到期的房子";
     }
     $shouldUpNum = $comboProNum - $onLineSpreadHouseCount;
     $allExpireRelations = Bll_Combo_HouseRelation::getHouseRelations($this->params['ajk_broker_id'], Bll_Combo_HouseRelation::SITE_TYPE_HZ, Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE);
     if (empty($allExpireRelations)) {
         return $this->allReturn[] = "没有需要上线的推广房子";
     }
     // 房子有效性判断
     $num = 0;
     $shouldUpRelations = array();
     foreach ($allExpireRelations as $relation) {
         $proId = $relation['houseId'];
         if (!($propInfo = Bll_House_HzHouse::getPropInfo($proId, $relation['cityId'], 2))) {
             continue;
         }
         if (!$propInfo['status'] || in_array($propInfo['msg']['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) {
             continue;
         }
         if ($num < $shouldUpNum) {
             $shouldUpRelations[] = $relation;
         }
         $num++;
     }
     foreach ($shouldUpRelations as $comboRelation) {
         $this->params['pro_id'] = $comboRelation['houseId'];
         // 更新关系
         Bll_Combo_HouseRelation::updateComboStatusById($comboRelation['id'], Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE, Bll_Combo_HouseRelation::SITE_TYPE_HZ);
         // 维护房子状态
         Bll_HzPropBll::bulidHzProStatu($this->params['pro_id']);
         // 写入房源取消套餐推广日志
         $this->writePropLog(Const_ProLogType::LOG_ADD_INTO_COMBO, '开始套餐推广');
     }
 }
Example #2
0
 /**
  * 动作 7
  * 房源移出定价计划,导致竞价停止(房源日志发起)
  * 结算
  * 更新计划为停止状态
  * 通知solr下(停止的房源)
  * 记录房源日志(停止的房源)
  * 根据停止的房源,取出坑位里面的推广、排队房源
  * 计算排名
  * 更新计划状态(坑位里面的异动房源更新状态)
  * 通知solr(坑位里面的异动房源通知solr)
  * 记房源日志(坑位里面的房源异动日志)
  * @param array $params
  * @return array|bool
  */
 public static function removeFixPlanForBid($params = array())
 {
     self::$qInfo = $params;
     // 检查参数
     $checkParams = self::checkParams($params);
     if (!$checkParams['status']) {
         return $checkParams;
     }
     // 获取信息,组装$params
     $joinParams = self::joinParams($params);
     if (!$joinParams['status']) {
         return $joinParams;
     }
     $all_return = array();
     //判断竞价计划是否删除
     if ($params['flag'] != 1) {
         return Bll_HzPropBll::build_return(0, '无效的竞价计划' . json_encode($params));
     }
     //非推广的计划
     if ($params['status'] != 1) {
         return Bll_HzPropBll::build_return(0, '非推广的竞价计划' . json_encode($params));
     }
     // 非精选判断
     if ($params['bidVersion'] == 2) {
         return Bll_HzPropBll::build_return(0, '房源为精选' . json_encode($params));
     }
     //获取竞价计划的冻结号
     $sn = Dao_Broker_HzPlan::get_bid_sn($params['planId']);
     $sn = $sn['sn'];
     if (empty($sn)) {
         return Bll_HzPropBll::build_return(0, Const_HzErrorInfo::PROPERROR . json_encode($params));
     }
     //获取竞价花费
     $amount = $params['totalConsume'];
     $note = urlencode('推广房源' . $params['proId']);
     $user_id = Bll_HzBroker::get_userid_by_hzbrokerid($params['']);
     /** 竞价结算 调用3次 */
     $charge_sn = false;
     $unfreezeOrderData = array('userId' => $user_id, 'proId' => $params['proId'], 'serialNumber' => $sn, 'planId' => $params['planId'], '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, '', Const_PaymentApp::HZ_BID, $sn, $note, true);
     }
     if (!$charge_sn) {
         $unfreezeOrder->fail();
         $flag_array['msg'] = Const_HzErrorInfo::CHARGEFAIL;
         // 此处不需要block,由job保证此处解冻正确
         //return $flag_array;
     } else {
         $unfreezeOrder->complete();
     }
     //维护竞价关联关系
     if (!Dao_Broker_HzPlan::update_planning($params['planId'], Const_HzPlan::DELETE)) {
         $flag_array['msg'] = '维护竞价关联关系,数据更新失败.';
         return $flag_array;
     }
     //维护计划状态
     if (!Dao_Broker_HzPlan::update_plan_status($params['planId'], Const_HzPlan::DELETE)) {
         $flag_array['msg'] = '维护计划状态,数据更新失败.';
         return $flag_array;
     }
     // 更新计划的flag为删除状态
     if (!Dao_Broker_HzPlan::update_history_bids($params['planId'])) {
         $flag_array['msg'] = '更新计划的flag为删除状态,数据更新失败.';
         return $flag_array;
     }
     //记录房源日志
     $data = array('houseId' => $params['proId'], 'planId' => $params['planId'], 'brokerId' => $params['ajkBrokerId'], 'cityId' => $params['cityId'], 'type' => 15, 'changeType' => 407, 'remark' => '房源' . $params['proId'] . '移出定价计划。竞价' . $params['planId'] . '(id)取消竞价推广。', 'addDate' => date('Y-m-d H:i:s'), 'operatorId' => $params['operationId'], 'siteType' => 2);
     if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         return Bll_HzPropBll::build_return(0, array("日志写入失败"));
     }
     //计算房源状态
     Bll_HzPropBll::bulidHzProStatu($params['proId']);
     return Bll_HzPropBll::build_return(1, array('竞价' . $params['planId'] . '(id)取消竞价推广。'));
 }
Example #3
0
 /**
  * 208 计划手动开启
  * 查询计划信息
  * 如果计划status!=1 return
  *   记录计划推广日志
  *   判断计划是否是推广状态, 如非 return
  * 查询房源计划关系
  *   如果不存在 return
  *   记录房源推广日志
  *   更新关系状态 = 1
  */
 private function handle_plan_start()
 {
     $planInfo = $this->checkPlanIsEmpty();
     if ($planInfo['status'] != Const_HzPlan::SPREAD) {
         return;
     }
     $this->allReturn[] = "定价计划" . $planInfo['id'] . ",status=" . $planInfo['status'];
     /** Jackin Fix bug34418 */
     $broker_money = self::get_broker_balance_by_broker_id($this->params['ajk_broker_id']);
     // 余额不足
     if ($broker_money <= 0) {
         throw new Exception_BllErrorException('余额不足ajk_broker_id' . $this->params['ajk_broker_id']);
     }
     $plan_cost = Bll_HzFixPlan::get_plan_clickinfo($this->params['broker_id'], $this->params['plan_id']);
     if ($planInfo['amount'] <= $plan_cost[$this->params['plan_id']]['total_cost']) {
         throw new Exception_BllErrorException('限额不足');
     }
     $this->writePlanLog(4, '手动开始计划');
     $plannings = Dao_Broker_HzPlan::get_planning($this->params['plan_id']);
     if (empty($plannings)) {
         return;
     }
     foreach ($plannings as $planning) {
         // 更新状态为1
         if (!Dao_Broker_HzPlan::update_planning($planning['id'], Const_HzPlan::SPREAD)) {
             throw new Exception_BllErrorException("更新关系为手动开启推广失败,关系id={$planning['id']}");
         }
         $this->params['pro_id'] = $planning['proid'];
         // 维护房子状态
         Bll_HzPropBll::bulidHzProStatu($planning['proid']);
         //写入上线日志
         $this->writePropLog(5, '推广');
     }
 }
Example #4
0
 /**
  * 112 房源取消套餐推广
  * 查询房源套餐关系
  *   如果不存在 返回结束
  *   验证关系是否为删除状态(?)
  *   记录房源取消推广日志  type=6
  *   记录房源移除套餐日志 type=21
  *   如有竞价 下竞价  更新房子
  */
 private function pro_remove_from_combo()
 {
     // 查询套餐关系
     if (!($comboRelations = Bll_Combo_HouseRelation::getRelationByHouseId($this->params['pro_id'], Bll_Combo_HouseRelation::SITE_TYPE_HZ, true))) {
         return $this->allReturn[] = "房源{$this->params['pro_id']}套餐关系为空";
     }
     // 维护房子状态
     Bll_HzPropBll::bulidHzProStatu($this->params['pro_id']);
     if (!Bll_Combo_HouseRelation::isRelationOnline($comboRelations['state'])) {
         $this->writePropLog(Const_ProLogType::LOG_REMOVE_FROM_COMBO, '取消套餐推广');
     }
     $this->tempDoBid();
 }