public static function &getInstance() { if (self::$_instance === null) { self::$_instance = new self(); } return self::$_instance; }
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'; }
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(); }
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); } }
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); }
/** * @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; }
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; }
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'; }