Exemplo n.º 1
0
 /**
  * 重载save方法,为了增加modId
  * @param array $data
  * @return int
  */
 public function save($data = array())
 {
     //默认对经纪人mod 100
     if (isset($this->brokerId)) {
         $this->modId = $this->brokerId % 100;
     } elseif (isset($data['brokerId'])) {
         $this->modId = $data['brokerId'] % 100;
     }
     $temp = array();
     foreach ($this->properties() as $property) {
         if (!is_null($this->{$property})) {
             $temp[$property] = $this->{$property};
         }
     }
     $log = '';
     try {
         if (1 == parent::save($data)) {
             $temp['id'] = $this->id;
             Model_Log_HouseLogNew::doubleWrite(array_merge($temp, $data), $this->splitSuffix);
             return 1;
         }
     } catch (Exception $e) {
         $log = $e->getTraceAsString();
     }
     $logFile = sprintf('/data1/logs/Model_Log_HouseLog-%d.log', $this->splitSuffix);
     @file_put_contents($logFile, sprintf('[%s] %s %s' . PHP_EOL, date('Y-m-d H:i:s'), __CLASS__, json_encode($temp)), FILE_APPEND);
     if ($log != '') {
         @file_put_contents($logFile, sprintf('[%s] %s %s' . PHP_EOL, date('Y-m-d H:i:s'), __CLASS__, $log), FILE_APPEND);
     }
     return 0;
 }
 /**
  * 获取数据
  */
 public function getData()
 {
     $nowDate = date('Ymd');
     $list = Model_Log_HouseLogNew::getProLogList($nowDate, $this->lastId, $this->limit);
     if (empty($list)) {
         return array();
     }
     return $list;
 }
Exemplo n.º 3
0
 private function fetchTasks()
 {
     $tasks = Model_Log_HouseLogNew::data_access(Util_DbSplitSuffix::yearMonthDay($this->cursor->date))->filter_by_op('id', '>', $this->cursor->id)->limit($this->per)->find();
     if (empty($tasks) && strtotime($this->cursor->date) < strtotime(date('Y-m-d 00:00:00'))) {
         $this->cursor->date = date('Y-m-d', strtotime('+1 day', strtotime($this->cursor->date)));
         $this->cursor->id = 0;
         $this->cursor->save();
     }
     return $tasks;
 }
Exemplo n.º 4
0
 public static function insert_into_proplog($params)
 {
     $tableMapping = Model_Log_HouseLogNew::get_mapping(date("Ymd"));
     //$paramskey名全部转小写
     $tableColumns = array_flip($tableMapping['columns']);
     $tmpData = array();
     foreach ($params as $key => $value) {
         $key = strtolower($key);
         if (isset($tableColumns[$key])) {
             $tmpData[$tableColumns[$key]] = $value;
         }
     }
     return Model_Log_HouseLogNew::create($tmpData, date('Ymd'))->save();
     //return parent::addData("l_pro_log_".date("Ymd") ,$params, 'actlog_db',false);
     //        $orm = new ORM_Action11ORM("l_pro_log_".date("Ymd"));
     //        foreach ($params as $field => $value) {
     //
     //            $orm->$field = $value;
     //        }
     //        return $orm->addData();
 }
Exemplo n.º 5
0
 /**
  * 上下架队列,二手房价格段变写房源日志
  *
  * @param array $queue
  * @return array
  */
 public static function upDownDeal($queue)
 {
     $priceInterval = json_decode($queue['remark'], true);
     if (!is_array($priceInterval) || empty($priceInterval)) {
         return array('status' => 0, 'msg' => 'remark解析JSON错误');
     }
     if (!isset($priceInterval['id'])) {
         return array('status' => 0, 'msg' => '没有获取到价格段Id');
     }
     $priceId = intval($priceInterval['id']);
     $priceIntervalInfo = Model_House_EsfPrice::get_price_by_id($priceId);
     if (empty($priceIntervalInfo)) {
         return array('status' => 0, 'msg' => '没有获取到价格段信息[' . $priceId . ']');
     }
     $choicePlanList = Model_Plan_EsfAjkPropSpread::getChoicePlanByPrice($priceIntervalInfo['cityId'], $priceIntervalInfo['minPrice'], $priceIntervalInfo['maxPrice']);
     if (empty($choicePlanList)) {
         return array('status' => 1, 'msg' => sprintf('没有获取到推广、排队的精选计划[%d - %d -%d]', $priceIntervalInfo['cityId'], $priceIntervalInfo['minPrice'], $priceIntervalInfo['maxPrice']));
     }
     $dealMark = array();
     $remark = sprintf('价格段变更[queue_id: %d]', $queue['id']);
     foreach ($choicePlanList as $choicePlan) {
         $houseLog = static::buildHouseLog($choicePlan['propId'], $choicePlan['brokerId'], $choicePlan['cityId'], Const_ProPlanChangeType::PRICE_INTERVAL_CHANGE, Const_ProLogType::LOG_PRICE_INTERVAL_CHANGE, $remark);
         if (!Model_Log_HouseLogNew::create($houseLog, date('Ymd'))->save()) {
             $dealMark[] = sprintf('精选[%d]房源[%d]价格段变更写房源日志失败', $choicePlan['id'], $choicePlan['propId']);
         } else {
             $dealMark[] = sprintf('精选[%d]房源[%d]价格段变更写房源日志成功', $choicePlan['id'], $choicePlan['propId']);
         }
     }
     return array('status' => 1, 'msg' => sprintf('价格段变更房源日志写入完成,%s', implode(',', $dealMark)));
 }
Exemplo n.º 6
0
 /**
  * 二手房小区合并
  *
  * @param array $queueInfo
  * @return array
  */
 public static function ajkCommunityMerge($queueInfo)
 {
     if (!isset($queueInfo) || empty($queueInfo)) {
         return static::buildReturn(self::PROCESS_STATUS_ERROR, '小区合并,remark的值为空');
     }
     $communityMergeInfo = json_decode($queueInfo['remark'], true);
     if (!is_array($communityMergeInfo)) {
         return static::buildReturn(self::PROCESS_STATUS_ERROR, '小区合并,remark的值不是JSON');
     }
     /** 获取推广中的小区的精选计划 */
     $choicePlanList = Model_Plan_EsfAjkPropSpread::getSpreadChoicePlanByCommunityId($communityMergeInfo['cityId'], $communityMergeInfo['commId']);
     if (empty($choicePlanList)) {
         return static::buildReturn(self::PROCESS_STATUS_SUCCESS, sprintf('小区小区合并,没有获取到小区[%d]的精选计划信息', $communityMergeInfo['commId']));
     }
     $houseLogWriteError = array();
     $houseLogWriteSuccess = array();
     foreach ($choicePlanList as $choicePlan) {
         $data = array();
         $data['houseId'] = $choicePlan['propId'];
         $data['planId'] = $choicePlan['id'];
         $data['brokerId'] = $choicePlan['brokerId'];
         $data['cityId'] = $queueInfo['city_id'];
         $data['type'] = Const_ProLogType::LOG_COMMUNITY_MERGE;
         $data['changeType'] = $queueInfo['type'];
         $data['remark'] = '小区合并';
         $data['addDate'] = date('Y-m-d H:i:s');
         $data['operatorId'] = 0;
         $data['siteType'] = 1;
         if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $houseLogWriteError[] = $choicePlan['propId'];
         } else {
             $houseLogWriteSuccess[] = $choicePlan['propId'];
         }
     }
     return static::buildReturn(self::PROCESS_STATUS_SUCCESS, sprintf('小区小区合并,房源日志写入成功[%s],房源日志写入失败[%s]', implode(',', $houseLogWriteSuccess), implode(',', $houseLogWriteError)));
 }
