Example #1
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $propId = $this->_params['propId'];
     //检查经纪人是否存在
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_Broker_NotFound('BrokerId: ' . $brokerId);
     }
     // 判断城市是否开通竞价业务
     $cityId = $brokerInfo->cityId;
     if (!Bll_City::isBidCity($cityId)) {
         throw new Exception_City_NotBidCity('CityId: ' . $cityId);
     }
     //房子的竞价计划
     $bidPlan = Model_Plan_EsfAjkPropSpread::getBidPlanInfoByHouseid($propId);
     if (empty($bidPlan)) {
         //房源信息
         $propInfo = Bll_House_EsfHouse::getHouseBaseInfo($propId, $brokerInfo->cityId);
         if (!$propInfo[0]->isHighQulity) {
             throw new Exception_Property_NotMultiImages("Anjuke propId: {$propId}");
         }
         throw new Exception_BidPlan_NotFound('PropId: ' . $propId);
     }
     //房源总点击
     $bidClickInfo = Model_Plan_HpProStatsDay::getPropClicks($propId, $brokerInfo->cityId);
     $data = array();
     $data['totalClicks'] = $bidClickInfo[$propId]['totalClicks'];
     //房源竞价总点击
     $data['todayClicks'] = Model_plan_HpProStatsDay::getPropClickByDate($propId, $cityId, date('Ymd'));
     //今日点击
     $data['planId'] = $bidPlan->id;
     $priceInfo = Model_House_EsfPrice::get_price($cityId, $bidPlan->propriceint);
     $data['minClickPrice'] = $priceInfo['vPrice'];
     //最小出价
     $data['minClickPriceUnit'] = '元';
     //最小出价
     //推广中 排队中
     if ($bidPlan->status == Model_Plan_EsfAjkPropSpread::ONLINE || $bidPlan->status == Model_Plan_EsfAjkPropSpread::ONQUEUE) {
         $data['planStatus'] = 1;
         // 推广中 or 排队中
         $data['budget'] = $bidPlan->budget / 100;
         //预算
         $data['budgetUnit'] = '元';
         $consume = Model_plan_HpProStatsDay::getPlanAmounts($bidPlan->id, $cityId);
         $data['budgetRemain'] = ($bidPlan->budget - $consume) / 100;
         $data['budgetRemainUnit'] = '元';
         $data['clickPrice'] = $bidPlan->offer / 100;
         //出价
         $data['clickPriceUnit'] = '元';
         $data['rankMsg'] = '排队中';
         if ($bidPlan->status == Model_Plan_EsfAjkPropSpread::ONLINE) {
             //排名
             $data['rank'] = $this->getPpcSaleRankBll($propId, $bidPlan->commId, $bidPlan->smallprice, $bidPlan->bigprice, $bidPlan->commsHpratioA, 3);
             $data['rankMsg'] = '推广中';
         }
     } else {
         $data['planStatus'] = 2;
         //已暂停
         $data['budget'] = 0;
         $data['budgetUnit'] = '元';
         $data['budgetRemain'] = 0;
         $data['budgetRemainUnit'] = '元';
         $data['clickPrice'] = 0;
         $data['clickPriceUnit'] = '元';
         $data['rankMsg'] = '已暂停';
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data);
 }
Example #2
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     //检查经纪人是否存在
     $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$brokerInfo) {
         throw new Exception_Broker_NotFound('BrokerId: ' . $brokerId);
     }
     // 判断城市是否开通竞价业务
     $cityId = $brokerInfo->cityId;
     if (!Bll_City::isBidCity($cityId)) {
         throw new Exception_City_NotBidCity('CityId: ' . $cityId);
     }
     //从  竞价计划表 找出该经纪人的所有计划  1:推广中 11: 排队中 2:删除
     $bidPlans = Model_Plan_EsfAjkPropSpread::getPlanByBroker($brokerId, Model_Plan_EsfAjkPropSpread::DEFAULTVERSION);
     $data = array('OnlinePropertyList' => array(), 'QueuedPropertyList' => array(), 'OfflinePropertyList' => array());
     if (empty($bidPlans)) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data);
     }
     $keyedPlans = array();
     foreach ($bidPlans as $plan) {
         $keyedPlans[$plan->propId] = $plan;
         //key:propId 保存时间 状态
     }
     //房源信息
     $propIds = array_keys($keyedPlans);
     $props = Bll_House_EsfHouse::getHouseBaseInfo($propIds, $brokerInfo->cityId);
     //批量获取竞价总点击
     $bidClickInfo = Model_plan_HpProStatsDay::getPropClicks($propIds, $brokerInfo->cityId);
     //批量获取图片
     $propDefImages = Model_House_AjkPropertyData::getDafImages($propIds);
     //拼接房源列表中房源数据
     $propertyList = array();
     foreach ($props as $prop) {
         $row = array();
         $row['propId'] = $prop->proId;
         $row['title'] = $prop->proName;
         $row['commId'] = $prop->commId;
         $row['commName'] = $prop->commName;
         $row['roomNum'] = $prop->roomNum;
         $row['hallNum'] = $prop->hallNum;
         $row['area'] = round($prop->areaNum);
         $row['toiletNum'] = $prop->toiletNum;
         $row['price'] = intval($prop->proPrice);
         $row['priceUnit'] = '万';
         $row['isVisible'] = $prop->isHighQulity;
         $row['isBid'] = 1;
         $row['isChoice'] = 0;
         $row['isMoreImg'] = $prop->isHighQulity;
         $row['isPhonePub'] = $prop->uriCode == 'mobile.asyn' || $prop->uriCode == 'mobile-ajk-broker.asyn' ? 1 : 0;
         $row['isVisible'] = $prop->isVisible;
         $row['createTime'] = $keyedPlans[$prop->proId]->createtime;
         $row['imgUrl'] = $propDefImages[$prop->proId];
         if ($prop->commitionType > 1) {
             $row['isEntrust'] = 1;
         } else {
             $row['isEntrust'] = 0;
         }
         $row['totalClicks'] = $bidClickInfo[$prop->proId]['totalClicks'];
         //房源竞价总点击
         $propertyList[] = $row;
     }
     // 排序
     usort($propertyList, function ($a, $b) {
         if ($a['createTime'] == $b['createTime']) {
             return 0;
         }
         return $a['createTime'] > $b['createTime'] ? -1 : 1;
     });
     // 分组
     $onlinePropertyList = array();
     //推广中列表
     $waitPropertyList = array();
     //排队中列表
     $offlinePropertyList = array();
     //推广结束列表
     foreach ($propertyList as $val) {
         switch ($keyedPlans[$val['propId']]->status) {
             case '1':
                 $onlinePropertyList[] = $val;
                 break;
             case '11':
                 $waitPropertyList[] = $val;
                 break;
             default:
                 $val['isBid'] = 0;
                 $offlinePropertyList[] = $val;
         }
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('OnlinePropertyList' => $onlinePropertyList, 'QueuedPropertyList' => $waitPropertyList, 'OfflinePropertyList' => $offlinePropertyList));
 }