public static function &getInstance()
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
示例#2
0
 public function handle_request_internal()
 {
     if (!Bll_City::isShowCaseCity(static::$intBrokerCityID)) {
         $this->redirect('/user/combo/brokerhome');
         exit;
     }
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $this->params = $this->request->get_parameters();
     //回调地址
     $r_url = base64_decode($this->params['r_url']);
     if (empty($r_url)) {
         $r_url = $_SERVER['HTTP_REFERER'];
         if (empty($r_url)) {
             $r_url = '/ajkbroker/showcase/zf';
         }
     }
     $msg = $this->params['msg'];
     if (!$msg) {
         //没有报错信息,就是提示成功
         $type = $this->params['type'] ? $this->params['type'] : Const_ShowcaseOrders::SALE_DB;
         //二手房经纪人ID
         $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID'];
         if ($type == Const_ShowcaseOrders::SALE_DB) {
             //二手房
             $proCountMax = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT;
             $brokerAdProInfos = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($brokerId, true);
             $brokerAdInfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders(array('brokerId' => $brokerId), Const_ShowcaseOrders::SALE_DB);
         } else {
             //租房
             $proCountMax = Const_ShowcaseOrders::RENT_PRO_MAX_COUNT;
             $brokerAdProInfos = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdRentPropInfo($brokerId, true);
             $brokerAdInfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders(array('brokerId' => $brokerId), Const_ShowcaseOrders::RENT_DB);
         }
         //订单信息不存在
         if (empty($brokerAdInfo)) {
             APF::get_instance()->get_response()->redirect($r_url);
         }
         $dayCount = ceil((strtotime($brokerAdInfo->endDate) - strtotime($brokerAdInfo->startDate)) / 86400) + 1;
         $this->request->set_attribute('dayCount', $dayCount);
         $this->request->set_attribute('proCount', count($brokerAdProInfos));
         $this->request->set_attribute('proCount', count($brokerAdProInfos));
         $this->request->set_attribute('leftProCount', $proCountMax - count($brokerAdProInfos));
         //橱窗价格
         $tmp = array('cityId' => self::$BrokerInfo['BaseInfo']['CITYID'], 'status' => 1, 'startDate' => date('Ymd'));
         $cityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp, $type);
         $this->request->set_attribute('price', !empty($cityPrice->discountPrice) ? round($cityPrice->discountPrice / 100, 2) : 8);
     }
     //报错信息
     $this->request->set_attribute('msg', $msg);
     $this->request->set_attribute('r_url', $r_url);
     return 'Showcase_Error';
 }
示例#3
0
 public function handle_request_internal()
 {
     if (!Bll_City::isShowCaseCity(static::$intBrokerCityID)) {
         $this->redirect('/user/combo/brokerhome');
         exit;
     }
     $this->apf = APF::get_instance();
     $this->request = $this->apf->get_request();
     $this->response = $this->apf->get_response();
     $this->type = $this->getType();
     $this->brokerId = $this->getBrokerId();
     $this->userId = self::$BrokerInfo['BaseInfo']['USERID'];
     $this->cityId = self::$BrokerInfo['BaseInfo']['CITYID'];
     //存在橱窗订单信息,直接跳转至管理页面
     $brokerAdInfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders(array('brokerId' => $this->brokerId), $this->type);
     if (!empty($brokerAdInfo)) {
         $this->toManage();
     }
     //橱窗价格
     $tmp = array('cityId' => $this->cityId, 'status' => 1, 'startDate' => date('Ymd'));
     $cityPriceInfo = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp, $this->type);
     $cityPrice = empty($cityPriceInfo->discountPrice) ? 8 : round($cityPriceInfo->discountPrice / 100, 2);
     $this->request->set_attribute('cityPrice', $cityPrice);
     $this->params = $this->request->get_parameters();
     //表单提交
     if ($this->request->is_post_method() && intval($this->params['days'])) {
         $this->formAction($cityPrice);
     }
     if ($this->type == Const_ShowcaseOrders::SALE_DB) {
         $type = 'ajk';
     } else {
         $type = 'hz';
     }
     $this->request->set_attribute('type', $type);
     $this->request->set_attribute('index', 2);
     //精选推广开关
     $isChoice = !Bll_City::isChoiceCity($this->cityId) ? 0 : 1;
     $this->request->set_attribute('isChoice', $isChoice);
     $this->request->set_attribute('broker', self::$BrokerInfo);
     return $this->handle_request_index();
 }
