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 思考是否要修复 坑位表 */ } }
/** * 好租-精选房源管理页面 * 返回值 为页面参数,所以必须是数组 * * @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; }
/** * @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; }