Пример #1
0
 public static function get_house($id, $force_master = false)
 {
     $DHouseIdx = self::getHouseIdx($id, $force_master);
     if (!isset($DHouseIdx)) {
         return null;
     }
     self::$houseCategory = $DHouseIdx->houseType <= 2 ? 'office' : 'shop';
     $house_class = Model_House_JpHouseIdx::getHouseTypeModelClass($DHouseIdx->houseType);
     if (!isset($house_class)) {
         return null;
     }
     $da = $house_class::data_access();
     if ($force_master) {
         $DHouse = $da->force_master()->find_by_pk($id, false);
     } else {
         $DHouse = $da->find_by_pk($id, false);
     }
     unset($da);
     return !$DHouse ? null : $DHouse;
 }
 private function modifyHouse($task)
 {
     //取数据
     $params = array(array('id', '>', 0), array('propertyId', '=', $task['propertyId']), array('houseType', 'in', array(1, 2, 3, 4)));
     $sort = array('id', 'asc');
     $tasks = Model_House_JpHouseIdx::getPropLists($params, $this->houseLimit, $sort);
     if (empty($tasks)) {
         return array('status' => 'none', 'msg' => 'house list is empty');
     }
     while ($tasks) {
         //处理数据
         foreach ($tasks as $key => $val) {
             $this->cursor = $val['id'];
             if ($val['isDelete'] == 1) {
                 continue;
             }
             //判断房源信息是否需要修改
             $houseModelClass = Model_House_JpHouseIdx::getHouseTypeModelClass($val['houseType']);
             $dataAccess = $houseModelClass::data_access('');
             $dataAccess->filter('id', $val['id']);
             //                $dataAccess->filter('districtId', $task['areaId']);
             //                $dataAccess->filter('blockId', $task['blockId']);
             $result = $dataAccess->get_row();
             if (empty($result)) {
                 continue;
             }
             //非自选
             if ($val['houseType'] == 1 || $val['houseType'] == 2) {
                 if ($result['buildingId'] == $task['propertyId']) {
                     try {
                         // call api update house
                         $data = array('officeId' => $val['id']);
                         $result = $this->updateBuildingHouse($data);
                         $info = $result['info'];
                         if ($result['status'] == 'ok') {
                             $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 成功 】data:' . $info);
                         } else {
                             $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 失败 】data:' . $info);
                         }
                     } catch (Exception $e) {
                         $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 异常 】');
                         $this->setLog($e->getMessage());
                     }
                 }
             } elseif ($val['houseType'] == 3 || $val['houseType'] == 4) {
                 if ($result['propertyId'] == $task['propertyId']) {
                     try {
                         // call api update house
                         $data = array('shopId' => $val['id'], 'districtId' => $this->newDistrictId, 'blockId' => $this->newBlockId);
                         $result = $this->updateShopHouse($data);
                         $info = $result['info'];
                         if ($result['status'] == 'ok') {
                             $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 成功 】data:' . $info);
                         } else {
                             $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 失败 】data:' . $info);
                         }
                     } catch (Exception $e) {
                         $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源[ ' . $val['id'] . ' ]分表[ ' . $val['houseType'] . ' ]的districtId=' . $this->newDistrictId . ',blockId=' . $this->newBlockId . ' 【 异常 】');
                         $this->setLog($e->getMessage());
                     }
                 }
             }
         }
         $this->setLog('[' . date('Y-m-d H:i:s') . '] updateHouse: 更新房源 current cursor: ' . $this->cursor);
         //取数据
         $params = array(array('id', '>', $this->cursor), array('propertyId', '=', $task['propertyId']), array('houseType', 'in', array(1, 2, 3, 4)));
         $sort = array('id', 'asc');
         $tasks = Model_House_JpHouseIdx::getPropLists($params, $this->houseLimit, $sort);
     }
     return array('status' => 'over', 'msg' => 'house list is empty');
 }
