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; }
/** * 金铺-精选房源设置 * * @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; }
/** * 获取金铺的坑位信息 * @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); }