示例#4
0
 public function handle_request()
 {
     $adSetList = $this->getRequestData();
     foreach ($adSetList as $adsetVal) {
         // 城市关闭改功能,则无需扣费
         if (in_array($adsetVal['cityId'], Bll_City::getCloseShowCaseCities())) {
             continue;
         }
         $cityPrice = 0;
         $this->createTime = time();
         $updateConsumeArr = array();
         /*
          *1.设置ad_set.status = 2,为正在处理中  更新ad_set为处理状态(更新失败,跳出继续执行下一跳数据)
          */
         $check = Bll_Broker_ShowcaseOrders::getInstance()->updateOrderInfo(array('id' => $adsetVal->id, 'status' => Const_ShowcaseOrders::STATUS_VALID), array('status' => Const_ShowcaseOrders::STATUS_DO), $this->_dateBase);
         if ($check['status'] == false) {
             continue;
         }
         $adsetVal->add_old_property_value('status', 2);
         /*
          * 2.获取昨日经纪人扣费信息 $this->y_date,$brokerId
          */
         $tmpAdConsumeData = Bll_Broker_ShowcaseConsumeQuery::getInstance()->getDataByBrokerIdAndDate($adsetVal->brokerId, $this->yDate, $this->_dateBase);
         /*
          * 3.判断 $adConsumeData 是否存在
          */
         if (empty($tmpAdConsumeData)) {
             if (!empty($this->_city_price[$adsetVal->cityId])) {
                 $cityPrice = $this->_city_price[$adsetVal->cityId];
             } else {
                 $tmpArr = array('cityId' => $adsetVal->cityId, 'status' => 1, 'startDate' => $this->yDate);
                 $tmpCityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmpArr, $this->_dateBase);
                 if ($tmpCityPrice) {
                     $cityPrice = $tmpCityPrice->discountPrice > 0 ? $tmpCityPrice->discountPrice : 0;
                 }
                 $this->_city_price[$adsetVal->cityId] = $cityPrice;
             }
             if (empty($cityPrice)) {
                 $this->textOutput($adsetVal, "扣费价格为0", true);
             }
             $adConsumeData = $this->addConsume($adsetVal, $cityPrice);
             if (empty($adConsumeData)) {
                 continue;
             }
             // 生存requestId,并保存
             $requestId = Bll_Broker_ShowcaseConsumeQuery::getInstance()->getPayMentRequestId($adConsumeData->id, $adConsumeData->dateIndex, $this->_dateBase);
             $adConsumeData->requestId = $requestId;
             $adConsumeData->updateTime = date("Y-m-d H:i:s", time());
             $adConsumeData->save();
             if ($adsetVal->startDate <= $this->yDate && $this->yDate <= $adsetVal->endDate) {
                 // 获取昨日推广房源
                 $yesterdayPropData = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerHouses($adsetVal->brokerId, $this->yDate, $this->_dateBase);
                 $yesterdayComboPropData = Bll_Broker_ShowcaseAdSetPro::getInstance()->getComboBrokerHouses($adsetVal->brokerId, $this->yDate, $this->_dateBase);
                 $yesterdayPropData = $yesterdayPropData + $yesterdayComboPropData;
                 if ($yesterdayPropData <= 0) {
                     $updateConsumeArr['status'] = 2;
                     $this->updateAdConsumeLogTable($adConsumeData, $updateConsumeArr, 1, '', '无主推房源');
                 } else {
                     $this->consumeMainProcess($adsetVal, $adConsumeData, $yesterdayPropData);
                 }
             } else {
                 $updateConsumeArr['status'] = 3;
                 $this->updateAdConsumeLogTable($adConsumeData, $updateConsumeArr, 1, '', '不在扣费范围');
             }
         } else {
             $adConsumeData = $tmpAdConsumeData[0];
             if (empty($adConsumeData->price)) {
                 $this->textOutput($adsetVal, "扣费价格为0", true);
             }
             /*
              * 4. $adConsumeData 存在
              */
             if ($adConsumeData->status == 0) {
                 // 判断是否处理过
                 // 生存requestId,并保存
                 $requestId = Bll_Broker_ShowcaseConsumeQuery::getInstance()->getPayMentRequestId($adConsumeData->id, $adConsumeData->dateIndex, $this->_dateBase);
                 $adConsumeData->requestId = $requestId;
                 $adConsumeData->updateTime = date("Y-m-d H:i:s", time());
                 $adConsumeData->save();
                 // 获取昨日推广房源
                 $yesterdayPropData = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerHouses($adsetVal->brokerId, $this->yDate, $this->_dateBase);
                 $yesterdayComboPropData = Bll_Broker_ShowcaseAdSetPro::getInstance()->getComboBrokerHouses($adsetVal->brokerId, $this->yDate, $this->_dateBase);
                 $yesterdayPropData = $yesterdayPropData + $yesterdayComboPropData;
                 if ($yesterdayPropData <= 0) {
                     $updateConsumeArr['status'] = 2;
                     $this->updateAdConsumeLogTable($adConsumeData, $updateConsumeArr, 1, '', '无主推房源');
                 } else {
                     // 扣钱操作正式开始
                     $this->consumeMainProcess($adsetVal, $adConsumeData, $yesterdayPropData);
                 }
             }
         }
         $this->updateAdsetTable($adsetVal);
     }
 }
