Exemplo n.º 1
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)取消竞价推广。'));
 }
Exemplo n.º 2
0
 /**
  *
  */
 public function handle_request()
 {
     //分表
     $date = date('Ymd');
     //获取游标
     $dateFlag = $this->getFlag();
     if (!empty($dateFlag)) {
         $date = $dateFlag['date'];
     }
     //竞价队列数据获取
     $split = date('m', strtotime($date));
     $year = date('Y', strtotime($date));
     $day = date('d', strtotime($date));
     $BidList = Model_Choice_ActionQueue::getBidQueenList($split);
     //判断当前队列是否处理完成
     if (empty($BidList)) {
         //判断是否切换表
         if ($split + 0 != date('m') + 0) {
             $split += 1;
             if ($split < 10) {
                 $date = $year . '0' . $split . $day;
             } elseif ($split <= 12) {
                 $date = $year . $split . $day;
             } else {
                 $date = $year + 1 . '0' . ($split - 12) . $day;
             }
             //记录表游标
             $this->setFlag(array('date' => $date));
         }
         //休息1秒钟
         $this->setShCommonSleepTime(1);
         $this->setLog(date('Y-m-d H:i:s') . ' 处理完成');
         exit;
     }
     //队列数据处理
     foreach ($BidList as $list) {
         try {
             $AjkChoice = new Bll_Plan_Bid_AjkChoice();
             $AjkBlockChoice = new Bll_Plan_Bid_AjkBlockChoice();
             $result = '';
             if ($list['siteType'] == 1) {
                 //查询计划信息
                 $propSpread = Model_Plan_AjkPropspread::getAjkPropspreadById($list['planId']);
             }
             switch ($list['actionId']) {
                 case 1:
                     //精选推广
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 1;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceStartForJobByBroker($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceStartForJobByBroker($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::choiceSpread($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::choicePromotion($list);
                     }
                     break;
                 case 2:
                     //手动停止
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 3;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceStopForJobByBroker($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceStopForJobByBroker($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::stopChoiceSpread($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::stopSpread($list);
                     }
                     break;
                 case 3:
                     //计划14天到期
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 6;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceStopForJobBySystem($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceStopForJobBySystem($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::timeIsUp($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::expireSpread($list);
                     }
                     break;
                 case 4:
                     //计划没钱
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 5;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceStopForJobByNoMoney($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceStopForJobByNoMoney($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::planNoMoney($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::noMoneySpread($list);
                     }
                     break;
                 case 5:
                     //房源移出定价计划,导致精选停止(房源日志发起)
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 2;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceStopForJobBySystem($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceStopForJobBySystem($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::removeFixPlanForChoice($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::removeFixSpread($list);
                     }
                     break;
                 case 6:
                     //房源价格变更(房源日志发起)
                     $priceaArr = json_decode($list['createRemark'], true);
                     $list = array_merge($list, $priceaArr);
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 4;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceChangePriceForJob($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceChangePriceForJob($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::changeProPrice($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::changePriceForHouse($list);
                     }
                     break;
                 case 7:
                     //房源移出定价计划,导致竞价停止(房源日志发起)20140717 caoyang 新增
                     if ($list['siteType'] == 1) {
                         /** 二手房走老队列 */
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::removeFixPlanForBid($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpBidManage::stopJpBidData($list);
                     }
                     break;
                 case Const_ChoiceType::CHOICE_REMOVE_FROM_COMBO:
                     //房源取消套餐推广,导致精选停止(房源日志发起)20140815 caoyang 新增
                     if ($list['siteType'] == 1) {
                         $list['bidStatus'] = 2;
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choiceStopForJobBySystem($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->blockChoiceStopForJobBySystem($list);
                         }
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::removeComboForChoice($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpChoice::removeFixSpread($list);
                     }
                     break;
                 case Const_ChoiceType::BID_REMOVE_FROM_COMBO:
                     //房源取消套餐推广,导致竞价停止(房源日志发起)20140815 caoyang 新增
                     if ($list['siteType'] == 1) {
                         /** 二手房走老队列 */
                     } elseif ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::removeFixPlanForBid($list);
                     } elseif ($list['siteType'] == 3) {
                         $result = Bll_Plan_Bid_JpBidManage::stopJpBidData($list);
                     }
                     break;
                     /** 精选房源板块变更 */
                 /** 精选房源板块变更 */
                 case Const_ChoiceType::CHOICE_HOUSE_AREA_CHANGE:
                     if ($list['siteType'] == 1) {
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->communityMerge($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->communityMerge($list);
                         }
                         break;
                     }
                     if ($list['siteType'] == 2) {
                         $result = Bll_Plan_Bid_HzChoice::houseAreaChange($list);
                         break;
                     } else {
                         if ($list['siteType'] == 3) {
                             $result = Bll_Plan_Bid_JpChoice::houseBlockChange($list);
                         }
                     }
                     break;
                     /** 精选房源价格段变更 */
                 /** 精选房源价格段变更 */
                 case Const_ChoiceType::CHOICE_PRICE_INTERVAL_CHANGE:
                     $result = array('status' => 2, 'msg' => '未知的动作类型');
                     if ($list['siteType'] == 1) {
                         if ($propSpread['model'] == 1) {
                             $result = $AjkChoice->choicePriceIntervalChange($list);
                         } elseif ($propSpread['model'] == 2) {
                             $result = $AjkBlockChoice->choicePriceIntervalChange($list);
                         }
                     }
                     break;
                     /** 精选上下架状态维护,该上没上,改下没下 */
                 /** 精选上下架状态维护,该上没上,改下没下 */
                 case Const_ChoiceType::NOTIFY_SOLR_UP_DOWN:
                     switch ($list['siteType']) {
                         case Const_Site::ANJUKE:
                             $result = $AjkChoice->notifySolrUpDown($list);
                             break;
                         case Const_Site::HAOZU:
                             $result = Bll_Plan_Bid_HzChoice::notifySolrUpDown($list);
                             break;
                         case Const_Site::JINPU:
                             $result = Bll_Plan_Bid_JpChoice::notifySolrUpDown($list);
                             break;
                     }
                     break;
                 default:
                     $result = array('status' => 2, 'msg' => '未知的动作类型');
                     break;
             }
             //解析返回值
             if ($list['siteType'] == 1) {
                 $status = $result ? 1 : 2;
                 if ($propSpread['model'] == 1) {
                     $updateRemark = $AjkChoice->getMsg();
                 } elseif ($propSpread['model'] == 2) {
                     $updateRemark = $AjkBlockChoice->getMsg();
                 }
             } elseif ($list['siteType'] == 2) {
                 $status = $result['status'] ? 1 : 2;
                 $updateRemark = is_array($result['msg']) ? implode(';', $result['msg']) : $result['msg'];
             } elseif ($list['siteType'] == 3) {
                 $status = $result['status'] ? 1 : 2;
                 $updateRemark = is_array($result['msg']) ? implode(';', $result['msg']) : $result['msg'];
             } else {
                 $status = 2;
                 $updateRemark = '未知的网站类型';
             }
         } catch (Exception $e) {
             $status = 2;
             $updateRemark = print_r($e, true);
         }
         //更新队列状态
         Model_Choice_ActionQueue::setBidQueenStatusById($split, $list['id'], $status, $updateRemark);
         //记录处理日志
         $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . '; 网站: ' . $list['siteType'] . '; split:' . $split . '; remark:' . $updateRemark);
         //记录表游标
         $this->setFlag(array('date' => $date));
     }
     //休息10毫秒
     $this->setShCommonSleepTime(0.01);
 }