Exemplo n.º 7
0
 public static function handle_plan_start($params)
 {
     $all_return = array();
     $all_return[] = "队列(" . $params['id'] . ")开始处理";
     //获取房源列表
     $houseInfoObjs = Model_House_JpHouseIdx::getHouseInfoByFixPlanId($params['plan_id']);
     //写房源推广日志
     if ($houseInfoObjs) {
         //todo 房源要上线 查余额判断
         foreach ($houseInfoObjs as $houseInfoObj) {
             $params['pro_id'] = $houseInfoObj->id;
             $data = Bll_JpPropBll::build_prop_log($params, 5, "房源推广", $params['broker_id']);
             Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
             $all_return[] = "房源" . $params['pro_id'] . "上线日志写入";
         }
     }
     //写计划日志
     $data = self::build_plan_log($params, 4, "手动开始计划", $params['broker_id']);
     Model_House_UpDown_PlanLog::create($data, date('m'))->save();
     $all_return[] = "手动开始计划日志写入";
     return Bll_JpPropBll::build_return(1, $all_return);
 }
Exemplo n.º 8
0
 /**
  * 112 房源手动停止套餐推广
  *
  * 1. 判断房源是否竞价
  *      1. 已经竞价,就下竞价
  *      2. 调用API 结算
  *      3. 写日志
  * 2. 通知用户端下线房源
  *
  * @param $params
  * @return array
  */
 public static function pro_stop_combo($params)
 {
     $data = self::build_prop_log($params, 21, '房源手动停止套餐推广;队列表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'] . ']手动停止套餐推广日志写入成功'));
 }
Exemplo n.º 9
0
 public static function stopJpBidData($list)
 {
     $checkList = self::checkList($list);
     if (!$checkList['status']) {
         return $checkList;
     }
     $planInfo = Model_Plan_Jp::data_access()->filter('id', $list['planId'])->find_only();
     if ($planInfo->isDelete == Model_Plan_Jp::ENUM_IS_DELETE_YES) {
         return Bll_HzPropBll::build_return(0, '无效的竞价计划' . json_encode($list));
     }
     if ($planInfo->status != Model_Plan_Jp::ENUM_STATUS_ONLINE) {
         return Bll_HzPropBll::build_return(0, '竞价计划不在推广中' . json_encode($list));
     }
     if ($planInfo->type != Model_Plan_Jp::ENUM_TYPE_BID) {
         return Bll_HzPropBll::build_return(0, '竞价计划类型有误' . json_encode($list));
     }
     if (!in_array($planInfo->bidVersion, array(Model_Plan_Jp::BIDVERSION_OLD, Model_Plan_Jp::BIDVERSION_CHOICE))) {
         return Bll_HzPropBll::build_return(0, '竞价计划version error' . json_encode($list));
     }
     $houseIdx = Model_House_JpHouseIdx::data_access()->filter('id', $planInfo['houseId'])->find_only();
     if (empty($houseIdx)) {
         return Bll_HzPropBll::build_return(0, '金铺房源信息没有' . json_encode($list));
     }
     if ($houseIdx->bidSpreadId != $planInfo->id) {
         return Bll_HzPropBll::build_return(0, '金铺房源信息有误bidSpreadId' . json_encode($list));
     }
     $houseIdx->bidSpreadId = 0;
     if (!$houseIdx->save()) {
         return Bll_HzPropBll::build_return(0, '金铺房源信息更新失败' . json_encode($list));
     }
     //发送结算
     $params = array();
     $params['spread_id'] = $planInfo->id;
     $params['log_status'] = 7;
     Bll_Plan_Bid_JpSettlement::getInstance()->settlement($params, 'bid');
     $planInfo->status = Model_Plan_Jp::ENUM_STATUS_OVER;
     $planInfo->isDelete = 1;
     $planInfo->updateTime = date('Y-m-d H:i:s');
     if (!$planInfo->save()) {
         return Bll_HzPropBll::build_return(0, '金铺计划信息更新失败' . json_encode($list));
     }
     //房源下架tosolr
     Bll_House_JpHouseInfo::updateHouseToSolr(1, $planInfo->houseId, 1);
     //通知更新q_spread_bid_update表 计算竞价系数
     Model_Plan_JpSpreadBidUpdate::setBidUpdateQ($planInfo->id);
     //记录房源日志
     $data = array('houseId' => $houseIdx->id, 'planId' => $planInfo->id, 'brokerId' => $list['brokerId'], 'cityId' => $planInfo->cityId, 'type' => 15, 'changeType' => 407, 'remark' => '房源' . $houseIdx->id . '移出定价计划/取消套餐推广。竞价' . $planInfo->id . '(id)取消竞价推广。', 'addDate' => date('Y-m-d H:i:s'), 'operatorId' => $list['operationId'], 'siteType' => 3);
     if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         return Bll_HzPropBll::build_return(0, array("日志写入失败"));
     }
     return Bll_HzPropBll::build_return(1, array('竞价' . $planInfo->id . '(id)取消竞价推广。'));
 }