示例#5
0
 public function handle_request()
 {
     $list = Bll_Broker_ShowcaseArrearageQuery::getInstance()->getBrokerSumList($this->_lastAdSetId, $this->_dateBase);
     //$list = Bll_Broker_ShowcaseArrearageQuery::getInstance()->getBrokerSumList(0,$this->_dateBase);
     if ($list) {
         foreach ($list as $val) {
             $this->setMyFlag($val['broker_id']);
             $data = array('brokerId' => $val['broker_id']);
             $orderinfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders($data, $this->_dateBase);
             if ($orderinfo) {
                 $lavedays = ceil((strtotime($orderinfo->endDate) - strtotime(date('Ymd'))) / 3600 / 24);
                 $brokerInfo = new Model_Broker_AjkBrokerExtend();
                 $info = $brokerInfo->getDataByBrokerId($val['broker_id']);
                 $tmp = array('cityId' => $info['cityId'], 'status' => 1, 'startDate' => date('Ymd'));
                 $cityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp, $this->_dateBase);
                 $isComboCity = $this->isComboCity($orderinfo->cityId);
                 if ($isComboCity['code'] == 200) {
                     if ($isComboCity['data']) {
                         if ($val['cnt'] >= 1) {
                             if ($orderinfo->isStop == 0 && $lavedays > 0) {
                                 $stopstatus = Bll_Broker_ShowcaseOrders::getInstance()->stopBrokerOthersAuto($orderinfo, $cityPrice->discountPrice, $this->_dateBase);
                                 if (!$stopstatus['status']) {
                                     $this->getError($this->_dateBaseName, $val['broker_id']);
                                 }
                             }
                         }
                     } else {
                         if ($val['cnt'] >= 7) {
                             if ($orderinfo->isStop == 0 && $lavedays > 0) {
                                 $stopstatus = Bll_Broker_ShowcaseOrders::getInstance()->stopBrokerOthersAuto($orderinfo, $cityPrice->discountPrice, $this->_dateBase);
                                 if (!$stopstatus['status']) {
                                     $this->getError($this->_dateBaseName, $val['broker_id']);
                                 }
                             }
                         }
                     }
                 }
             }
             /*
             if($val['cnt']>=7){
                 $data = array('brokerId'=>$val['broker_id']);
                 $orderinfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders($data,$this->_dateBase);
                 if($orderinfo){
                     $lavedays = ceil((strtotime($orderinfo->endDate)-strtotime(date('Ymd')))/3600/24);
                     if($orderinfo->isStop==0 && $lavedays > 0 ){
                         $brokerInfo =new Model_Broker_AjkBrokerExtend();
                         $info = $brokerInfo->getDataByBrokerId($val['broker_id']);
                         $tmp = array('cityId'=>$info['cityId'],'status'=>1,'startDate'=>date('Ymd'));
             
                         $cityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp,$this->_dateBase);
                         $stopstatus = Bll_Broker_ShowcaseOrders::getInstance()->stopBrokerOthers($orderinfo,$cityPrice->discountPrice,$this->_dateBase);
                         if(!$stopstatus['status']){
                             $mailSubject = date('Ymd').$this->_dateBaseName.'停止订单出错问题';
                             $mailBody    =$this->_dateBaseName.'的二手房经纪人id:'.$val['broker_id'];
                             Bll_Broker_ShowcaseCommon::getInstance()->sendMail($mailSubject,$mailBody,$this->mailArr);
                         }
                     }
                 }
             }
             */
         }
     } else {
         $this->setMyFlag($this->getLastJobId(), 'over');
         $mailSubject = $this->yDate . $this->subject;
         $mailBody = $mailSubject . "完成 完成时间:" . date("Y-m-d H:i:s", time());
         Bll_Broker_ShowcaseCommon::getInstance()->sendMail($mailSubject, $mailBody, $this->mailArr);
         $this->setShStopFlag();
         exit;
     }
 }
 public function handle_request()
 {
     $adConsumeList = $this->getRequestData();
     $sengMail = array();
     $i = $id = 0;
     foreach ($adConsumeList as $adConsumeVal) {
         $id = $adConsumeVal->id;
         $sengMail[$i]['brokerId'] = $adConsumeVal->brokerId;
         $sengMail[$i]['dateIndex'] = $adConsumeVal->dateIndex;
         ++$i;
         $this->createTime = time();
         $updateConsumeArr = array();
         $oldStatus = $adConsumeVal->status;
         /*
          *1.设置ad_consume.status = 1,为正在处理中  更新ad_consume为处理状态(更新失败,跳出继续执行下一跳数据)
          */
         $check = Bll_Broker_ShowcaseConsumeQuery::getInstance()->updateConsumeInfo($this->consumeDateIndex, array('id' => $adConsumeVal->id, 'status' => $this->consumeStatus), array('status' => 1), $this->_dateBase);
         if ($check['status'] == false) {
             $this->callBackOldStatus($adConsumeVal, $oldStatus);
             continue;
         }
         /*
          * 2.判断欠费表是否已经存在,如果存在则执行下一条
          */
         $tmpArrearageData = Bll_Broker_ShowcaseArrearageQuery::getInstance()->getDataByBrokerIdAndDateIndex($adConsumeVal->brokerId, $this->consumeDateIndex, $this->_dateBase);
         if (!empty($tmpArrearageData)) {
             $this->callBackOldStatus($adConsumeVal, $oldStatus);
             continue;
         }
         /*
          * 3.更新相关数据
          */
         // 判断 request_id 值是否存在,否则更新
         if (empty($adConsumeVal->requestId)) {
             // 生存requestId,并保存
             $requestId = Bll_Broker_ShowcaseConsumeQuery::getInstance()->getPayMentRequestId($adConsumeVal->id, $adConsumeVal->dateIndex, $this->_dateBase);
             $updateConsumeArr['requestId'] = $requestId;
             $adConsumeVal->requestId = $requestId;
         }
         // 判断 price是否存在,否则则更新
         if (empty($adConsumeVal->price)) {
             $tmpArr = array('cityId' => $adConsumeVal->cityId, 'status' => 1, 'startDate' => $this->consumeDateIndex);
             $tmpCityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmpArr, $this->_dateBase);
             if ($tmpCityPrice) {
                 $updateConsumeArr['price'] = $tmpCityPrice->discountPrice > 0 ? $tmpCityPrice->discountPrice : 0;
                 $adConsumeVal->price = $updateConsumeArr['price'];
             }
         }
         // 判断昨日推广房源是否存在
         if (empty($adConsumeVal->houseNum)) {
             $yesterdayPropData = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerHouses($adConsumeVal->brokerId, $this->consumeDateIndex, $this->_dateBase);
             if ($yesterdayPropData <= 0) {
                 $updateConsumeArr['status'] = 2;
                 $this->updateAdConsumeLogTable($adConsumeVal, $updateConsumeArr, 1, '', '无主推房源');
                 continue;
             } else {
                 $updateConsumeArr['houseNum'] = $yesterdayPropData;
                 $adConsumeVal->houseNum = $yesterdayPropData;
             }
         }
         // 更新balance
         $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($adConsumeVal->brokerId, $this->_dateBase);
         $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId);
         $balance = $balance * 100;
         $this->updateAdConsumeLogTable($adConsumeVal, $updateConsumeArr, 1);
         /*
          * 插入欠费表
          */
         $this->insertArrearage($adConsumeVal, $balance, $this->consumeStatus);
         /*
          * 执行结束
          */
         $this->callBackOldStatus($adConsumeVal, $oldStatus);
     }
     // 设置游标
     $this->setMyFlag($id);
     $this->sengDeal($sengMail);
 }
