/** * 判断经纪人是否可以添加房源精选订阅 * * 1. 是否已精选房源 * 2. 是否已设提醒房源 * 3. 是否具有精选资格房源:定价,多图,新发15天 * 4. 是否推广位已满 */ protected function hasAddChoiceRemindPermission() { // 是否已精选 $bllChoice = new Bll_Zufang_Choice(); $planInfo = $bllChoice->get_plan_by_proid($this->propId); if (!empty($planInfo)) { $planId = $planInfo->plan_id; $basicPlanInfo = $bllChoice->get_plan($planId); if ($basicPlanInfo[0]->status == 1 || $basicPlanInfo[0]->status == 13) { return array('code' => '', 'msg' => '房源已精选'); } } // 是否已订阅 $subscription = Model_Choice_Subscription::data_access()->filter('site', Model_Choice_Subscription::SITE_RENT)->filter('propId', $this->propId)->filter('bucketId', $this->bucket['id'])->find_only(); if ($subscription && $subscription['status'] == Model_Choice_Subscription::SUBSCRIPTION_START) { return array('code' => '', 'msg' => '推广位已订阅'); } // 是否可精选 // - 是否已定价/套餐 // - 是否多图 // - 是否新发15天 //套餐经纪人 还是ppc经纪人 /*$IsComboBroker = Bll_Broker_HzBroker::isComboBroker($this->brokerId); if ($IsComboBroker) { //是否套餐推广 $comboHouseRelation = Model_Combo_HouseRelation::getOnlineHousebyHouseId($this->brokerId, $this->propId, $this->broker['cityId'], Model_Combo_HouseRelation::SITE_TYPE_HZ); if(empty($comboHouseRelation)) { return array( 'code' => '', // TODO 'msg' => '不满足精选推广添加:套餐推广', ); } } else { //PPC经纪人 判定定价计划 $fixPlan = $this->prop->getFixPlan(); if(empty($fixPlan)) { return array( 'code' => '', // TODO 'msg' => '不满足精选推广添加:定价推广', ); } }*/ if (!Bll_City::isChoiceIndependentCity($this->broker['cityId'], Const_Site::ANJUKE)) { //是否套餐推广 $comboHouseRelation = Model_Combo_HouseRelation::getOnlineHousebyHouseId($this->brokerId, $this->propId, $this->broker['cityId'], Model_Combo_HouseRelation::SITE_TYPE_HZ); if (empty($comboHouseRelation)) { return array('code' => '', 'msg' => '不满足精选推广添加:套餐推广'); } } if (!($this->prop->isMultiImages() && $this->prop->getPublishedDays() <= 15)) { return array('code' => '', 'msg' => '不满足精选推广添加:多图,新发15天'); } // 是否推广位已满 if (!($this->bucket['usedNum'] >= $this->bucket['totalNum'])) { return array('code' => '', 'msg' => '推广位未满'); } return true; }
/** * @param array $conditions * @param $flag get_row()\find_all() * @return array */ public static function selectData($conditions = array(), $loadFields = array(), $flag = 'find_all') { $dataAccess = Model_Choice_Subscription::data_access(); if (!empty($loadFields)) { $dataAccess->load_field($loadFields); } if (!empty($conditions)) { foreach ($conditions as $key => $val) { $dataAccess->filter($key, $val); } } return method_exists($dataAccess, $flag) ? $dataAccess->{$flag}() : false; }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $subscriptions = Model_Choice_Subscription::data_access()->filter('site', Model_Choice_Subscription::SITE_RENT)->filter('brokerId', $brokerId)->filter('status', Model_Choice_Subscription::SUBSCRIPTION_START)->find_all(); $propIds = array(); foreach ($subscriptions as $subscription) { $propIds[] = $subscription['propId']; } $propertyList = array(); if ($propIds) { $props = Model_House_HzProp::findMultiByPropIds($propIds); foreach ($props as $prop) { $propId = $prop['propId']; $row = array(); $row['propId'] = $propId; $row['title'] = $prop->getContentBasic('title'); $row['imgUrl'] = ''; $row['commId'] = $prop->getContentBasic('commid'); $row['commName'] = $prop->getContentBasic('commname'); $row['roomNum'] = $prop->getContentBasic('roomnum'); $row['hallNum'] = $prop->getContentBasic('hallnum'); $row['toiletNum'] = $prop->getContentBasic('toilnetnum'); $row['area'] = $prop->getContentBasic('areanum'); $row['price'] = $prop->getContentBasic('pricenum'); $row['priceUnit'] = '元/月'; $row['isBid'] = 0; $row['isChoice'] = 0; $row['isVisible'] = intval($prop->getContentBasic('status') != 6); $row['isMoreImg'] = intval($prop->getContentBasic('quality')); $row['isPhonePub'] = intval($prop->getContentBasic('from') == 'mobile-ajk-broker'); $row['publishDays'] = $prop->getPublishedDays(); $row['publishDaysMsg'] = $row['publishDays'] > 0 ? "{$row['publishDays']}天前发布" : '今天发布'; $row['createTime'] = date('Y-m-d H:i:s', $prop->getContentBasic('created')); $row['updateTime'] = date('Y-m-d H:i:s', $prop->getContentBasic('updated')); $propertyList[$propId] = $row; } // 批量获取房源的默认图片 $defaultImages = Model_Image_HzImage::getDefaultImagesByHouseIds($propIds); foreach ($defaultImages as $defaultImage) { $propertyList[$defaultImage['proid']]['imgUrl'] = $defaultImage->imageUrl(); } } $result = array(); $result['status'] = Const_APIStatus::RETURN_CODE_OK; $result['data']['propertyList'] = array_values($propertyList); return $result; }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $propId = $this->_params['propId']; $bucketId = $this->_params['bucketId']; // 是否已订阅 $subscription = Model_Choice_Subscription::data_access()->filter('site', Model_Choice_Subscription::SITE_RENT)->filter('brokerId', $brokerId)->filter('propId', $propId)->filter('bucketId', $bucketId)->find_only(); if (!$subscription) { throw new Exception('订阅不存在'); // TODO } // 更新状态 if ($subscription['status'] == Model_Choice_Subscription::SUBSCRIPTION_START) { $subscription['status'] = Model_Choice_Subscription::SUBSCRIPTION_CANCEL; $subscription->save(); } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('remindStatus' => 0, 'remindStatusMsg' => '有推广位了提醒我')); }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $cityId = $this->_params['cityId']; $result['status'] = 'ok'; $propertyList = array(); $subscriptionInfo = Model_Choice_Subscription::selectData(array(Model_Choice_Subscription::SITE => Model_Choice_Subscription::SITE_AJK, Model_Choice_Subscription::BROKER_ID => $brokerId, Model_Choice_Subscription::STATUS => Model_Choice_Subscription::SUBSCRIPTION_START)); if (!empty($subscriptionInfo)) { $propIds = array(); foreach ($subscriptionInfo as $row) { $propIds[] = $row['propId']; } $houseInfo = Bll_House_EsfHouse::getHouseBaseInfo($propIds, $cityId, array('postDate' => 'desc')); //房源点击量 $proClickDao = new DAO_My_Ppc_PlanOpe(); $proClickInfo = $proClickDao->getProClick($propIds, strtotime("20120901")); foreach ($houseInfo as $row) { $propId = $row['proId']; $list['propId'] = $propId; $list['title'] = $row['proName']; $list['commId'] = $row['commId']; $list['commName'] = $row['commName']; $list['roomNum'] = $row['roomNum']; $list['hallNum'] = $row['hallNum']; $list['toiletNum'] = $row['toiletNum']; $list['area'] = round($row['areaNum']); $list['price'] = round($row['proPrice']); $list['priceUnit'] = '万'; $list['totalClicks'] = isset($proClickInfo[$propId]) ? $proClickInfo[$propId] : 0; $list['isBid'] = $list['isChoice'] = 0; $list['isMoreImg'] = $row['isHighQulity']; $list['isVisible'] = $row['isVisible']; $list['isPhonePub'] = $row['uriCode'] == 'mobile.asyn' || $row['uriCode'] == 'mobile-ajk-broker.asyn' ? 1 : 0; $list['createTime'] = $row['postDate']; $imgBll = Bll_Image_EsfHouseImage::getInstance(); $list['imgUrl'] = $imgBll->getThumbImageUrl($propId, $row['commId']); //委托房源标签 $list['isEntrust'] = $row['commitionType'] == 2 ? 1 : 0; $propertyList[] = $list; } } $result['data']['propertyList'] = $propertyList; return $result; }
public function loadRemindsAndSubscriptions() { // Load Reminds $reminds = Model_Choice_SubscriptionRemind::data_access()->filter_by_op('id', '>', $this->cursor['id'])->filter('pushStatus', Model_Choice_SubscriptionRemind::PUSH_STATUS_DEFAULT)->limit($this->per)->sort('id', 'asc')->find_all(); $keyedReminds = array(); $subscriptionIds = array(); foreach ($reminds as $remind) { $keyedReminds[$remind['id']] = $remind; $subscriptionIds[] = $remind['subscriptionId']; } $this->reminds = $keyedReminds; // Load Subscriptions if ($subscriptionIds) { $subscriptions = Model_Choice_Subscription::data_access()->filter('id', $subscriptionIds)->find_all(); $keyedSubscriptions = array(); foreach ($subscriptions as $subscription) { $keyedSubscriptions[$subscription['id']] = $subscription; } $this->subscriptions = $keyedSubscriptions; } }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $houseId = $this->_params['propId']; $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId); if (!$brokerInfo) { throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } $cityId = $brokerInfo->cityId; $isDisplaySummary = 0; if (!Bll_City::isChoiceCity($cityId, Const_Site::HAOZU)) { $data = array('totalClicks' => 0, 'balance' => 0, 'balanceUnit' => '元', 'todayClicks' => 0, 'todayConsume' => 0, 'todayConsumeUnit' => '元', 'clickPrice' => 0, 'clickPriceUnit' => '元', 'maxBucketNum' => 0, 'usedBucketNum' => 0, 'bucketId' => '', 'status' => bll_choice_EsfAPPAPIChoice::PROP_ACTIONTYPE_CHOICE_NOTFIT, 'statusMsg' => '你所在城市未开通精选业务', 'remindStatus' => -1, 'remindStatusMsg' => '不符合精选订阅条件', 'minChoicePrice' => 0, 'minChoicePriceUnit' => '元', 'maxChoicePrice' => 0, 'maxChoicePriceUnit' => '元', 'isDisplaySummary' => $isDisplaySummary); return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data); } $isDisplaySummary = 1; //获取该房子的精选计划 $bllChoice = new Bll_Zufang_Choice(); $planInfo = $bllChoice->get_plan_by_proid($houseId); $amount = 0; $totalConsume = 0; if ($planInfo) { $planId = $planInfo->plan_id; $planBasicInfo = $bllChoice->get_plan($planId); $amount = $planBasicInfo[0]->amount; $totalConsume = $planBasicInfo[0]->total_consume; } //获取 blockId, priceId $propInfo = $bllChoice->get_prop_content($houseId); if (empty($propInfo)) { return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '房源不存在'); } $content = json_decode($propInfo[0]->contentBasic, true); $price = intval($content['pricenum']); $blockId = $content['blockid']; $priceInfo = Bll_Choice_HzBidBucket::getPriceIntervalInfo($cityId, $price); $priceId = $priceInfo['id']; //获取坑位信息 $bucketInfo = Bll_Choice_HzBidBucket::getBucketInfo($blockId, $priceId); // 获取点击单价 try { $clickPriceInfo = Bll_Service_Choice::hzClickPrice(array('cityId' => $cityId, 'price' => (int) $price, 'blockId' => $blockId, 'brokerId' => $brokerId)); if ($clickPriceInfo['status'] == 'error') { return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '系统繁忙(code:-33)'); } } catch (Exception $e) { return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => '', 'message' => '系统繁忙(code:-33)'); } $clickPrice = $clickPriceInfo['realTradeAmount'] / 100; $remindStatus = -1; // -1 不符合精选订阅条件 $remindStatusMsg = '不符合精选订阅条件'; if ($planInfo && $planInfo->is_valid == 1) { $date = date('Ymd'); $propChoice = $bllChoice->get_prop_choice_info($houseId, $date, $cityId); $todayClicks = intval($propChoice[0]['bidClicks']); $todayConsume = intval($propChoice[0]['bidConsume']) / 100; $totalClicksInfo = $bllChoice->get_prop_choice_clicks($houseId, $cityId); $totalClicks = intval($totalClicksInfo[0]['bidClicks']); $balance = $amount - $totalConsume; return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('todayClicks' => $todayClicks, 'todayConsume' => round($todayConsume, 2), 'todayConsumeUnit' => '元', 'totalClicks' => $totalClicks, 'balance' => round($balance, 2), 'balanceUnit' => '元', 'clickPrice' => round($clickPrice, 2), 'clickPriceUnit' => '元', 'maxBucketNum' => 20, 'usedBucketNum' => $bucketInfo['usedNum'], 'minChoicePrice' => 20, 'minChoicePriceUnit' => '元', 'maxChoicePrice' => 50, 'maxChoicePriceUnit' => '元', 'status' => '1-1', 'statusMsg' => '推广中', 'remindStatus' => $remindStatus, 'remindStatusMsg' => $remindStatusMsg, 'isDisplaySummary' => $isDisplaySummary)); } else { if ($planInfo && $planInfo->is_valid == 13) { $totalClicksInfo = $bllChoice->get_prop_choice_clicks($houseId, $cityId); $totalClicks = intval($totalClicksInfo[0]['bidClicks']); $rank = Bll_Plan_Bid_HzBid::getChoiceWaitPosition($planInfo->plan_id, $cityId, $blockId, $priceId); return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('clickPrice' => round($clickPrice, 2), 'clickPriceUnit' => '元', 'totalClicks' => $totalClicks, 'balance' => round($amount, 2), 'balanceUnit' => '元', 'maxBucketNum' => 20, 'usedBucketNum' => $bucketInfo['usedNum'], 'minChoicePrice' => 20, 'minChoicePriceUnit' => '元', 'maxChoicePrice' => 50, 'maxChoicePriceUnit' => '元', 'status' => '1-2', 'statusMsg' => "{$rank}", 'remindStatus' => $remindStatus, 'remindStatusMsg' => $remindStatusMsg, 'isDisplaySummary' => $isDisplaySummary)); } else { //判断是否符合精选条件 多图 + 新发15天 if (false == $content['quality'] || date('Ymd', strtotime('-16 days')) > date('Ymd', $content['created'])) { return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('clickPrice' => round($clickPrice, 2), 'clickPriceUnit' => '元', 'maxBucketNum' => 20, 'usedBucketNum' => $bucketInfo['usedNum'], 'minChoicePrice' => 20, 'minChoicePriceUnit' => '元', 'maxChoicePrice' => 50, 'maxChoicePriceUnit' => '元', 'status' => '3-2', 'statusMsg' => '精选推广条件:多图+新发15天', 'remindStatus' => $remindStatus, 'remindStatusMsg' => $remindStatusMsg, 'isDisplaySummary' => $isDisplaySummary)); } } } if ($bucketInfo['usedNum'] >= $bucketInfo['totalNum']) { $status = '2-1'; $statusMsg = '推广位已满'; } else { if ($bucketInfo['usedNum'] >= $bucketInfo['maxOnlineNum']) { $status = '2-2'; $statusMsg = '可立即排队'; } else { $status = '2-3'; $statusMsg = '可立即推广'; } } // 如果推广位已满,判断推广位是否已订阅 if ($status == '2-1') { $subscription = Model_Choice_Subscription::data_access()->filter('site', Model_Choice_Subscription::SITE_RENT)->filter('brokerId', $brokerId)->filter('propId', $houseId)->filter('bucketId', $bucketInfo['id'])->filter('status', Model_Choice_Subscription::SUBSCRIPTION_START)->find_only(); if ($subscription) { $remindStatus = 1; // 1 已订阅 $remindStatusMsg = '取消推广位提醒'; } else { $remindStatus = 0; // 0 未订阅 $remindStatusMsg = '有推广位了提醒我'; } } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('clickPrice' => round($clickPrice, 2), 'clickPriceUnit' => '元', 'bucketId' => $bucketInfo['id'], 'maxBucketNum' => $bucketInfo['totalNum'], 'usedBucketNum' => $bucketInfo['usedNum'], 'minChoicePrice' => 20, 'minChoicePriceUnit' => '元', 'maxChoicePrice' => 50, 'maxChoicePriceUnit' => '元', 'status' => $status, 'statusMsg' => $statusMsg, 'remindStatus' => $remindStatus, 'remindStatusMsg' => $remindStatusMsg, 'isDisplaySummary' => $isDisplaySummary)); }
/** * @param $brokerId * @param $propId * @return bool|int * 取消房源推广位提醒 */ public function cancelChoiceSubscription($brokerId, $propId, $bucketId) { $subscriptionInfo = Model_Choice_Subscription::selectData(array(Model_Choice_Subscription::SITE => Model_Choice_Subscription::SITE_AJK, Model_Choice_Subscription::BROKER_ID => $brokerId, Model_Choice_Subscription::PROP_ID => $propId, Model_Choice_Subscription::BUCKET_ID => $bucketId, Model_Choice_Subscription::STATUS => Model_Choice_Subscription::SUBSCRIPTION_START), array(), 'find_only'); if (empty($subscriptionInfo)) { throw new Exception('订阅不存在'); } else { $subscriptionInfo['status'] = Model_Choice_Subscription::SUBSCRIPTION_CANCEL; return $subscriptionInfo->save(); } }