Exemplo n.º 10
0
 /**
  * 303竞价结算
  * 1. 查询经纪人所有有效计划,
  *      没有计划return
  *
  * 2. 基于推广计划,查询计划下有效房源(循环计划查询)
  *
  *      判断计划状态
  *          推广中,contine
  *          第二天推广,continue
  *          手动停止,continue
  *          账户限额不足,计划置为推广中,记录计划推广日志
  *      查询计划下房源关系,
  *          如果为空,contine
  *          不为空,判断计划状态
  *                  如果账户余额不足,记录房源推广日志
  */
 public static function broker_frozen_money($params)
 {
     if (empty($params['broker_id'])) {
         return Bll_JpPropBll::build_return(1, array("经纪人ID为空"));
     }
     $returnLog = array();
     //获取账户余额
     try {
         $userId = Bll_Broker_MainBusiness::getDataByEsfId($params['broker_id'])->memberId;
         $balance = Bll_Service_Payment::balance(Bll_Service_Payment::SITE_ANJUKE, array('userId' => $userId));
     } catch (Exception $e) {
         array_push($returnLog, "获取账户余额不足失败");
         return Bll_JpPropBll::build_return(0, $returnLog);
     }
     if ($balance['data']['balance'] <= 0) {
         array_push($returnLog, "当前账户余额不足");
         return Bll_JpPropBll::build_return(1, $returnLog);
     }
     array_push($returnLog, "当前账户余额:" . $balance['data']['balance']);
     //获取经纪人正在推广的计划
     $StaticPricePlanList = DAO_Plan_StaticPricePlan::getStaticPricePlanListByBrokerId($params['broker_id']);
     foreach ($StaticPricePlanList as $list) {
         if ($list['Status'] != 1) {
             //无效的计划
             array_push($returnLog, "无效的计划:" . $list['Id'] . ";");
             continue;
         }
         if ($list['ViewTime'] != 1893427200) {
             //非账户没钱停止的计划
             array_push($returnLog, "计划Id:" . $list['Id'] . "展示时间:" . date("Y-m-d H:i:s", $list['ViewTime']) . ";");
             continue;
         }
         $tmpStr = "计划Id:" . $list['Id'] . "展示时间:" . date("Y-m-d H:i:s", $list['ViewTime']) . ";";
         //获取计划下面的房源
         $StaticPriceRelation = DAO_Plan_StaticPriceRelation::getProSpreadRelation($list['Id'], $list['CityId']);
         //更新计划的状态
         if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
             DAO_Plan_StaticPricePlan::updateStaticPricePlanById(array('Id' => $list['Id'], 'ViewTime' => time()));
         }
         //记录计划日志
         $params['plan_id'] = $list['Id'];
         $data = self::build_plan_log($params, 8, "账户有钱计划推广,动作id:" . $params['id'], $params['broker_id']);
         if (!Model_House_UpDown_PlanLog::create($data, date('m'))->save()) {
             array_push($returnLog, "账户有钱计划推广日志写入失败");
             return Bll_JpPropBll::build_return(0, $returnLog);
         }
         //记录房源日志
         foreach ($StaticPriceRelation as $Relation) {
             $params['pro_id'] = $Relation['ProId'];
             $data = Bll_EsfPropBll::build_prop_log($params, 5, "房源推广,动作id:" . $params['id'], $params['broker_id']);
             if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                 array_push($returnLog, "房源" . $Relation['ProId'] . "房源推广日志写入失败");
                 return Bll_JpPropBll::build_return(0, $returnLog);
             }
             $tmpStr .= $Relation['ProId'] . ",";
         }
         array_push($returnLog, $tmpStr);
     }
     if (empty($returnLog)) {
         array_push($returnLog, "经纪人没有计划");
     }
     return Bll_JpPropBll::build_return(1, $returnLog);
 }
Exemplo n.º 11
0
 public function handle_request()
 {
     $this->setLog(sprintf('开始处理[%d - %d]的日志......', $this->_suffix, $this->_lastLogId));
     $type = array(1, 2, 14, 20);
     $houseLogList = Model_Log_HouseLogNew::getLogInfoMoreThanIdEx($this->_lastLogId, $this->_suffix, 1, $type);
     $currentTimestamp = date('Y-m-d H:i:s');
     if (empty($houseLogList)) {
         $currentDate = date('Ymd');
         if ($this->_suffix != $currentDate) {
             $this->setFlag(array('id' => 0, 'date' => $currentDate, 'time' => $currentTimestamp));
         }
         $this->setShCommonSleepTime(1);
         return;
     }
     $houseIllegalFilter = new Bll_House_Filter();
     foreach ($houseLogList as $row) {
         $cityId = $row['cityId'];
         $brokerId = $row['brokerId'];
         $houseId = $row['houseId'];
         $this->setLogPrefix(sprintf('%d - %d - %d', $cityId, $brokerId, $houseId));
         if (strtotime($row['addDate']) > time() - 60) {
             $this->setLog(sprintf('日志延时处理%s', $row['addDate']));
             $this->setShCommonSleepTime(300);
             return;
         }
         $this->setLog(sprintf('开始处理日志:%s', json_encode($row)));
         $this->setFlag(array('id' => $row['id'], 'date' => $this->_suffix, 'time' => $currentTimestamp));
         $houseInfo = Bll_House_EsfHouse::getHouseInfoById($houseId, $cityId);
         if (empty($houseInfo)) {
             $this->setLog('没有获取到房源的信息');
             continue;
         }
         $this->setLog(sprintf('房源信息:%s', json_encode($houseInfo)));
         if ($houseInfo['operateState'] != 1) {
             $this->setLog(sprintf('房源状态[%d]无效,不处理', $houseInfo['operateState']));
             continue;
         }
         if ($houseInfo['isVisible'] == 0 && $houseInfo['expireWorker'] != 'propertyReport') {
             $this->setLog(sprintf('房源已经违规[isVisible=%d, expireWorker=%s],不处理', $houseInfo['isVisible'], $houseInfo['expireWorker']));
             continue;
         }
         $isHouseIllegal = $houseIllegalFilter->execute($houseInfo, $logContent);
         $this->setLog(implode(PHP_EOL, $logContent));
         if ($isHouseIllegal) {
             $this->setLog('正常房源');
             continue;
         }
         $this->setLog('房源违规');
         $params = array('cityId' => $cityId, 'propId' => $houseId, 'newIsVisible' => 0, 'newModifyDate' => time(), 'newExpireDate' => 0);
         $apiResponse = array();
         /** 调用API违规房源 */
         for ($i = 0; $i < 3; $i++) {
             /**
              * @var Bll_Service_Client_HttpResponse $apiResponse
              */
             $apiResponse = Bll_Service_House::esfUpdatePropertyInfo($params);
             if ($apiResponse->isSucceeded()) {
                 break;
             }
         }
         if ($apiResponse->isFailed()) {
             $this->setLog(sprintf('调用API超时: %s', json_encode($apiResponse->getTransferInfo())));
         } else {
             $this->setLog(sprintf('调用API的返回信息: %s', json_encode($apiResponse->getResponse())));
         }
         if (isset($apiResponse['status']) && strcasecmp('ok', $apiResponse['status']) == 0) {
             $this->setLog('设置房源状态违规成功');
         } else {
             $this->setLog('设置房源状态违规失败');
         }
         $reasonArr = array('propId' => $houseId, 'brokerId' => $brokerId, 'type' => 2, 'reason' => '房源信息不实!', 'postTime' => time(), 'mid' => 0);
         Model_Log_AjkIllegalHouse::writeHouseIllegalInfo($reasonArr);
         $hpData = array('ProId' => $houseId, 'Remark' => '虚假房源违规', 'BrokerId' => $brokerId, 'CityId' => $cityId, 'Type' => 1, 'OperateId' => 0, 'From' => __CLASS__);
         Model_House_AjkHpProSpreadChange::insertProSpreadChange($hpData);
         $data = array('houseId' => $houseId, 'planId' => 0, 'brokerId' => $brokerId, 'cityId' => $cityId, 'type' => 103, 'remark' => '虚假房源违规', 'flag' => 0, 'addDate' => time(), 'dealRemark' => '', 'operateId' => 0, 'from' => __CLASS__, 'siteType' => 1);
         if (!Model_House_UpDown_Task::create($data, date('Ymd'))->save()) {
             $this->setLog('上下架通知失败');
         }
     }
     $this->setShCommonSleepTime(1);
 }
