public function handle_request() { $dealStatus = array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED); $condition = array(array('proid', '>', $this->_startId), array('updated', '>=', strtotime($this->_startTime)), array('updated', '<=', strtotime($this->_endTime))); $houseList = Model_House_HzPropSearch::getPropLists($this->_cityId, $condition, self::BATCH_LIMIT); foreach ($houseList as $houseInfo) { $houseId = $houseInfo['proid']; $this->setFlag(array('id' => $houseId, 'time' => date('Y-m-d H:i:s'))); if (!in_array($houseInfo['status'], $dealStatus)) { $this->setLog(sprintf('房源[%d]房源状态[%d]不在[%s]不处理', $houseId, $houseInfo['status'], implode(',', $dealStatus))); continue; } $houseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_HZ); if (empty($houseRelation)) { $this->setLog(sprintf('房源[%d - %d],没有获取到套餐关系', $houseId, $houseInfo['status'])); continue; } /** 如果房源关系已经不是在线的,就不修复 */ if (false == Bll_Combo_HouseRelation::isRelationOnline($houseRelation['state'])) { $this->setLog(sprintf('房源[%d - %d],已经不在线,不处理', $houseId, $houseRelation['state'])); continue; } switch ($houseInfo['status']) { case Const_HzStatus::VERIFY: $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_ILLEGAL; break; case Const_HzStatus::REMOVE: $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_DELETE; break; case Const_HzStatus::EXPIRED: $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_EXPIRE; break; default: $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_DELETE; continue; } /** 修正房源套餐推广关系 */ if (1 == Bll_Combo_HouseRelation::updateComboStatusById($houseRelation['id'], $relationState, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) { $this->setLog(sprintf('房源[%d - %d],套餐推广关系[%d-%d]修复成功', $houseId, $houseInfo['status'], $houseRelation['id'], $houseRelation['state'])); } else { $this->setLog(sprintf('房源[%d - %d],套餐推广关系[%d-%d]修复失败', $houseId, $houseInfo['status'], $houseRelation['id'], $houseRelation['state'])); } $this->noticeComboSolr($houseInfo['cityid'], $houseInfo['userid'], $houseId); } if (count($houseList) < self::BATCH_LIMIT) { $this->setLog(sprintf('[%d - %d]已经处理完成...', $this->_cityId, $this->_startId)); $this->setShStopFlag(); $this->removeFlag(); } else { $this->setShCommonSleepTime(1); } }
public function handle_request() { $loadFields = array('proId', 'brokerId'); $houseList = Bll_House_EsfHouse::scanInvalidateHouse($this->_cityId, $this->_startId, self::DEAL_LIMIT, $loadFields); if (count($houseList) < self::DEAL_LIMIT) { $this->dealDone(true); } else { $this->dealDone(false); } foreach ($houseList as $house) { $houseId = $house['proId']; $brokerId = $house['brokerId']; $this->setCursor($houseId); /** 套餐城市 */ if (Bll_City::isComboCity($this->_cityId)) { $spreadRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_AJK); if (empty($spreadRelation)) { $this->logMsg(sprintf('没有获取到房源[%d]的套餐推广关系[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId)); continue; } if ($spreadRelation['brokerId'] != $brokerId || $spreadRelation['cityId'] != $this->_cityId) { $this->logMsg(sprintf('房源[%d]的 [BrokerId=%d CityId=%d] xxxx [BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId, $spreadRelation['brokerId'], $spreadRelation['cityId'])); $this->saveErrorHouseId($houseId, $brokerId); continue; } $this->logMsg(sprintf('房源[%d]的套餐推广关系正确[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId)); } else { $spreadRelation = Model_Plan_AjkFixRelation::getRelationByProIdEx($houseId, $this->_cityId); if (empty($spreadRelation)) { $this->logMsg(sprintf('没有获取到房源[%d]的定价推广关系[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId)); continue; } if ($spreadRelation['brokerId'] != $brokerId) { $this->logMsg(sprintf('房源[%d]的 [BrokerId=%d CityId=%d] 关系的 [BrokerId=%d]', $houseId, $brokerId, $this->_cityId, $spreadRelation['brokerId'])); $this->saveErrorHouseId($houseId, $brokerId); continue; } $this->logMsg(sprintf('房源[%d]的定价推广关系正确[BrokerId=%d CityId=%d]', $houseId, $brokerId, $this->_cityId)); } } }
public function handle_request() { $condition = array(array('proid', '>', $this->_startId), array('cityid', '=', $this->_cityId), array('created', '<', $this->_expireTime), array('status', '<>', Const_HzStatus::EXPIRED), array('status', '<>', Const_HzStatus::REMOVE)); $houseList = Model_House_HzPropSearch::getPropLists($this->_cityId, $condition, self::BATCH_LIMIT); if (empty($houseList)) { $this->setShStopFlag(); $this->setLog('处理完成'); return; } foreach ($houseList as $house) { $houseId = $house['proid']; $this->setLog(sprintf('开始处理房源[%d], 房源发布时间[%s]: %s', $houseId, date('Y-m-d H:i:s', $house['created']), json_encode($house))); $this->setFlag(array('id' => $houseId), $this->_cursorFile); if (1 != Model_House_HzPropSearch::updatePropStatus($this->_cityId, $houseId, Const_HzStatus::EXPIRED)) { $this->setLog(sprintf('房源[%d]更新房源状态失败', $houseId)); continue; } $comboHouseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, false); if (empty($comboHouseRelation)) { $this->setLog(sprintf('房源[%d]没有获取到套餐推广关系', $houseId)); continue; } $this->setLog(sprintf('房源[%d]套餐推广关系: %s', $houseId, json_encode($comboHouseRelation))); if (!Bll_Combo_HouseRelation::isRelationOnline($comboHouseRelation['state'])) { $this->setLog(sprintf('房源[%d]套餐推广状态不在线[%d]', $houseId, $comboHouseRelation['state'])); continue; } $this->setLog(sprintf('房源[%d]套餐推广状态在线[%d]', $houseId, $comboHouseRelation['state'])); if (1 != Bll_Combo_HouseRelation::updateComboStatusById($comboHouseRelation['id'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, Bll_Combo_HouseRelation::SITE_TYPE_HZ)) { $this->setLog(sprintf('更新房源[%d]套餐关系[%d : %d -> %d]失败', $houseId, $comboHouseRelation['id'], $comboHouseRelation['state'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE)); continue; } $this->setLog(sprintf('更新房源[%d]套餐关系[%d : %d -> %d]成功', $houseId, $comboHouseRelation['id'], $comboHouseRelation['state'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE)); $this->noticeComboSolr($this->_cityId, $house['userid'], $houseId, $comboHouseRelation['brokerId']); } if (count($houseList) < self::BATCH_LIMIT) { $this->setShStopFlag(); } }
private function moveJpPPCFixPlanRelation($cityId, $jpBrokerId, $fixPlan) { try { $ajkBrokerId = Bll_Broker_User::getAjkBrokerIdByJpBrokerId($jpBrokerId); } catch (Exception $e) { $this->logMsg($e->getMessage()); return; } if ($ajkBrokerId == 0) { $this->logMsg(sprintf('经纪人[%d - %d]没有获取到二手房经纪人ID。', $cityId, $jpBrokerId)); return; } $fixPlanId = $fixPlan['id']; $fixPlanHouseRelationList = Model_House_JpHouseIdx::getHouseInfoByFixPlanIdEx($fixPlanId); if (empty($fixPlanHouseRelationList)) { $this->logMsg(sprintf('经纪人[%d - %d - %d - %d]没有获取到金铺定价计划房源。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlanId)); return; } foreach ($fixPlanHouseRelationList as $fixPlanHouseRelation) { $comboHouseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($fixPlanHouseRelation['id'], Model_Combo_HouseRelation::SITE_TYPE_JP); if (!empty($comboHouseRelation)) { if ($comboHouseRelation['state'] == Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE) { $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],且state==205', $fixPlanHouseRelation['id'], $comboHouseRelation['id'])); continue; } if (1 == Bll_Combo_HouseRelation::updateComboStatusById($comboHouseRelation['id'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, Model_Combo_HouseRelation::SITE_TYPE_JP)) { $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新成功', $fixPlanHouseRelation['id'], $comboHouseRelation['id'])); } else { $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新失败', $fixPlanHouseRelation['id'], $comboHouseRelation['id'])); } continue; } $data = array('houseId' => $fixPlanHouseRelation['id'], 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'state' => Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, 'created' => $fixPlanHouseRelation['createTime']); if (1 == Model_Combo_HouseRelation::create($data, Model_Combo_HouseRelation::SITE_TYPE_JP)->save()) { $this->logMsg(sprintf('房源[%d]转移成功', $fixPlanHouseRelation['id'])); } else { $this->logMsg(sprintf('房源[%d]转移失败', $fixPlanHouseRelation['id'])); } } }
/** * 111 房源手动套餐推广 * * 1. 判断房源信息 * 2. 获取经纪人套餐信息 * 3. 获取经纪人当前推广中的房源数 * 4. 判断经纪人已经推广的房源数 是否超过 套餐限制 * 1. 超过 则 设置房源 套餐推广关系为未推广 结束 * 5. 通知 用户端上线房源 * * @param $params * @return array */ public static function pro_start_combo($params) { $currentCombo = Bll_Combo_Broker_BrokerComboInfo::getBrokerCurrentCombo($params['broker_id'], Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_AJK); /** 经纪人当前没有生效的套餐 */ if (empty($currentCombo)) { return static::build_return(1, array(sprintf('%d 经纪人当前[%s]没有生效的租售套餐', $params['id'], date('Y-m-d H:i:s')))); } /** 获取经纪人当前在线的房源数 */ /* 此处不需要判断。由于前台已经插入关系或者并发 都导致这个地方失败 $onlineHouseCount = Bll_Combo_HouseRelation::getHouseCountEx($params['broker_id'], $params['city_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK); if ($onlineHouseCount >= $currentCombo['salePropNum']) { return static::build_return(1, sprintf('%d 经纪人当前[%s]推广中的房源数[%d]超出套餐可推广房源数[%d]。', $params['id'], date('Y-m-d H:i:s'), $onlineHouseCount, $currentCombo['salePropNum'])); }*/ // 查询套餐关系 if (!($comboRelations = Bll_Combo_HouseRelation::getRelationByHouseId($params['pro_id'], Bll_Combo_HouseRelation::SITE_TYPE_AJK))) { return self::build_return(0, array('房源[' . $params['pro_id'] . ']套餐关系为空')); } if (!Bll_Combo_HouseRelation::isRelationOnline($comboRelations['state'])) { return self::build_return(0, array('房源[' . $params['pro_id'] . ']套餐关系不在线')); } $data = self::build_prop_log($params, 20, '房源手动套餐推广;队列表id为' . $params['id'], $params['broker_id']); if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) { return self::build_return(0, array('房源[' . $params['pro_id'] . ']手动套餐推广日志写入失败')); } return self::build_return(1, array('房源[' . $params['pro_id'] . ']手动套餐推广日志写入成功')); }
/** * 警告:未得到授权,不能使用。所有者:caoyang * 本方法为租房架构变更,房源状态维护的过渡期中临时方法。有效到2014-10-01。 * * 根据当前定价、竞价(精选)的状态维护房源的状态 * 1.房源的状态为:违规-6,删除-99、100的时候房源的状态不被更新 * 2.定价、竞价(精选)任意一个推广时房源状态为1 * 3.房源不在定价计划中的时候状态需要维护成2、4 * * @param $hzProId * @return mixed */ public static function bulidHzProStatu($hzProId) { /** 房源信息初步判断 */ //查询房源信息 $proInfo = Model_House_HzProp::get_prop_info_by_prop_id($hzProId); if (empty($proInfo)) { //房源信息不存在 return ''; } if (in_array($proInfo['contentBasic']['status'], array(Const_HzStatus::VERIFY, Const_HzStatus::REMOVE, Const_HzStatus::EXPIRED))) { //房源状态为违规的、删除的不能更新房源状态 return ''; } /** 定价、竞价(精选)数据准备 */ //查询租房定价、竞价(精选)关系数据 $fixPlanning = array(); //定价关系数据 $bidPlanning = array(); //竞价(精选)关系数据 $comboRelation = array(); // 套餐关系数据 //$isComboBroker = Bll_Broker_HzBroker::isComboBroker($proInfo['contentBasic']['user_id']); $planning = Model_Plan_HzPlanning::data_access()->filter('proid', $hzProId)->get_all(); foreach ($planning as $list) { //定价 if ($list['plan_type'] == Const_HzPlan::SPREAD_TYPE) { $fixPlanning = $list; } //竞价(精选) if ($list['plan_type'] == Const_HzPlan::BID_TYPE) { $bidPlanning = $list; } } //查询租房竞价(精选)计划状态 if (empty($bidPlanning)) { $bidPlanInfo = array(); } else { $bidPlanInfo = Model_Plan_HzPlanBasic::get_plan_by_id($bidPlanning['plan_id']); } //查询租房定价计划状态 if (empty($fixPlanning)) { $fixPlanInfo = array(); } else { $fixPlanInfo = Model_Plan_HzPlanBasic::get_plan_by_id($fixPlanning['plan_id']); } //查询套餐关系 $comboRelation = Bll_Combo_HouseRelation::getRelationByHouseId($hzProId); /** 计算出房源状态应该更新成什么样 */ /** * 1. 非定价推广(计划删除、或房源不在计划里面)proStatus=2 * 2. 定价推广:proStatus=1 * 3. 定价非推广(房源在计划中) * 3.1 竞价(精选)非推广 * 3.1.1 定价计划没钱 proStatus=13 * 3.1.1 定价其他 proStatus=9 * 3.2 竞价(精选)推广 proStatus=1 */ if ($comboRelation) { return Dao_Broker_HzProp::change_prop_status($hzProId, Bll_Combo_HouseRelation::isRelationOnline($comboRelation['state']) ? Const_HzStatus::ONLINE : Const_HzStatus::OUTLINE); } else { //定价计划不存在、计划标记为删除、计划不是正常状态(1、2、5、7、9) if (empty($fixPlanInfo) || $fixPlanInfo['flag'] == 0 || !in_array($fixPlanInfo['status'], array(Const_HzPlan::SPREAD, Const_HzPlan::AUTOOVER, Const_HzPlan::AWAIT, Const_HzPlan::UPPERLIMIT, Const_HzPlan::MANUALLY_PAUSE))) { return Dao_Broker_HzProp::change_prop_status($hzProId, Const_HzStatus::OUTLINE); //房源不在计划里面 } //定价房源不在计划里面、非有效的关系(1、2、5、7、9) if (empty($fixPlanning) || !in_array($fixPlanning['is_valid'], array(Const_HzPlan::SPREAD, Const_HzPlan::AUTOOVER, Const_HzPlan::AWAIT, Const_HzPlan::UPPERLIMIT, Const_HzPlan::MANUALLY_PAUSE))) { return Dao_Broker_HzProp::change_prop_status($hzProId, Const_HzStatus::OUTLINE); //房源不在计划里面 } //定价计划推广中 if ($fixPlanInfo['status'] == Const_HzPlan::SPREAD) { return Dao_Broker_HzProp::change_prop_status($hzProId, Const_HzStatus::ONLINE); //房源正在推广 } //竞价(精选)计划不存在、计划标记为删除、计划不是正常状态(1、2、5、7、9、13) //竞价(精选)房源不在计划里面、非有效的关系(1、2、5、7、9、13) if (empty($bidPlanInfo) || $bidPlanInfo['flag'] == 0 || !in_array($bidPlanInfo['status'], array(Const_HzPlan::SPREAD, Const_HzPlan::AUTOOVER, Const_HzPlan::AWAIT, Const_HzPlan::UPPERLIMIT, Const_HzPlan::MANUALLY_PAUSE, Const_HzPlan::WAITING)) || empty($bidPlanning) || !in_array($bidPlanning['is_valid'], array(Const_HzPlan::SPREAD, Const_HzPlan::AUTOOVER, Const_HzPlan::AWAIT, Const_HzPlan::UPPERLIMIT, Const_HzPlan::MANUALLY_PAUSE, Const_HzPlan::WAITING))) { if ($fixPlanInfo['status'] == Const_HzPlan::UPPERLIMIT) { //计划没钱 return Dao_Broker_HzProp::change_prop_status($hzProId, Const_HzStatus::NOCASH); //房源没钱 } else { return Dao_Broker_HzProp::change_prop_status($hzProId, Const_HzStatus::MANUALLY); //房源状态更新为9手动停止 } } //竞价(精选)推广 if ($bidPlanInfo['status'] == Const_HzPlan::SPREAD) { return Dao_Broker_HzProp::change_prop_status($hzProId, Const_HzStatus::ONLINE); //房源正在推广 } } //以上逻辑都没走到,记录当时错误情况 file_put_contents("/data1/logs/bulidHzProStatu.log", date('Y-m-d H:i:s') . " " . $hzProId . " " . json_encode($fixPlanInfo) . " " . json_encode($fixPlanning) . " " . json_encode($bidPlanInfo) . " " . json_encode($bidPlanning) . "\n", FILE_APPEND); return false; }
private function repairComboSpreadRelation($memberId, $houseId, $houseState, $houseType) { $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_DELETE; switch ($houseState) { case self::HOUSE_STATE_EXPIRED: $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_EXPIRE; break; case self::HOUSE_STATE_ILLEGAL: $relationState = Model_Combo_HouseRelation::ENUM_HOUSE_ILLEGAL; break; } $houseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_JP); if (empty($houseRelation)) { $this->logMsg(sprintf('房源[%d - %d],没有获取到套餐关系', $houseId, $houseState)); return; } /** 如果房源关系已经不是在线的,就不修复 */ if (false == Bll_Combo_HouseRelation::isRelationOnline($houseRelation['state'])) { $this->logMsg(sprintf('房源[%d - %d]关系已经是不在线,不修复', $houseId, $houseRelation['state'])); return; } /** 记录到文件里,方便发送邮件 */ $emailContent = sprintf('房源[%d - %d],套餐推广关系[%d-%d]不一致' . PHP_EOL, $houseId, $houseState, $houseRelation['id'], $houseRelation['state']); file_put_contents($this->_email, $emailContent, FILE_APPEND); /** 修正房源套餐推广关系 */ if (1 == Bll_Combo_HouseRelation::updateComboStatusById($houseRelation['id'], $relationState, Bll_Combo_HouseRelation::SITE_TYPE_JP)) { $this->logMsg(sprintf('房源[%d - %d],套餐推广关系[%d-%d]修复成功', $houseId, $houseState, $houseRelation['id'], $houseRelation['state'])); } else { $this->logMsg(sprintf('房源[%d - %d],套餐推广关系[%d-%d]修复失败', $houseId, $houseState, $houseRelation['id'], $houseRelation['state'])); } $this->noticeComboSolr($memberId, $houseId, $houseType); }