/**
  * 判断经纪人是否可以添加房源精选订阅
  *
  * 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;
 }
示例#2
0
 /**
  * @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;
 }
示例#3
0
 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' => '有推广位了提醒我'));
 }
示例#5
0
 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;
     }
 }
示例#7
0
 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();
     }
 }