Exemplo n.º 12
0
 /**
  * 批量下掉经纪人的房源
  *
  * @param array $params
  * @param array $houseIds
  * @param string $remark
  * @param int $operateId
  * @return array
  */
 private static function offLineHouse($params, $houseIds, $remark, $operateId = 0)
 {
     $result = array();
     $data = static::buildHouseLog($params, 21, $remark, $operateId);
     foreach ($houseIds as $offLineHouseId) {
         $data['houseId'] = $offLineHouseId;
         if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $result[] = $remark . $offLineHouseId . ' 日志写入失败';
             continue;
         }
     }
     return $result;
 }
Exemplo n.º 13
0
 /**
  * 写房源日志
  * @param $params
  * @param $type
  * @param $remark
  * @param $operate_id
  * @return mixed
  */
 public static function writeHouseLogV2($params, $remark)
 {
     $data = self::buildPropLog($params, $remark, self::$brokerId);
     //写房源日志
     Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
 }
Exemplo n.º 14
0
 /**
  * 内部实际处理函数
  *
  * @throws Exception
  */
 public function run()
 {
     //根据游标获取日志文件
     $records = Model_Log_HouseLogNew::data_access($this->date)->filter_by_op('id', '>', $this->cursor)->limit($this->limit)->find();
     //无处理数据推出
     if (empty($records)) {
         $this->noLogQuit('no data need fix');
     }
     $this->addLogger('获取房源日志数据为' . json_encode($records));
     //solr处理
     $this->addLogger('solr处理开始');
     $this->noticeSolr($records);
     $this->addLogger('solr处理结束');
     //房源推广变更日志
     $this->addLogger('房源推广变更日志处理开始');
     $this->proSpreadChangeLogCreate($records);
     $this->addLogger('房源推广变更日志处理结束');
     //房源第一次推广日志
     $this->addLogger('房源第一次推广日志处理开始');
     $this->proFirstSpreadLogCreate($records);
     $this->addLogger('房源第一次推广日志处理结束');
     //房源操作日志
     $this->addLogger('房源操作日志处理开始');
     $this->proActionLogCreate($records);
     $this->addLogger('房源操作日志处理结束');
     //设置游标
     $this->setFlag(array('cursor' => $this->cursor + $this->limit));
     $this->addLogger('当次PHP执行完成');
 }
Exemplo n.º 15
0
 public static function broker_restitution($params)
 {
     $all_return[] = "队列(" . $params['id'] . ")开始处理";
     $all_return[] = '金铺系统返还';
     //todo 查询用户所有定价计划,开启计划,上线房源
     $ajk_broker_id = $params['broker_id'];
     //获取金铺经纪人broker_id
     $jpBrokerInfoObj = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($params['broker_id']);
     $params['broker_id'] = $jpBrokerInfoObj->id;
     //获取由于余额用完停止的计划
     $fixInfoObjs = Model_Plan_Jp::getNoBalancePlan($params['broker_id']);
     foreach ($fixInfoObjs as $fixInfoObj) {
         $plan_log = array();
         $plan_log['id'] = $params['id'];
         $plan_log['plan_id'] = $fixInfoObj->id;
         $plan_log['broker_id'] = $ajk_broker_id;
         $plan_log['city_id'] = $fixInfoObj->cityId;
         $plan_log['type'] = $params['type'];
         $plan_log = Bll_JpFixPlanBll::build_plan_log($plan_log, 8, "系统返还", 0);
         //写计划日志
         if (!Model_House_UpDown_PlanLog::create($plan_log, date('m'))->save()) {
             $all_return[] = "计划" . $plan_log['planId'] . "房源推广日志写入失败";
         } else {
             $all_return[] = "计划" . $plan_log['planId'] . "房源推广日志写入成功";
         }
         //计划开启
         $fixInfoObj->status = 2;
         $fixInfoObj->stopReason = 0;
         if (!$fixInfoObj->save()) {
             return array('status' => 0, 'msg' => array("定价计划" . $plan_log['planId'] . ",更新失败"));
         }
         //获取房源列表
         $houseInfoObjs = Model_House_JpHouseIdx::getHouseInfoByFixPlanId($plan_log['planId']);
         if ($houseInfoObjs) {
             foreach ($houseInfoObjs as $houseInfoObj) {
                 $prop_log['id'] = $params['id'];
                 $prop_log['pro_id'] = $houseInfoObj->id;
                 $prop_log['plan_id'] = $plan_log['planId'];
                 $prop_log['broker_id'] = $ajk_broker_id;
                 $prop_log['city_id'] = $houseInfoObj->cityId;
                 $prop_log['type'] = $params['type'];
                 $prop_log = Bll_JpPropBll::build_prop_log($prop_log, 5, "系统返还", 0);
                 //写房源日志
                 if (!Model_Log_HouseLogNew::create($prop_log, date('Ymd'))->save()) {
                     $all_return[] = "房源" . $houseInfoObj->id . "系统返还后房源推广日志写入失败";
                 } else {
                     $all_return[] = "房源" . $houseInfoObj->id . "系统返还后房源推广日志写入成功";
                 }
                 //获取房源分表信息
                 $houseClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfoObj->houseType);
                 $houseObj = $houseClass::getPropInfoByPk($houseInfoObj->id);
                 //更新展示房源状态
                 $houseObj->isList = 1;
                 if ($houseObj->save()) {
                     $all_return[] = "houseType=" . $houseInfoObj->houseType . ",更新分表isList=1成功";
                 } else {
                     $all_return[] = "houseType=" . $houseInfoObj->houseType . ",更新分表isList=1失败";
                 }
             }
         }
     }
     return Bll_JpPropBll::build_return(1, $all_return);
 }
