public function dealTask($task)
 {
     $planId = $task['id'];
     // 查询对应关系
     $planning = Model_Plan_HzPlanning::getPlanByPlanId($planId);
     if (count($planning) > 0) {
         return true;
     }
     // 不需要处理
     // 获取当时的房子
     Model_Choice_ActionQueue::data_access(date('m', $task['created']))->filter('siteType', 2)->filter('status', self::ENUM_FAIL)->get_row();
     // 解冻
     // 更新计划删除
     // 记录有问题精选计划id
     file_put_contents('/data1/logs/Zufang_FixExistOnLineChoicePlanNoPlanning_ErrorPlanIds', $planId . PHP_EOL, FILE_APPEND);
     return true;
 }
 public function handle_request()
 {
     $startTime = strtotime(date('Y-m-d 00:00:00'));
     $this->logOut(sprintf('[%s] 开始修复没有房源关系的精选计划', date('Y-m-d H:i:s')));
     $choiceWaitPlanList = Model_Plan_HzPlanBasic::getAllChoiceWaitPlan($startTime);
     if (empty($choiceWaitPlanList)) {
         $this->logOut('    没有获取到计划。');
         return;
     }
     foreach ($choiceWaitPlanList as $choiceWaitPlan) {
         $this->logOut(sprintf('    开始修复经纪人(%d)的精选计划(%d)。', $choiceWaitPlan['user_id'], $choiceWaitPlan['id']));
         $propPlanning = Model_Plan_HzPlanning::getPlanByPlanId($choiceWaitPlan['id']);
         if (!empty($propPlanning)) {
             $this->logOut('    无需修复, 计划(%d)关联到房源(%d)。', $choiceWaitPlan['id'], $propPlanning['proid']);
             continue;
         }
         /** TODO 思考是否要修复 坑位表 */
     }
 }
Exemple #3
0
 /**
  * 好租-精选房源管理页面
  * 返回值 为页面参数,所以必须是数组
  *
  * @param int $ajkBrokerId
  * @param int $cityId
  * @param array $extraData $request->get_parameters();
  * @return array
  */
 public static function hz_init_manage($ajkBrokerId, $cityId, $extraData = array())
 {
     $pageAttribute = array('broker_id' => $ajkBrokerId, 'city_id' => $cityId);
     $hz_broker_id = Model_Broker_HzMapping::get_hz_broker_id($ajkBrokerId);
     if (0 == $hz_broker_id) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '您不是好租经纪人!');
     }
     /** 判断经纪人有效精选房源推广计划数 */
     $validPlanCount = Bll_HzBidPlan::countChoiceValidPlanEx($ajkBrokerId);
     if ($validPlanCount >= self::ALL_ZF_PLAN_NUM) {
         $pageAttribute['bidChoiceIsFull'] = true;
     } else {
         $pageAttribute['bidChoiceIsFull'] = false;
     }
     $pageAttribute['validPlanCount'] = $validPlanCount;
     /** 获取有效的精选房源计划 */
     $validPlanList = Bll_HzBidPlan::getChoiceValidPlanEx($ajkBrokerId);
     if (empty($validPlanList)) {
         $pageAttribute['bidChoiceIsFull'] = false;
         return $pageAttribute;
     }
     /** 对计划分组 */
     $planGroup = array();
     $propPlans = array();
     $propInfos = array();
     foreach ($validPlanList as $planBasic) {
         $propPlan = Model_Plan_HzPlanning::getPlanByPlanId($planBasic['id']);
         if (empty($propPlan)) {
             continue;
         }
         if ($planBasic['status'] == Const_HzPlan::WAITING) {
             $planBasic['rank'] = Bll_Plan_Bid_HzBid::getChoiceWaitPosition($planBasic['id'], $cityId, $planBasic['blockId'], $planBasic['priceId']);
         }
         /** todo 获取精选点击数量  */
         $planBasic['clicks'] = Bll_Plan_Bid_HzBid::getPropBidClick($propPlan['proid'], $cityId, $hz_broker_id);
         $propPlans[$planBasic['id']] = $propPlan;
         $propInfo = Model_House_HzProp::get_prop_info_by_prop_id($propPlan['proid']);
         $propInfos[$planBasic['id']] = $propInfo;
         $planBasic['unit_price'] = $propPlan['unit_price'];
         $planGroup[$planBasic['status']][] = $planBasic;
     }
     $pageAttribute['planGroup'] = $planGroup;
     $pageAttribute['propPlans'] = $propPlans;
     $pageAttribute['propInfos'] = $propInfos;
     return $pageAttribute;
 }
Exemple #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;
 }