public function dealTask($task)
 {
     $currentUsedNum = $task['usedNum'];
     $trueUsedNum = Bll_Choice_JpBidBucket::countBucketChoicePlan($task['blockId'], $task['newBlockId'], $task['houseType'], $task['priceId']);
     printf('正在处理 队列id %s, blockId %s, newBlockId %s, houseType %s, priceId %s 结果是: userNum: %s, 实际: %s, 状态:%s' . PHP_EOL, $task['id'], $task['blockId'], $task['newBlockId'], $task['houseType'], $task['priceId'], $currentUsedNum, $trueUsedNum, $currentUsedNum == $trueUsedNum ? 'success' : 'error');
     if ($currentUsedNum == $trueUsedNum) {
         return true;
     }
     $result = Model_Choice_JPBidBucket::data_access()->filter('id', $task['id'])->find_only();
     $result->usedNum = $trueUsedNum;
     $result->save();
     printf('更新usedNum结果: %s' . PHP_EOL, $result ? '更新成功' : '更新失败');
     return true;
 }
Beispiel #2
0
 /**
  * 金铺-精选房源设置
  *
  * @param int $ajkBrokerId
  * @param int $cityId
  * @param int $propId
  * @param array $params
  *
  * @return array
  */
 public static function jp_setting($ajkBrokerId, $cityId, $propId, $params = array())
 {
     //获取精选推广预算
     $brokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($ajkBrokerId);
     $brokerCompanyId = $brokerInfo['BaseInfo']['COMPANYID'];
     $choiceSet = APF::get_instance()->get_config('choice_set');
     if (isset($choiceSet[$brokerCompanyId]) && !empty($choiceSet[$brokerCompanyId])) {
         $pageAttribute['min_budget'] = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MIN_BUDGET'];
         $pageAttribute['max_budget'] = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MAX_BUDGET'];
     } else {
         $pageAttribute['min_budget'] = $choiceSet['default']['jp']['JP_CHOICE_MIN_BUDGET'];
         $pageAttribute['max_budget'] = $choiceSet['default']['jp']['JP_CHOICE_MAX_BUDGET'];
     }
     $jpBrokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($ajkBrokerId);
     //check房源是否已经加入精选推广
     $bidObj = Model_Plan_Jp::getBidPlanByHouseIdEx($ajkBrokerId, $propId);
     if (!empty($bidObj)) {
         if ($bidObj['status'] == 2 || $bidObj['status'] == 6) {
             return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源已经加入精选推广');
         } elseif ($bidObj['status'] == 3) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源正在结算中,请稍后...');
         }
     }
     $bidChoiceCount = Model_Plan_Jp::getBidChoiceInfoEx($cityId, $ajkBrokerId);
     $status = isset($bidObj['status']) ? $bidObj['status'] : 0;
     if (count($bidChoiceCount) >= self::ALL_JP_PLAN_NUM && $status != 4) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '精选推广房源已经超过' . self::ALL_JP_PLAN_NUM . '套');
     }
     if (0 == $jpBrokerInfo) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '您不是金铺经纪人');
     }
     /** 获取房源基本信息 */
     $propInfo = Bll_House_JpHouseInfo::getHouseInfoById($propId);
     if (empty($propInfo)) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不存在');
     }
     /** 判断 e_house_rank 是否有记录没有则添加  */
     try {
         Model_Jinpu_HouseRank::data_access()->find_by_pk($propId);
     } catch (Exception $e) {
         $houseRank = array(Model_Jinpu_HouseRank::ID => $propId, Model_Jinpu_HouseRank::FINAL_SCORE => 1, Model_Jinpu_HouseRank::STAGE => 1, Model_Jinpu_HouseRank::RANDOM_SCORE => 1, Model_Jinpu_HouseRank::SUB_STAGE => 1, Model_Jinpu_HouseRank::SOURCE => 0);
         Model_Jinpu_HouseRank::create($houseRank)->save();
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($cityId, Const_Site::JINPU)) {
         /** 判断房源是否在套餐推广 */
         $propCombos = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($propId, Bll_Combo_HouseRelation::SITE_TYPE_JP);
         if (empty($propCombos)) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源必须在套餐推广才能参与精选');
         }
     }
     if (false == $propInfo['info']['isExquisite']) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     $limitDay = intval(date('Ymd', strtotime('-15 days')));
     $postDay = intval(date('Ymd', strtotime($propInfo['base']['createTime'])));
     if ($limitDay > $postDay) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     /** 获取板块信息 **/
     $blockArr = Bll_House_JpHouseInfo::getBlock($propInfo['base']['houseType'], $propInfo['info']);
     if (!$blockArr['blockId'] || !$blockArr['districtId']) {
         return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '请重新编辑房源,选择区域和板块');
     }
     if (!$blockArr['blockId'] && !$blockArr['newBlockId']) {
         return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源缺少板块信息');
     }
     if (isset($blockArr['newName'])) {
         $blockName = $blockArr['newName'];
     } else {
         $blockName = $blockArr['name'];
     }
     $houseBaseObj = $propInfo['base'];
     $houseInfoObj = $propInfo['info'];
     $houseInfoArr = self::convertObjToArray($houseInfoObj);
     $houseInfoArr['floor_info'] = Bll_House_JpHouseInfo::getHouseFloorInfo($houseInfoArr, $houseBaseObj['houseType']);
     $houseInfoArr['property_name'] = Bll_House_JpHouseInfo::getHousePropertyName($houseInfoObj, $houseBaseObj['houseType']);
     $pageAttribute['community_name'] = $houseInfoArr['property_name'];
     $houseInfoArr['url'] = Uri_JPHouse::build_index($cityId, $houseBaseObj['houseType']) . $propId;
     $houseInfoArr['house_type'] = $houseBaseObj['houseType'];
     $houseInfoArr['price_info'] = Bll_House_JpHouseInfo::getHousePriceInfo($houseInfoArr, $houseBaseObj['houseType']);
     $pageAttribute['houseInfoArr'] = $houseInfoArr;
     $balance = self::get_broker_balance_by_broker_id($ajkBrokerId);
     $pageAttribute['balance'] = $balance;
     if ($balance > 0) {
         $balance = sprintf('%.2f', $balance / 100);
     }
     $pageAttribute['balance_fmt'] = $balance;
     //获取价格段
     $housePrice = Bll_House_JpHouseInfo::getPrice($cityId, $houseBaseObj['houseType'], $houseInfoObj);
     $pageAttribute['price_title'] = $housePrice['price_name'];
     $priceId = 0;
     if (!empty($housePrice)) {
         $priceId = (int) $housePrice['price_id'];
     }
     //获取板块和商圈
     $blockArr = Bll_House_JpHouseInfo::getBlock($houseBaseObj['houseType'], $houseInfoObj);
     $bucketInfo = Bll_Choice_JpBidBucket::getBucketInfo($blockArr['blockId'], $blockArr['newBlockId'], $houseBaseObj['houseType'], $priceId, $cityId);
     /** 获取点击单价开始 */
     try {
         $apiParams = array('brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'price' => $housePrice['price'] ?: 0, 'blockId' => $blockArr['blockId'] ?: 0, 'newBlockId' => $blockArr['newBlockId'] ?: 0, 'houseType' => $houseBaseObj['houseType']);
         $clickPrice = Bll_Service_Choice::jpClickPrice($apiParams);
         if ($clickPrice['status'] == 'error') {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-1000)');
         }
     } catch (Exception $e) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-2000)');
     }
     if ($clickPrice['realTradeAmount'] != $clickPrice['shouldTradeAmount']) {
         $pageAttribute['favorable'] = true;
         $pageAttribute['price'] = round($clickPrice['realTradeAmount'] / 100, 2);
         $pageAttribute['origin_price'] = round($clickPrice['shouldTradeAmount'] / 100, 2);
         $pageAttribute['favorable_end_time'] = $clickPrice['rebateEndTime'];
     } else {
         $pageAttribute['favorable'] = false;
         $pageAttribute['price'] = round($clickPrice['realTradeAmount'] / 100, 2);
     }
     /** 获取点击单价结束 */
     $averageClickAndBudget = Bll_Choice_JpBidBucket::getBucketAverageClickBudget($blockArr['blockId'], $blockArr['newBlockId'], $houseBaseObj['houseType'], $priceId);
     if (!empty($averageClickAndBudget)) {
         $pageAttribute['averageClick'] = $averageClickAndBudget['averageClick'];
         $pageAttribute['averageBudget'] = $averageClickAndBudget['averageBudget'] / 100;
     }
     $pageAttribute['house_type'] = $houseBaseObj['houseType'];
     $pageAttribute['city_id'] = $cityId;
     $pageAttribute['price_id'] = $priceId;
     $pageAttribute['block_id'] = $blockArr['blockId'];
     $pageAttribute['new_block_id'] = $blockArr['newBlockId'];
     $pageAttribute['bucket_total'] = $bucketInfo['totalNum'];
     $pageAttribute['bucket_used'] = $bucketInfo['usedNum'];
     $pageAttribute['bucket_used_num'] = $bucketInfo['usedNum'];
     $pageAttribute['bucket_total_num'] = $bucketInfo['totalNum'];
     $pageAttribute['bucket_max_online_num'] = $bucketInfo['maxOnlineNum'];
     $pageAttribute['blockName'] = $blockName;
     return $pageAttribute;
 }
Beispiel #3
0
 /**
  * 获取金铺的坑位信息
  * @param array $params
  * @return array
  */
 private function do_bucket_info_jp($params)
 {
     //$key = 'bucketinfo' . intval($params['prop_id']);
     /*$memcache = APF_Cache_Factory::get_instance()->get_memcache();
     
             $bucketInfo = $memcache->get($key);
             if (!$bucketInfo) {*/
     $blockId = intval($params['block_id']);
     $newBlockId = intval($params['new_block_id']);
     $houseType = intval($params['house_type']);
     $priceId = intval($params['price_id']);
     $cityId = intval($params['city_id']);
     if (!$blockId && !$newBlockId || !$houseType || !$priceId || !$cityId) {
         return array('error' => -1, 'msg' => '参数错误。');
     }
     $bucketInfo = Bll_Choice_JpBidBucket::getBucketInfo($blockId, $newBlockId, $houseType, $priceId, $cityId);
     if (empty($bucketInfo)) {
         return array('error' => -1, 'msg' => '当前板块没有展示位。');
     }
     /*$memcache->add($key, $bucketInfo, 0, 30);
       }*/
     return array('error' => 0, 'bucket' => $bucketInfo);
 }