Exemplo n.º 16
0
 /**
  * 小区合并修改计划信息
  *
  * @param $queue
  * @return bool
  */
 public function communityMerge($queue)
 {
     if ($queue['planId'] == 0 || $queue['proId'] == 0) {
         $this->setMsg('房源Id、计划Id不能为空');
         return false;
     }
     /** 判断计划状态 */
     $planInfo = Model_Plan_EsfAjkPropSpread::getPlanInfoByIdEx($queue['planId']);
     if ($planInfo['tradetype'] != 1 || $planInfo['bidVersion'] != 2) {
         $this->setMsg(sprintf('计划[%d]信息错误[%d - %d]', $queue['planId'], $planInfo['tradetype'], $planInfo['bidVersion']));
         return false;
     }
     if ($planInfo['status'] != Model_Plan_EsfAjkPropSpread::ONLINE && $planInfo['status'] != Model_Plan_EsfAjkPropSpread::ONQUEUE) {
         $this->setMsg(sprintf('计划[%d]不在推广、排队中[%d]', $queue['planId'], $planInfo['status']));
         return true;
     }
     if ($planInfo['propId'] != $queue['proId']) {
         $this->setMsg(sprintf('房源Id[%d - %d]不一致', $queue['proId'], $planInfo['propId']));
         return true;
     }
     $houseInfo = Bll_House_EsfHouse::getHouseBaseInfoEx($queue['proId'], $planInfo['cityId']);
     if (empty($houseInfo)) {
         $this->setMsg(sprintf('房源[%d]信息没有获取到', $queue['proId']));
         return true;
     }
     $housePrice = intval($houseInfo['proPrice'] * 10000);
     $priceIntervalInfo = Model_House_EsfPrice::get_price($planInfo['cityId'], $housePrice);
     if (empty($priceIntervalInfo)) {
         $this->setMsg(sprintf('房源[%d]没有获取到价格段信息[%d]', $queue['proId'], $housePrice));
         return true;
     }
     $priceId = $priceIntervalInfo['id'];
     $communityId = $houseInfo['commId'];
     $data = array('commId' => $communityId);
     if (!Model_Plan_EsfAjkPropSpread::updatePlan($queue['planId'], $data)) {
         $this->setMsg(sprintf('更新计划[%d]信息[%s]失败', $queue['planId'], json_encode($data)));
         return false;
     }
     $bucketInfo = Model_Choice_EsfBidBucket::get_bucket_info($communityId, $priceId);
     if (empty($bucketInfo)) {
         Model_Choice_EsfBidBucket::init_bucket_info($communityId, $priceId, $planInfo['cityId']);
     }
     Model_Choice_EsfBidBucket::increment_used_num_ex($communityId, $priceId);
     $this->setMsg(sprintf('更新计划[%d]信息[%s]成功', $queue['planId'], json_encode($data)));
     $planInfo['proPriceInt'] = $planInfo['propriceint'];
     //todo 添加房源日志 type 小区合并,区域板块变更
     Model_Log_HouseLogNew::create(array('houseId' => $queue['propId'], 'planId' => $queue['planId'], 'brokerId' => $queue['brokerId'], 'cityId' => $planInfo['cityId'], 'type' => Const_ProLogType::LOG_COMMUNITY_MERGE_PROP_CHANGE, 'changeType' => Const_ProPlanChangeType::COMM_MERGE_PROP_CHANGE, 'remark' => '小区合并,精选房源信息变更', 'operatorId' => $this->qInfo['operationId'], 'siteType' => 1), date('Ymd'))->save();
     return $this->choiceComputeRank(array_merge($planInfo, $data));
 }
Exemplo n.º 17
0
 /**
  * 写房源日志
  *
  * @param array $params
  * @param int $type
  * @param string $remark
  * @return array
  */
 private static function notifySolr($params, $type, $remark)
 {
     $params['ajkBrokerId'] = $params['brokerId'];
     $data = self::build_prop_log($params, $type, $remark);
     if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         return Bll_HzPropBll::build_return(1, sprintf('精选房源[%d]变更为[%s]失败', $params['proId'], $remark));
     } else {
         return Bll_HzPropBll::build_return(1, sprintf('精选房源[%d]变更为[%s]成功', $params['proId'], $remark));
     }
 }