Пример #3
0
 public static function delete_prop($params)
 {
     //是否套餐经纪人,套餐单独处理
     //$broker_info = Dao_Broker_BrokerInfo::get_broker_base_info($params['broker_id']);
     if (Bll_City::isComboCity($params['city_id'])) {
         return self::delete_combo_prop($params);
     }
     if (empty($params['pro_id'])) {
         return self::build_return(0, array("房源ID为空"));
     }
     $out_return[] = "队列(" . $params['id'] . ")开始处理";
     $remark = json_decode($params['remark'], 1);
     if ($remark['fix'] == 'online') {
         //记录房源手动移除定价组日志
         $data = self::build_prop_log($params, 11, "房源移出定价组", $params['broker_id']);
         if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $all_return[] = "房源手动移出定价组日志写入成功";
         } else {
             $all_return[] = "房源手动移出定价组日志写入失败";
         }
         //写入下线日志
         $data = self::build_prop_log($params, 6, "房源下线", $params['broker_id']);
         if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $all_return[] = "房源" . $params['pro_id'] . "下线日志写入成功";
         } else {
             $all_return[] = "房源" . $params['pro_id'] . "下线日志写入失败";
         }
     } elseif ($remark['fix'] == 'stop') {
         //记录房源手动移除定价组日志
         $data = self::build_prop_log($params, 11, "房源移出定价组", $params['broker_id']);
         if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
             $all_return[] = "房源手动移出定价组日志写入成功";
         } else {
             $all_return[] = "房源手动移出定价组日志写入失败";
         }
     }
     //获取房源分表信息
     if (BLL_Fixedspread_StaticPlanUpDownSwicher::isOnline()) {
         $houseInfoObj = Model_House_JpHouseIdx::getPropInfoByPk($params['pro_id']);
         $houseClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfoObj->houseType);
         $houseObj = $houseClass::getPropInfoByPk($params['pro_id']);
         //更新删除房源时间
         $houseObj->deleteTime = date("Y-m-d H:i:s");
         $houseObj->save();
         $all_return[] = "houseType:" . $houseInfoObj->houseType . ",deleteTime:0=>" . date("Y-m-d H:i:s");
     }
     //写房源删除日志
     $data = self::build_prop_log($params, 3, "房源删除", 0);
     if (Model_Log_HouseLogNew::create($data, date('Ymd'))->save()) {
         $all_return[] = '写房源删除日志成功';
         return self::build_return(1, $all_return);
     } else {
         $all_return[] = '写房源删除日志失败';
         return self::build_return(0, $all_return);
     }
 }
Пример #4
0
 public static function getHouseInfoExt($propId)
 {
     $houseIdx = Model_House_JpHouseIdx::data_access()->filter('id', $propId)->get_row();
     if (empty($houseIdx) || $houseIdx['isDelete'] == Model_House_JpHouseIdx::ENUM_IS_DELETE_YES) {
         return array();
     }
     $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseIdx['houseType']);
     $houseInfo = $houseTypeClass::getPropInfoByIds($propId);
     if (empty($houseInfo)) {
         return array();
     }
     $house = array('base' => $houseIdx, 'info' => $houseInfo[0], 'houseType' => $houseIdx['houseType']);
     return self::getHouseExtInfo($house);
 }