示例#7
0
 /**
  * @param $task
  * @return bool
  */
 public function dealTask($task)
 {
     $brokerId = $task['brokerId'];
     //获取订单信息
     $brokerOrderInfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders(array('brokerId' => $brokerId), $this->_dataBase);
     if (empty($brokerOrderInfo)) {
         printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '还没有购买橱窗');
         return true;
     }
     // 判断该经纪人橱窗是否过期
     if ($this->currentYMD > $brokerOrderInfo['endDate']) {
         printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '购买的橱窗已过期');
         return true;
     }
     //TODO 查询该经纪人当前推广房源数是否小于0
     if ($this->_dataBase == Const_ShowcaseOrders::SALE_DB) {
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_AJK, 1);
     } else {
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($brokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
     }
     if (empty($comboList)) {
         printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '当前还没有推广房源');
         return true;
     }
     //判断该经纪人当天是否已经扣费
     //default没有扣费记录
     $requestTimes = 0;
     $siteType = 1;
     if ($this->_dataBase == Const_ShowcaseOrders::RENT_DB) {
         $siteType = 2;
     }
     $condition = array('brokerId' => $brokerId, 'siteType' => $siteType, 'consumeDate' => $this->currentYMD);
     $limit = 1;
     $sort = array('id', 'desc');
     $brokerConsumeInfo = Bll_Broker_ShowcaseAdConsumeQueue::getBrokerIsConsume($condition, $limit, $sort);
     //有扣费记录
     if (!empty($brokerConsumeInfo)) {
         //待扣费
         if ($brokerConsumeInfo['status'] == 0) {
             printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗待扣费');
             return true;
         } elseif ($brokerConsumeInfo['status'] == 3) {
             //已经扣费
             printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗已经扣费');
             return true;
         } elseif ($brokerConsumeInfo['status'] == 2) {
             //扣费失败
             printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗扣费调用api失败');
             return true;
         } elseif ($brokerConsumeInfo['status'] == 1) {
             //余额不足,继续写入扣费记录
             $requestTimes = $brokerConsumeInfo['requestTimes'] + 1;
         }
     }
     //获取扣费price
     $tmpArr = array('cityId' => $task['cityId'], 'status' => 1, 'startDate' => $this->currentYMD);
     $tmpCityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmpArr, $this->_dataBase);
     if ($tmpCityPrice) {
         $cityPrice = $tmpCityPrice->discountPrice > 0 ? $tmpCityPrice->discountPrice : 0;
     }
     if (empty($cityPrice)) {
         printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗扣费价格为0');
         return true;
     }
     // 写扣费记录
     $adConsumeArr = array('brokerId' => $brokerId, 'amount' => $cityPrice, 'consumeDate' => $this->currentYMD, 'status' => 0, 'siteType' => $siteType, 'requestTimes' => $requestTimes, 'createTime' => time());
     Bll_Broker_ShowcaseAdConsumeQueue::dataInsert($adConsumeArr);
     printf('[%s] remark: %s' . PHP_EOL, date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗扣费记录插入成功,请求次数:' . $requestTimes);
     return true;
 }