Exemplo n.º 18
0
 /**
  * 精选该上没上,该下没下
  *
  * @param array $queue
  * @return array
  */
 public static function notifySolrUpDown($queue)
 {
     $params = array();
     $params['houseId'] = $queue['proId'];
     $params['plan_id'] = 0;
     $params['ajk_broker_id'] = $queue['brokerId'];
     $params['city_id'] = 0;
     $params['changeType'] = 412;
     $houseChoicePlan = Model_Plan_Jp::getChoicePlanByHouseIdEx($queue['proId']);
     if (empty($houseChoicePlan)) {
         $remark = sprintf('房源[%d]没有获取到精选计划信息', $queue['proId']);
         $params['city_id'] = Model_Broker_AjkBrokerExtend::getCityIdByBrokerId($queue['brokerId']);
         $params['type'] = Const_ProLogType::LOG_CHOICE_NOFITY_SOLR_DOWN;
         $data = self::buildPropLog($params, $remark, 0);
         Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
         return Bll_HzPropBll::build_return(1, $remark);
     }
     $params['city_id'] = $houseChoicePlan['cityId'];
     $params['plan_id'] = $houseChoicePlan['id'];
     if ($houseChoicePlan['status'] == Model_Plan_Jp::ENUM_STATUS_ONLINE) {
         $params['type'] = Const_ProLogType::LOG_CHOICE_NOFITY_SOLR_UP;
         $remark = sprintf('房源[%d]精选计划[%d]在推广中', $queue['proId'], $houseChoicePlan['id']);
         $data = self::buildPropLog($params, $remark, 0);
         Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
         return Bll_HzPropBll::build_return(1, $remark);
     }
     $params['type'] = Const_ProLogType::LOG_CHOICE_NOFITY_SOLR_DOWN;
     $remark = sprintf('房源[%d]精选计划[%d - %d]不在推广中', $queue['proId'], $houseChoicePlan['id'], $houseChoicePlan['status']);
     $data = self::buildPropLog($params, $remark, 0);
     Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
     return Bll_HzPropBll::build_return(1, $remark);
 }
 public function handle_request()
 {
     //分表
     $date = date('Ymd');
     $id = 0;
     //获取游标
     $dateFlag = $this->getFlag();
     if (!empty($dateFlag)) {
         $date = $dateFlag['date'];
         $id = $dateFlag['id'];
     }
     //竞价队列数据获取
     $ProLogList = Model_Log_HouseLogNew::getProLogList($date, $id, $this->limit);
     //判断当前队列是否处理完成
     if (empty($ProLogList)) {
         //判断是否切换表
         if ($date < date('Ymd')) {
             $date = date('Ymd', strtotime($date) + 24 * 3600);
             $id = 0;
             //记录表游标
             $this->setFlag(array('date' => $date, 'id' => $id));
         }
         //休息1秒钟
         $this->setShCommonSleepTime(1);
         $this->setLog('处理完成');
         exit;
     }
     //队列数据处理
     foreach ($ProLogList as $list) {
         $id = $list['id'];
         $this->setFlag(array('date' => $date, 'id' => $id));
         $this->setLog(json_encode($list));
         $this->setLogPrefix(sprintf('[brokerId=%d, houseId=%d, type=%d]', $list['brokerId'], $list['houseId'], $list['type']));
         //1-新发,2-编辑,3-删除,4-房源更新,5-推广,6-取消推广,7-第二天推广,8 -违规, 9-到期, 10-加入计划, 11-移出计划,12-取消第二天推广,13-精选排队中,14-精选推广,15-取消精选推广或排队
         //20-套餐房源推广,21-套餐房源取消推广
         $notifyBidQueueType = array(2, 3, 8, 9, 11, Const_ProLogType::LOG_REMOVE_FROM_COMBO, Model_Log_HouseLogNew::TYPE_COMMUNITY_AREA_CHANGE_EX, Const_ProLogType::LOG_PRICE_INTERVAL_CHANGE, Const_ProLogType::LOG_COMMUNITY_MERGE);
         if (!in_array($list['type'], $notifyBidQueueType)) {
             $this->setLog(sprintf('不需处理[notifyBidQueueType: %s]', implode(',', $notifyBidQueueType)));
             continue;
         }
         //房源移出定价计划
         if ($list['type'] == 11) {
             $this->proRemoveFromPlan($list);
             continue;
         }
         //房源修改,价格变更
         if ($list['type'] == 2) {
             if ($list['changeType'] == Const_ProPlanChangeType::PRO_PRICE_CHANGE) {
                 $this->proEdit($list);
             } else {
                 $this->setLog(sprintf('brokerId=%d, houseId=%d, type=%d, 非价格变更', $list['brokerId'], $list['houseId'], $list['type']));
             }
             continue;
         }
         //房源取消套餐推广(非解绑状态)
         if ($list['type'] == Const_ProLogType::LOG_REMOVE_FROM_COMBO) {
             //获取该城市精选套餐解绑配置
             $isChoiceIndependentCity = Bll_City::isChoiceIndependentCity($list['cityId'], $list['siteType']);
             if (!$isChoiceIndependentCity) {
                 $this->proRemoveFromCombo($list);
             } else {
                 $this->setLog(sprintf('精选解绑城市[%d]', $list['cityId']));
             }
             continue;
         }
         /** 房源区域板块变更,判断是否要通知精选 */
         if ($list['type'] == Model_Log_HouseLogNew::TYPE_COMMUNITY_AREA_CHANGE_EX && $list['siteType'] == 2) {
             $this->hzHouseBlockIdChange($list);
             continue;
         }
         /** 二手房小区合并,判断是否要通知精选 */
         if ($list['type'] == Const_ProLogType::LOG_COMMUNITY_MERGE && $list['siteType'] == 1) {
             $this->ajkCommunityMerge($list);
             continue;
         }
         if (($list['type'] == Const_ProLogType::LOG_PROPERTY_AREA_CHANGE || $list['type'] == Const_ProLogType::LOG_BUILDING_AREA_CHANGE) && $list['siteType'] == 3) {
             $this->jpHouseBlockIdChange($list);
             continue;
         }
         if (in_array($list['type'], array(3, 8, 9))) {
             $this->proDelete($list);
             continue;
         }
         if ($list['type'] == Const_ProLogType::LOG_PRICE_INTERVAL_CHANGE && $list['siteType'] == 1) {
             $this->housePriceIntervalChange($list);
             continue;
         }
     }
     //休息10毫秒
     $this->setShCommonSleepTime(0.01);
 }
Exemplo n.º 20
0
 /**
  * 112 房源手动停止套餐推广
  * 前端判断:判断房源是否竞价,已经竞价,写竞价下架队列
  * 后端:写房源下线日志
  *
  * @param $params
  */
 public static function pro_stop_combo($params)
 {
     $all_return = array("队列(" . $params['id'] . ")开始处理");
     //写入下线日志
     $data = self::build_prop_log($params, 21, "房源取消套餐推广", $params['broker_id']);
     Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
     $all_return[] = "房源" . $params['pro_id'] . "取消套餐推广日志写入成功";
     return self::build_return(1, $all_return);
 }
Exemplo n.º 21
0
 public function handle_request()
 {
     //分表
     $date = date('Ymd');
     $id = 0;
     //获取游标
     $dateFlag = $this->getFlag($this->_cursorPath);
     if (!empty($dateFlag)) {
         $date = $dateFlag['date'];
         $id = $dateFlag['id'];
     }
     //获取房源日志
     $ProLogList = Model_Log_HouseLogNew::getProLogListByCityId($date, $id, $this->_city, $this->_mod, $this->limit);
     //判断当前队列是否处理完成
     if (empty($ProLogList)) {
         //判断是否切换表
         if ($date < date('Ymd')) {
             $date = date('Ymd', strtotime($date) + 24 * 3600);
             $id = 0;
             //记录表游标
             $this->setFlag(array('date' => $date, 'id' => $id), $this->_cursorPath);
         }
         //休息1秒钟
         $this->setShCommonSleepTime(1);
         $this->setLog('处理完成');
         exit;
     }
     //队列数据处理
     foreach ($ProLogList as $list) {
         $this->_taskInfo = $list;
         $id = $list['id'];
         $this->setLog(sprintf('开始处理队列: %s', json_encode($list)));
         if ($list['siteType'] == 1) {
             $this->noticeComboSolrAjk($list);
             $this->noticeDownSolrAjk($list);
             // 精选房源
             $this->noticeChoiceSolrAjkAPI($list);
             // 板块精选房源
             $this->noticeBlockChoiceSolrAjkAPI($list);
             //房源推广变更日志(二手房)
             $this->proSpreadChangeLogCreateAjk($list);
             //房源第一次推广日志
             $this->proFirstSpreadLogCreate($list);
             //房源操作日志
             $this->proActionLogCreate($list);
             //活动房源通知更新
             $this->updateActivityAjk($list);
             /** 通知小区信息变更 */
             $this->noticeCommunityInfoChange($list, 1);
         } elseif ($list['siteType'] == 2) {
             $this->noticeComboSolrZf($list);
             $this->noticeDownSolrZf($list);
             // 精选房源
             $this->noticeChoiceSolrZfAPI($list);
             // 房源更新
             $this->updateSolrZf($list);
             //房源推广变更日志(租房)
             $this->proSpreadChangeLogCreateHz($list);
             //活动房源通知更新
             $this->updateActivityZf($list);
             /** 通知小区信息变更 */
             $this->noticeCommunityInfoChange($list, 2);
         } elseif ($list['siteType'] == 3) {
             $this->noticeComboSolrJp($list);
             $this->noticeDownSolrJp($list);
             //精选房源
             $this->noticeChoiceSolrJpAPI($list);
             //金铺房源更新
             $this->updateSolrJp($list);
             //房源推广变更日志(金铺)
             $this->proSpreadChangeLogCreateJp($list);
         } else {
             //记录处理日志
             $this->setLog(sprintf('处理失败[siteType=%d]', $list['siteType']));
             continue;
         }
         $this->setFlag(array('date' => $date, 'id' => $id), $this->_cursorPath);
     }
     $this->setFlag(array('date' => $date, 'id' => $id), $this->_cursorPath);
     //休息10毫秒
     $this->setShCommonSleepTime(0.01);
 }