Пример #5
0
 /**
  * 精选计划板块变更
  *
  * @param array $queueInfo
  * @return array
  */
 public static function houseBlockChange($queueInfo)
 {
     $choicePlanInfo = Model_Plan_Jp::getPlanInfoById($queueInfo['planId'], true);
     if (empty($choicePlanInfo)) {
         return self::buildReturn(0, '没有获取到计划');
     }
     if ($choicePlanInfo['status'] != Model_Plan_Jp::ENUM_STATUS_ONLINE && $choicePlanInfo['status'] != Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD) {
         return self::buildReturn(1, sprintf('计划状态[%d]不处理', $choicePlanInfo['status']));
     }
     /** 获取房源信息 */
     $houseInfo = Model_House_JpHouseIdx::getHouseInfoById($choicePlanInfo['houseId']);
     if (empty($houseInfo)) {
         return self::buildReturn(0, sprintf('没有获取到房源[%d]信息', $choicePlanInfo['houseId']));
     }
     if ($houseInfo['isDelete'] == Model_House_JpHouseIdx::ENUM_IS_DELETE_YES) {
         return self::buildReturn(0, sprintf('房源[%d]已经删除[%d]', $choicePlanInfo['houseId'], $houseInfo['isDelete']));
     }
     /** 获取房源的板块id */
     if (in_array($houseInfo['houseType'], array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_RENT, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_OFFICE_SALE))) {
         $propertyInfo = Model_House_JpBuilding::getBuildingById($houseInfo['propertyId'], array('blockId'));
     } else {
         $propertyInfo = Model_House_JpProperty::getPropertyById($houseInfo['propertyId'], array('blockId', 'isRoad'));
     }
     $blockId = $propertyInfo['blockId'];
     /** 商铺自选房源精选板块ID从房源信息表里取 */
     if (in_array($houseInfo['houseType'], array(Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_RENT, Model_House_JpHouseIdx::ENUM_HOUSE_TYPE_SHOP_SALE)) && $propertyInfo['isRoad'] == 1) {
         $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseInfo['houseType']);
         $extendHouseInfo = $houseTypeClass::getPropInfoById($houseInfo['id']);
         $blockId = $extendHouseInfo['blockId'];
     }
     /** 获取商圈ID */
     $businessCycleId = Bll_House_JpHouseInfo::getBusinessCycleId($houseInfo['cityId'], $blockId, $houseInfo['houseType']);
     /** 更新计划的板块和商圈ID */
     if (!Model_Plan_Jp::updatePlanBlockIdAndNewBlockIdById($choicePlanInfo['id'], $blockId, $businessCycleId)) {
         return self::buildReturn(0, sprintf('更新计划[%d]的板块[%d -> %d]和商圈[%d -> %d]id失败', $choicePlanInfo['id'], $choicePlanInfo['blockId'], $blockId, $choicePlanInfo['newBlockId'], $businessCycleId));
     }
     if (!Model_Choice_JPBidBucket::getBucketInfo($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId'])) {
         Model_Choice_JPBidBucket::initBucketInfo($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId'], $choicePlanInfo['cityId']);
     }
     Model_Choice_JPBidBucket::incrementUsedNumEx($blockId, $businessCycleId, $choicePlanInfo['houseType'], $choicePlanInfo['priceId']);
     return self::buildReturn(1, sprintf('更新计划[%d]的板块[%d -> %d]和商圈[%d -> %d]id成功', $choicePlanInfo['id'], $choicePlanInfo['blockId'], $blockId, $choicePlanInfo['newBlockId'], $businessCycleId));
 }
 private function getHouseList()
 {
     try {
         $modelClass = Model_House_JpHouseIdx::getHouseTypeModelClass($this->_dealType);
         $dataAccess = $modelClass::data_access('');
         $dataAccess->filter_by_op('id', '>', $this->_startId);
         $dataAccess->filter_by_op('updateTime', '>=', $this->_startTime);
         $dataAccess->filter_by_op('updateTime', '<=', $this->_endTime);
         $dataAccess->sort('id', 'asc');
         $dataAccess->limit(self::BATCH_LIMIT);
         return $dataAccess->get_all();
     } catch (Exception $e) {
         return array();
     }
 }
Пример #7
0
 /**
  * @param $houseId
  * @param $forceMaster
  * @throws Exception
  * 重新计算spreadPrice字段
  */
 public function rebuildSpreadPrice($houseId, $forceMaster)
 {
     $houseIdxInfo = Model_House_JpHouseIdx::getPropInfoByPk($houseId, $forceMaster);
     if (!empty($houseIdxInfo) && !empty($houseIdxInfo->hosueType)) {
         $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($houseIdxInfo->hosueType);
         $houseDetail = $houseTypeClass::getPropInfoByPk($houseId, $forceMaster);
         //如果没有基准价格
         $intHouseType = $houseIdxInfo->houseType;
         if (in_array($intHouseType, array(1, 3))) {
             $floPrice = $houseDetail->monthlyRent;
         } else {
             $floPrice = $houseDetail->totalPrice;
         }
         $arrBasePrice = $this->getSpreadPriceByPrice($floPrice, $intHouseType, $houseIdxInfo->cityId);
         $houseDetail->spreadPrice = $arrBasePrice['base_price'];
         $houseDetail->save();
     }
 }
Пример #8
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);
 }
Пример #9
0
 public static function propCheck($houseId, $brokerId)
 {
     //获取房源信息
     $objModel = Model_House_JpHouseIdx::data_access();
     $objHouse = $objModel->find_by_pk($houseId, false);
     if (empty($objHouse)) {
         return array('flg' => false, 'data' => '房源为空');
     }
     $jpMemberId = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($brokerId);
     if ($objHouse->memberId != $jpMemberId->id) {
         return array('flg' => false, 'data' => '没有权限操作房源');
     }
     if ($objHouse->isDelete == 1) {
         return array('flg' => false, 'data' => '删除房源无法操作');
     }
     $houseTypeClass = Model_House_JpHouseIdx::getHouseTypeModelClass($objHouse->houseType);
     $objHouseDetail = $houseTypeClass::getPropInfoByPk($houseId);
     if (empty($objHouseDetail)) {
         return array('flg' => false, 'data' => '房源不存在');
     }
     if ($objHouseDetail->isExpired) {
         return array('flg' => false, 'data' => '过期房源不能操作');
     }
     if ($objHouseDetail->isIllegal) {
         return array('flg' => false, 'data' => '违规房源不能操作');
     }
     return array('flg' => true, 'data' => '');
 }