示例#8
0
 public function handle_request_internal()
 {
     if (!Bll_City::isShowCaseCity(static::$intBrokerCityID)) {
         $this->redirect('/user/combo/brokerhome');
         exit;
     }
     //获取经纪人id
     $objRequest = APF::get_instance()->get_request();
     $cityid = self::$BrokerInfo['BaseInfo']['CITYID'];
     $objRequest->set_attribute('PayType', self::$BrokerInfo['BaseInfo']['PAYTYPE']);
     $isCombo = Bll_Combo_HouseRelation::isComboCity($cityid);
     $tmp = array('cityId' => $cityid, 'status' => 1, 'startDate' => date('Ymd'));
     $cityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp, Const_ShowcaseOrders::RENT_DB);
     $todayPrice = round($cityPrice->discountPrice / 100, 2);
     $intBrokerID = $objRequest->getBrokerId();
     //好租经纪人ID
     $hzBrokerId = Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($intBrokerID);
     $userId = $objRequest->getUserId();
     $data = array('brokerId' => $intBrokerID);
     $orderinfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders($data, $this->db);
     //判断经纪人是否有订单
     if (!$orderinfo) {
         $this->toManage('/ajkbroker/showcase/zf/');
     }
     $lavedays = ceil((strtotime($orderinfo->endDate) - strtotime(date('Ymd'))) / 3600 / 24);
     if ($orderinfo->isStop == 1 || $lavedays < 0) {
         $order_status = 'stop';
     } else {
         $objRequest->set_attribute('lavedays', $lavedays);
         $objRequest->set_attribute('lastday', date('Y-m-d', strtotime($orderinfo->endDate)));
         $order_status = 'open';
     }
     //获取参数值
     $params = APF::get_instance()->get_request()->get_parameters();
     $days = intval($params['days']);
     //status=2是停止,status=1是续费
     if ($params['status'] == 2) {
         if ($orderinfo->isStop == 0) {
             $stopstatus = Bll_Broker_ShowcaseOrders::getInstance()->stopBrokerOthers($orderinfo, $cityPrice->discountPrice, $this->db);
             if ($stopstatus['status']) {
                 $this->toManage();
             } else {
                 $this->toError($stopstatus['msg']);
             }
         } else {
             $msg = '订单类型不能操作';
             $this->toError($msg);
         }
     } elseif ($params['status'] == 1 && $days >= 1) {
         $BrokerMoney = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId);
         if ($BrokerMoney < $todayPrice) {
             $this->toError(Const_ShowcaseOrders::MONEY_NOT_ENOUGH);
         }
         $Continueorder = Bll_Broker_ShowcaseOrders::getInstance()->continueBrokerOthers($orderinfo, $days, $cityPrice->discountPrice, $this->db);
         if ($Continueorder['status']) {
             $this->toManage();
         } else {
             $this->toError($Continueorder['msg']);
         }
     } elseif ($params['status'] == 3) {
         if (!empty($params['rooms'])) {
             $proIds = explode(';', $params['rooms']);
             $filterProIds = Bll_Broker_ShowcaseAdSetPro::getInstance()->filterProIds($intBrokerID, $cityid, $this->db, $proIds);
             //有些房源不在线上展示
             if (count($filterProIds) != count($proIds)) {
                 $this->toError('有些房源没在线上推广,操作失败!');
             }
             $res = Bll_Broker_ShowcaseAdSetPro::getInstance()->insertAdProsInfo($intBrokerID, $cityid, $proIds, $this->db);
             if (!$res['status']) {
                 $this->toError($res['msg']);
             } else {
                 //插入成功,跳转至管理页面
                 if ($orderinfo->isStop == 0) {
                     $log = array();
                     $log['brokerId'] = $orderinfo->brokerId;
                     $log['cityId'] = $orderinfo->cityId;
                     $log['endDate'] = $orderinfo->endDate;
                     $log['startDate'] = $orderinfo->startDate;
                     $log['opType'] = Const_ShowcaseOrders::OPTYPE_6;
                     $log['totalDays'] = ceil((strtotime($orderinfo->endDate) - strtotime($orderinfo->startDate)) / 3600 / 24) + 1;
                     $log['createTime'] = time();
                     Bll_Broker_ShowcaseOrders::getInstance()->insertSetLog($log, $this->db);
                 }
                 $this->toManage();
             }
         }
     }
     $orderCreated = date('Ymd', $orderinfo->createTime);
     if ($orderCreated < date('Ymd')) {
         $click = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerClick($intBrokerID, date('Ymd', strtotime('-1 days')), $this->db);
         if (!$click->quantityCount) {
             $objRequest->set_attribute('YClick', 0);
         } else {
             $objRequest->set_attribute('YClick', $click->quantityCount);
         }
         $objRequest->set_attribute('IS_YClick', true);
     }
     if ($isCombo['data']) {
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($intBrokerID, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1);
         if (!empty($comboList)) {
             if (count($comboList) >= Const_ShowcaseOrders::SALE_PRO_MAX_COUNT) {
                 $fixedProInfosCnt = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT;
             } else {
                 $fixedProInfosCnt = count($comboList);
             }
         } else {
             $fixedProInfosCnt = 0;
         }
         $proInfo = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdRentPropInfo($intBrokerID);
         $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfo, 'propId');
         $proInfos = Bll_House_HzPro::getInstance()->getBrokerHzProInfo($proIds, $cityid);
         $propMianInfo = Bll_House_HzPro::getInstance()->getHzProInfoByIds($proIds);
         $propMianNew = array();
         foreach ($propMianInfo as $propMianVal) {
             $propMianNew[$propMianVal->propId]['contentBasic'] = json_decode($propMianVal->contentBasic, true);
             $propMianNew[$propMianVal->propId]['contentOther'] = json_decode($propMianVal->contentOther, true);
         }
         $proList = Bll_Broker_ShowcaseAdSetPro::getInstance()->initComboZfProData($proInfos, $propMianNew, $comboList);
     } else {
         $fixedProInfos = Bll_House_FixedPro::getInstance()->getBrokerHzFiexdProInfo($hzBrokerId);
         if (!empty($fixedProInfos)) {
             $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($fixedProInfos, 'proid');
             $proInfos_tmp = Bll_House_HzPro::getInstance()->getBrokerHzProInfo($proIds, $cityid);
             $proIdsc = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfos_tmp, 'proid');
             $proInfosc = Bll_House_HzPro::getInstance()->getBrokerHzProInfo($proIdsc, $cityid);
             if (!empty($proInfosc)) {
                 if (count($proInfosc) >= Const_ShowcaseOrders::RENT_PRO_MAX_COUNT) {
                     $fixedProInfosCnt = Const_ShowcaseOrders::RENT_PRO_MAX_COUNT;
                 } else {
                     $fixedProInfosCnt = count($proInfosc);
                 }
             } else {
                 $fixedProInfosCnt = 0;
             }
         } else {
             $fixedProInfosCnt = 0;
         }
         $proInfo = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdRentPropInfo($intBrokerID);
         $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfo, 'propId');
         $proStatus = Bll_House_FixedPro::getInstance()->getBrokerHzFiexdProStatus($proIds);
         $proInfos = Bll_House_HzPro::getInstance()->getBrokerHzProInfo($proIds, $cityid);
         $propMianInfo = Bll_House_HzPro::getInstance()->getHzProInfoByIds($proIds);
         $propMianNew = array();
         foreach ($propMianInfo as $propMianVal) {
             $propMianNew[$propMianVal->propId]['contentBasic'] = json_decode($propMianVal->contentBasic, true);
             $propMianNew[$propMianVal->propId]['contentOther'] = json_decode($propMianVal->contentOther, true);
         }
         $proList = Bll_Broker_ShowcaseAdSetPro::getInstance()->initZfProData($proInfos, $propMianNew, $proStatus);
     }
     if (count($proList) > $fixedProInfosCnt) {
         $fixedProInfosCnt = count($proList);
     }
     $objRequest->set_attribute('type', 'hz');
     $objRequest->set_attribute('index', 2);
     //精选推广开关
     $isChoice = Bll_City::isChoiceCity($cityid, Const_Site::HAOZU);
     $objRequest->set_attribute('isChoice', $isChoice);
     $objRequest->set_attribute('proList', $proList);
     $objRequest->set_attribute('fixedProInfosCnt', $fixedProInfosCnt);
     $objRequest->set_attribute('order_status', $order_status);
     $objRequest->set_attribute('todayPrice', $todayPrice);
     return 'Showcase_ZfManage';
 }
 public function dealTask($task)
 {
     $brokerId = $task['brokerId'];
     $createTime = date('Ymd', $task['createTime']);
     //获取订单信息
     $brokerOrderInfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders(array('brokerId' => $brokerId), $this->_dataBase);
     if (empty($brokerOrderInfo)) {
         $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '还没有购买橱窗'));
         return true;
     }
     // 判断该经纪人橱窗是否过期
     if ($createTime > $brokerOrderInfo['endDate']) {
         $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '还购买的橱窗已过期'));
         return true;
     }
     //判断该经纪人当天是否已经扣费
     //default没有扣费记录
     $requestTimes = 0;
     $siteType = 1;
     if ($this->_dataBase == Const_ShowcaseOrders::RENT_DB) {
         $siteType = 2;
     }
     $condition = array('brokerId' => $brokerId, 'siteType' => $siteType, 'consumeDate' => $createTime);
     $limit = 1;
     $sort = array('id', 'desc');
     $brokerConsumeInfo = Bll_Broker_ShowcaseAdConsumeQueue::getBrokerIsConsume($condition, $limit, $sort);
     //有扣费记录
     if (!empty($brokerConsumeInfo)) {
         //待扣费
         if ($brokerConsumeInfo['status'] == 0) {
             $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗待扣费'));
             return true;
         } elseif ($brokerConsumeInfo['status'] == 3) {
             //已经扣费
             $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗已经扣费'));
             return true;
         } elseif ($brokerConsumeInfo['status'] == 2) {
             //扣费失败
             $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗扣费调用api失败'));
             return true;
         } elseif ($brokerConsumeInfo['status'] == 1) {
             //余额不足,继续写入扣费记录
             $requestTimes = $brokerConsumeInfo['requestTimes'] + 1;
         }
     }
     //获取扣费price
     $tmpArr = array('cityId' => $task['cityId'], 'status' => 1, 'startDate' => $createTime);
     $tmpCityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmpArr, $this->_dataBase);
     if ($tmpCityPrice) {
         $cityPrice = $tmpCityPrice->discountPrice > 0 ? $tmpCityPrice->discountPrice : 0;
     }
     if (empty($cityPrice)) {
         $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗扣费价格为0'));
         return true;
     }
     // 写扣费记录
     $adConsumeArr = array('brokerId' => $brokerId, 'amount' => $cityPrice, 'consumeDate' => $createTime, 'status' => 0, 'siteType' => $siteType, 'requestTimes' => $requestTimes, 'createTime' => time());
     Bll_Broker_ShowcaseAdConsumeQueue::dataInsert($adConsumeArr);
     $this->setLog(sprintf('[%s] remark: %s', date('Y-m-d H:i:s'), '经纪人' . $brokerId . '橱窗扣费记录插入成功,请求次数:' . $requestTimes));
     return true;
 }