Exemplo n.º 22
0
 /**
  * 房产季,取消标签 702
  * hz
  * @param $params
  * @return array
  */
 public static function activityResRemoveHz($params)
 {
     $returnLog = array();
     array_push($returnLog, "队列(" . json_encode($params['id']) . ")开始处理");
     if (empty($params['pro_id'])) {
         array_push($returnLog, "房源ID为空");
         return self::build_return(1, $returnLog);
     }
     //获取房源信息
     $propInfo = Model_House_HzProp::get_prop_info_by_prop_id($params['pro_id']);
     if (empty($propInfo)) {
         array_push($returnLog, "房源信息为空");
         return self::build_return(1, $returnLog);
     }
     //房源日志写入   房产季取消标签 23
     $data = self::build_prop_log($params, Const_ProLogType::LOG_ACTIVITY_RES_REMOVE, "房产季活动取消标签" . ";队列表id为" . $params['id'], $params['broker_id']);
     $data['siteType'] = 2;
     if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         array_push($returnLog, "房产季活动取消标签日志写入失败");
         return self::build_return(0, $returnLog);
     }
     array_push($returnLog, "房产季活动取消标签日志写入");
     return self::build_return(1, $returnLog);
 }
Exemplo n.º 23
0
 /**
  * 公共房源日志写入
  * @param $type
  * @param $desc
  * @throws Exception_BllErrorException
  */
 private function writePropLog($type, $desc)
 {
     $data = Bll_HzPropBll::build_prop_log($this->params, $type, "房源{$this->params['pro_id']}{$desc}", $this->params['ajk_broker_id']);
     if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         throw new Exception_BllErrorException("房源{$this->params['pro_id']}{$desc}日志写入失败");
     } else {
         $this->allReturn[] = "房源{$this->params['pro_id']}{$desc}日志写入";
     }
 }
Exemplo n.º 24
0
 public function handle_request()
 {
     //分表
     $date = date('Ymd');
     $id = 0;
     //获取游标
     $dateFlag = $this->getFlag();
     if (!empty($dateFlag)) {
         $date = $dateFlag['date'];
         $id = $dateFlag['id'];
     }
     //竞价队列数据获取
     $ProLogList = Model_Log_HouseLogNew::getProLogList($date, $id, $this->limit);
     //判断当前队列是否处理完成
     if (empty($ProLogList)) {
         //判断是否切换表
         if ($date < date('Ymd')) {
             $date = date('Ymd', strtotime($date) + 24 * 3600);
             $id = 0;
             //记录表游标
             $this->setFlag(array('date' => $date, 'id' => $id));
         }
         //休息1秒钟
         $this->setShCommonSleepTime(1);
         $this->setLog(date('Y-m-d H:i:s') . ' 处理完成');
         exit;
     }
     //队列数据处理
     foreach ($ProLogList as $list) {
         $id = $list['id'];
         $time = 0;
         //查询房源的发布时间
         if ($list['siteType'] == 1) {
             //二手房
             $ajkProInfo = Bll_House_EsfHouse::getHouseInfo($list['houseId'], $list['cityId']);
             if ($ajkProInfo->postDate) {
                 $time = $ajkProInfo->postDate;
             }
         } elseif ($list['siteType'] == 2) {
             $hzProInfo = Model_House_HzPropSearch::get_prop_by_prop_id($list['cityId'], $list['houseId']);
             if ($hzProInfo['created']) {
                 $time = $hzProInfo['created'];
             }
         } elseif ($list['siteType'] == 3) {
             $jpProInfo = Model_House_JpHouseIdx::getPropInfoByPk($list['houseId']);
             if ($jpProInfo['createTime']) {
                 $time = strtotime($jpProInfo['createTime']);
             }
         }
         //写索引表
         if (!empty($time)) {
             //查询数据是否存在
             $ProLogIndex = Model_Log_HouseLogIndexNew::getProLogIndexByProId($list['houseId'], date('Ymd', strtotime($list['addDate'])), $list['siteType'], date('Ymd', $time));
             if (!empty($ProLogIndex)) {
                 //记录处理日志
                 $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . ' 城市id:' . $list['cityId'] . ' 经纪人:' . $list['brokerId'] . ' 房源:' . $list['houseId'] . ' 网站:' . $list['siteType'] . '  房源创建时间:' . date('Y-m-d H:i:s', $time) . ' remark:索引已存在');
                 continue;
             }
             try {
                 Model_Log_HouseLogIndexNew::create(array('proId' => $list['houseId'], 'datei' => date('Ymd', strtotime($list['addDate'])), 'siteType' => $list['siteType']), date('Ymd', $time))->save();
             } catch (Exception $e) {
                 print_r($e);
             }
             //记录处理日志
             $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . ' 城市id:' . $list['cityId'] . ' 经纪人:' . $list['brokerId'] . ' 房源:' . $list['houseId'] . ' 网站:' . $list['siteType'] . '  房源创建时间:' . date('Y-m-d H:i:s', $time) . ' remark:创建索引');
         } else {
             //记录处理日志
             $this->setLog(date('Y-m-d H:i:s') . ' id:' . $list['id'] . ' 城市id:' . $list['cityId'] . ' 经纪人:' . $list['brokerId'] . ' 房源:' . $list['houseId'] . ' 网站:' . $list['siteType'] . '  remark:未找到房源信息');
         }
     }
     $this->setFlag(array('date' => $date, 'id' => $id));
     //休息10毫秒
     $this->setShCommonSleepTime(0.01);
 }
Exemplo n.º 25
0
 /**
  * 增加money产生的公共动作
  * @param string $descript
  * @throws Exception_BllErrorException
  */
 private function addMoneyCommon($descript = '')
 {
     // 上线前判断余额 Jackin
     $userId = Bll_Broker_MainBusiness::getDataByEsfId($this->params['ajk_broker_id'])->memberId;
     try {
         $balanceInfo = Bll_Service_Payment::balance(Const_PaymentApp::HZ_DEFAULT, array('userId' => $userId));
     } catch (Exception $e) {
         throw new Exception_BllErrorException(sprintf('调用api失败: %s userId=%d broker_id=%d ajk_broker_id=%d', $e->getMessage(), $userId, $this->params['broker_id'], $this->params['ajk_broker_id']));
     }
     if ($balanceInfo['status'] == 'error') {
         throw new Exception_BllErrorException(sprintf('%s ajkBrokerId(%d) 获取余额失败', $descript, $this->params['ajk_broker_id']));
     } elseif ($balanceInfo['data']['balance'] <= 0) {
         throw new Exception_BllErrorException(sprintf('%s ajkBrokerId(%d) 余额(%d)不足', $descript, $this->params['ajk_broker_id'], $balanceInfo['data']['balance']));
     }
     $this->allReturn = array(sprintf('hz:%s ajkBrokerId(%d) 当前余额(%d) ', $descript, $this->params['ajk_broker_id'], $balanceInfo['data']['balance']));
     //获取刷爆$descript的计划
     $plans = Dao_Broker_HzPlan::get_broker_plan($this->params['broker_id'], 7);
     if (empty($plans)) {
         $this->allReturn[] = '没有获取到 status=7 的计划';
         return;
     }
     $plan_ids = array();
     foreach ($plans as $plan) {
         $plan_ids[] = $plan['id'];
     }
     // 获取所有房子并上线
     $plans_props = Bll_HzFixPlan::get_plan_props($plan_ids, $this->params['city_id']);
     if (empty($plans_props)) {
         $this->allReturn[] = sprintf('没有获取到计划(%s)的房源', implode(',', $plan_ids));
         return;
     }
     foreach ($plans_props as $plan_id => $props) {
         // 更新计划状态
         if (Bll_HzPropBll::switchUpOrDown()) {
             if (!Dao_Broker_HzPlan::update_plan_status($plan_id, Const_HzPlan::SPREAD)) {
                 $this->allReturn[] = "更新计划[{$plan_id}]数据失败";
             }
         } else {
             $this->allReturn[] = "开关关闭,计划[{$plan_id}]数据不再更新";
         }
         // 记录计划上线日志
         $data = Bll_HzFixPlanBll::build_plan_log($this->params, 8, "{$descript},计划上线", $this->params['broker_id']);
         if (!Model_House_UpDown_PlanLog::create($data, date('m'))->save()) {
             $this->allReturn[] = "{$descript},计划[{$plan_id}]上线写入失败";
         } else {
             $this->allReturn[] = "{$descript},计划[{$plan_id}]上线写入";
         }
         foreach ($props['props'] as $prop) {
             if (Bll_HzPropBll::switchUpOrDown()) {
                 if (Dao_Broker_HzProp::change_prop_status($prop['proid'], Const_HzStatus::ONLINE) && Model_Plan_HzPlanning::updatePlanningByPropId($prop['proid'], Const_HzPlan::SPREAD, Const_HzPlan::SPREAD_TYPE)) {
                     $this->allReturn[] = "房源{$prop['proid']}上线成功";
                 } else {
                     $this->allReturn[] = "房源{$prop['proid']}上线失败";
                 }
             } else {
                 $all_return[] = "开关关闭,房源[{$prop['proid']}]状态不改变";
             }
             $data = Bll_HzPropBll::build_prop_log($this->params, 5, "房源上线", $this->params['broker_id']);
             $data['planId'] = $plan_id;
             $data['houseId'] = $prop['proid'];
             if (!Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
                 $this->allReturn[] = "房源{$prop['proid']}上线日志写入失败";
             } else {
                 $this->allReturn[] = "房源{$prop['proid']}上线日志写入";
             }
         }
     }
 }
Exemplo n.º 26
0
 /**
  * 505 套餐转入
  *  1. 获取经纪人当前的套餐信息
  *  2. 如果经纪人没有套餐
  *      1. 下掉经纪人所有的的套餐房源&竞价计划
  *  3. 判断经纪人当前在线的房源数和经纪人当前生效的套餐能够推广的房源数
  *      1. 如果当前推广的房源数 大于 套餐可以推广的房源数,把多余的房子下掉(按关系表的更新时间,优先下线更新时间早的)
  *      2. 如果当前推广的房源数 小于 套餐可以推广的房源数,把套餐到期的房子下掉(按关系表的更新时间,优先上线更新时间晚的)
  *
  * @param $queueInfo
  */
 public static function comboImport($params)
 {
     //除日志内容外,基本复制 self::comboExpire
     $allReturn = array("队列(" . $params['id'] . ")开始处理");
     //获取经纪人当前在用的套餐
     $brokerCombo = Bll_Combo_Broker_BrokerComboInfo::getBrokerCurrentCombo($params['broker_id'], Bll_Combo_Broker_BrokerComboInfo::SITE_TYPE_JP);
     //经纪人当前在线房源,按照update_time asc排序
     $brokerOnlineProps = Model_Combo_HouseRelation::data_access('jp')->filter('brokerId', $params['broker_id'])->filter_by_op('state', '>=', 101)->filter_by_op('state', '<=', 199)->sort('updateTime', 'asc')->find_all();
     $allReturn[] = "经纪人当前套餐ID:" . $brokerCombo['comboId'] . ",可推广jp房源数:" . $brokerCombo['jpPropNum'] . ",经纪人在线房源数:" . count($brokerOnlineProps);
     if (!empty($brokerCombo)) {
         //套餐转入,不用下房源,只需要上线房源即可,获取经纪人需要自动上架的房源,state=到期 按照update_time desc 排序
         $brokerAutoProp = Model_Combo_HouseRelation::data_access('jp')->filter('brokerId', $params['broker_id'])->filter('state', Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE)->sort('updateTime')->find_all();
         if (!empty($brokerAutoProp)) {
             foreach ($brokerAutoProp as $key => $prop) {
                 if ($key < $brokerCombo['jpPropNum'] - count($brokerOnlineProps)) {
                     //房源信息验证
                     $check = self::propCheck($prop->houseId, $prop->brokerId);
                     if (!$check['flg']) {
                         $allReturn[] = "房源" . $prop->houseId . "无法上线," . $check['data'];
                         continue;
                     }
                     //房源上线 更新数据 关系表状态 state=上线
                     $prop->state = Model_Combo_HouseRelation::ENUM_HOUSE_ONLINE;
                     $prop->save();
                     //写入上线日志
                     $params['pro_id'] = $prop->houseId;
                     $data = Bll_JpPropBll::build_prop_log($params, 20, "房源开始套餐推广", $params['broker_id']);
                     Model_Log_HouseLogNew::create($data, date('Ymd'))->save();
                     $allReturn[] = "套餐转入,房源" . $params['pro_id'] . "开始套餐推广日志写入成功";
                 }
             }
         }
     } else {
         $allReturn[] = "套餐转入,当前没有查询到套餐,不处理";
     }
     return Bll_JpPropBll::build_return(1, $allReturn);
 }