示例#10
0
 public function handle_request_internal()
 {
     if (!Bll_City::isShowCaseCity(static::$intBrokerCityID)) {
         $this->redirect('/user/combo/brokerhome');
         exit;
     }
     $objRequest = APF::get_instance()->get_request();
     $cityID = self::$BrokerInfo['BaseInfo']['CITYID'];
     $objRequest->set_attribute('PayType', self::$BrokerInfo['BaseInfo']['PAYTYPE']);
     $tmp = array('cityId' => $cityID, 'status' => 1, 'startDate' => date('Ymd'));
     $cityPrice = Bll_Broker_ConfigCityPrice::getInstance()->getCityPrice($tmp, Const_ShowcaseOrders::SALE_DB);
     $todayPrice = round($cityPrice->discountPrice / 100, 2);
     $intBrokerID = $objRequest->getBrokerId();
     $userId = $objRequest->getUserId();
     $data = array('brokerId' => $intBrokerID);
     $orderinfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders($data, $this->db);
     if (!$orderinfo) {
         $this->toManage('/ajkbroker/showcase/esf/');
     }
     $lavedays = ceil((strtotime($orderinfo->endDate) - strtotime(date('Ymd'))) / 3600 / 24);
     if ($orderinfo->isStop == 1 || $lavedays < 0) {
         $order_status = 'stop';
     } else {
         $objRequest->set_attribute('lavedays', $lavedays);
         $objRequest->set_attribute('lastday', date('Y-m-d', strtotime($orderinfo->endDate)));
         $order_status = 'open';
     }
     $objRequest->set_attribute('order_status', $order_status);
     $objRequest->set_attribute('todayPrice', $todayPrice);
     $params = APF::get_instance()->get_request()->get_parameters();
     $days = intval($params['days']);
     //status=2是停止,status=1是续费
     if ($params['status'] == 2) {
         if ($orderinfo->isStop == 0) {
             $stopstatus = Bll_Broker_ShowcaseOrders::getInstance()->stopBrokerOthers($orderinfo, $cityPrice->discountPrice, $this->db);
             if ($stopstatus['status']) {
                 $this->toManage();
             } else {
                 $this->toError($stopstatus['msg']);
             }
         } else {
             $msg = '订单类型不能操作';
             $this->toError($msg);
         }
     } elseif ($params['status'] == 1 && $days >= 1) {
         $BrokerMoney = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId);
         if ($BrokerMoney < $todayPrice) {
             $this->toError(Const_ShowcaseOrders::MONEY_NOT_ENOUGH);
         }
         $Continueorder = Bll_Broker_ShowcaseOrders::getInstance()->continueBrokerOthers($orderinfo, $days, $cityPrice->discountPrice, $this->db);
         if ($Continueorder['status']) {
             $this->toManage();
         } else {
             $this->toError($Continueorder['msg']);
         }
     } elseif ($params['status'] == 3) {
         $proIds = array();
         if (!empty($params['rooms'])) {
             $proIds = explode(';', $params['rooms']);
             $filterProIds = Bll_Broker_ShowcaseAdSetPro::getInstance()->filterProIds($intBrokerID, $cityID, $this->db, $proIds);
             //有些房源不在线上展示
             if (count($filterProIds) != count($proIds)) {
                 $this->toError('有些房源没在线上推广,操作失败!');
             }
             $res = Bll_Broker_ShowcaseAdSetPro::getInstance()->insertAdProsInfo($intBrokerID, $cityID, $proIds, $this->db);
             if (!$res['status']) {
                 $this->toError($res['msg']);
             } else {
                 //插入成功,跳转至管理页面
                 if ($orderinfo->isStop == 0) {
                     $log = array();
                     $log['brokerId'] = $orderinfo->brokerId;
                     $log['cityId'] = $orderinfo->cityId;
                     $log['endDate'] = $orderinfo->endDate;
                     $log['startDate'] = $orderinfo->startDate;
                     $log['opType'] = Const_ShowcaseOrders::OPTYPE_6;
                     $log['totalDays'] = ceil((strtotime($orderinfo->endDate) - strtotime($orderinfo->startDate)) / 3600 / 24) + 1;
                     $log['createTime'] = time();
                     Bll_Broker_ShowcaseOrders::getInstance()->insertSetLog($log, $this->db);
                 }
                 $this->toManage();
             }
         }
     }
     $orderCreated = date('Ymd', $orderinfo->createTime);
     if ($orderCreated < date('Ymd')) {
         $click = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerClick($intBrokerID, date('Ymd', strtotime('-1 days')), $this->db);
         if (!$click->quantityCount) {
             $objRequest->set_attribute('YClick', 0);
         } else {
             $objRequest->set_attribute('YClick', $click->quantityCount);
         }
         $objRequest->set_attribute('IS_YClick', true);
     }
     $isCombo = Bll_Combo_HouseRelation::isComboCity($cityID);
     if ($isCombo['data']) {
         $comboList = Bll_Combo_HouseRelation::getHouseRelations($intBrokerID, Bll_Combo_HouseRelation::SITE_TYPE_AJK, 1);
         if (!empty($comboList)) {
             if (count($comboList) >= Const_ShowcaseOrders::SALE_PRO_MAX_COUNT) {
                 $fixedProInfosCnt = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT;
             } else {
                 $fixedProInfosCnt = count($comboList);
             }
         } else {
             $fixedProInfosCnt = 0;
         }
         $proInfo = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($intBrokerID);
         $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfo, 'propId');
         $proInfos = Bll_House_EsfHouse::getHouseInfo($proIds, $cityID);
         $proList = Bll_Broker_ShowcaseAdSetPro::getInstance()->initComboEsfProData($proInfos, $comboList);
     } else {
         //获取经纪人计划
         $brokerPlanInfo = BLL_Plan_EsfPropFixedPlanRelation::get_instance()->getBrokerEsfOnlinePlan($intBrokerID);
         if (!empty($brokerPlanInfo)) {
             //计划数据不为空
             //计划IDs
             $planIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($brokerPlanInfo, 'id');
             //定价推广房源
             $fixedProInfos = Bll_Fixedspread_AjkFixedSpread::getFixedOnlineProByPlanIds($cityID, $planIds);
             $proIdsc = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($fixedProInfos, 'proId');
             $proInfosc = Bll_House_EsfHouse::getHouseInfo($proIdsc, $cityID);
             if (!empty($proInfosc)) {
                 if (count($proInfosc) >= Const_ShowcaseOrders::SALE_PRO_MAX_COUNT) {
                     $fixedProInfosCnt = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT;
                 } else {
                     $fixedProInfosCnt = count($proInfosc);
                 }
             } else {
                 $fixedProInfosCnt = 0;
             }
         } else {
             $fixedProInfosCnt = 0;
         }
         $proInfo = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($intBrokerID);
         $proIds = Bll_Broker_ShowcaseOrders::getInstance()->getObjFieldInfo($proInfo, 'propId');
         $proInfos = Bll_House_EsfHouse::getHouseInfo($proIds, $cityID);
         $proStatus = Bll_Fixedspread_AjkFixedSpread::getFixedProBy($cityID, $proIds);
         $proList = Bll_Broker_ShowcaseAdSetPro::getInstance()->initEsfProData($proInfos, $proStatus, $planIds);
     }
     if (count($proList) > $fixedProInfosCnt) {
         $fixedProInfosCnt = count($proList);
     }
     $objRequest->set_attribute('type', 'ajk');
     $objRequest->set_attribute('index', 2);
     //精选推广开关
     $isChoice = Bll_City::isChoiceCity($cityID);
     $objRequest->set_attribute('isChoice', $isChoice);
     $objRequest->set_attribute('fixedProInfosCnt', $fixedProInfosCnt);
     $objRequest->set_attribute('proList', $proList);
     return 'Showcase_EsfManage';
 }