public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId); if (!$brokerInfo) { throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } $usrCardState = $brokerInfo->usrCardState; $usrPhotoState = $brokerInfo->usrPhotoState; $photoFileJson = json_decode($this->_params['photoFile'], true); $size = $photoFileJson['size']; $format = $photoFileJson['format']; if ($size > 1048576) { throw new Exception_Broker_UpLoadFailed('头像图片不得大于1M'); } elseif (!in_array($format, array('JPEG', 'JPG', 'GIF', 'PNG'))) { throw new Exception_Broker_UpLoadFailed('图片限jpg、jpeg、gif、png格式'); } $photoFile = 'display/' . $photoFileJson['hash'] . '_' . $photoFileJson['host']; //调用上传头像的接口 $setNewPhoto = Bll_BrokerBaseBll::setNewPhoto($brokerId, $photoFile); if ($setNewPhoto == 1) { if ($usrCardState == 1 || $usrCardState == 2) { Bll_Broker_BrokerCheckInfo::autoSendPass($brokerId); } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => 1)); } else { throw new Exception_Broker_UpLoadApiFailed($setNewPhoto['message']); } }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId); if (!$brokerInfo) { throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } $usrPhotoState = $brokerInfo->usrPhotoState; $usrPhotoTmpState = $brokerInfo->usrPhotoTmpState; $userPhotoTmp = $brokerInfo->userPhotoTmp; $userPhoto = $brokerInfo->userPhoto; $photoStaus = 0; $smallImageUrl = ''; $bigImageUrl = ''; $failedReason = ''; if ($usrPhotoState == 2 || $usrPhotoTmpState == 1) { $photoStaus = 1; //已认证 $smallImageUrl = Util_DisplayImages::get_img_url($userPhoto, -1, '600x798'); $bigImageUrl = Util_DisplayImages::get_img_url($userPhoto, -1, '1200x1596'); } elseif ($usrPhotoState == 0 && empty($userPhoto) && empty($userPhotoTmp)) { $photoStaus = 0; //未认证 $smallImageUrl = ''; $bigImageUrl = ''; } elseif ($usrPhotoState == 1 || $usrPhotoTmpState == 0 && !empty($userPhotoTmp)) { $photoStaus = 2; //认证中 $smallImageUrl = $usrPhotoState == 1 ? Util_DisplayImages::get_img_url($userPhoto, -1, '600x798') : Util_DisplayImages::get_img_url($userPhotoTmp, -1, '600x798'); $bigImageUrl = $usrPhotoState == 1 ? Util_DisplayImages::get_img_url($userPhoto, -1, '1200x1596') : Util_DisplayImages::get_img_url($userPhotoTmp, -1, '1200x1596'); } elseif ($usrPhotoState == 3 || $usrPhotoTmpState == 2) { $photoStaus = 3; //认证失败 $smallImageUrl = $usrPhotoTmpState == 2 ? Util_DisplayImages::get_img_url($userPhotoTmp, -1, '600x798') : Util_DisplayImages::get_img_url($userPhoto, -1, '600x798'); $bigImageUrl = $usrPhotoTmpState == 2 ? Util_DisplayImages::get_img_url($userPhotoTmp, -1, '1200x1596') : Util_DisplayImages::get_img_url($userPhoto, -1, '1200x1596'); $brokerCheckInfoBll = new Bll_Broker_BrokerCheckInfo(); if ($usrPhotoState == 2) { $brokerTheLastCheck = $brokerCheckInfoBll->getBrokerTheLastCheckInfo($brokerId, 1); $failedReason = $brokerTheLastCheck['content']; } else { $failedReason = $brokerCheckInfoBll->getNoPassExp($brokerId, 1); //1图像 } } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => $photoStaus, 'bigImageUrl' => $bigImageUrl, 'smallImageUrl' => $smallImageUrl, 'failedReason' => $failedReason)); }
public function handle_request_internal() { $request = APF::get_instance()->get_request(); $broker = self::$BrokerInfo; $base_domain = APF::get_instance()->get_config('base_domain'); $objBLL = new Bll_Broker_ManageEditMobile($broker); //得到修改手机号码逻辑层对象 $uri_params = $request->get_parameters(); $newMobile = $uri_params['newmobile']; $reMobile = $uri_params['remobile']; $Code = $uri_params['code']; $act = $uri_params['act']; switch ($act) { case 'edit': if ($objBLL->editMobile($newMobile, $Code)) { Uri_Http::redirect_header("/ajkbroker/broker/editmobile/W0QQactZsuccess"); } else { Uri_Http::redirect_header("/ajkbroker/broker/editmobile/W0QQactZerror"); } break; case 'success': case 'error': $request->set_attribute("url", '/ajkbroker/broker/brokerinfo'); default: $allowEdit = $objBLL->allowEditMobile($broker['BaseInfo']['brokerId']); //判断经纪人有没有修改过 $request->set_attribute("allowEdit", $allowEdit); $request->set_attribute("UserMobile", $broker['BaseInfo']['mobile']); break; } $brokerCheckInfoBll = new Bll_Broker_BrokerCheckInfo(); //电话锁定状态 $phoneLockInfo = $brokerCheckInfoBll->getLockStatus($broker['BaseInfo']['brokerId']); if ($phoneLockInfo['company_id'] == $broker['BaseInfo']['companyId'] && $phoneLockInfo['status'] == 1) { $phoneLockStatus = 1; } else { $phoneLockStatus = 0; } $releaseMobileUrl = "http://my." . $base_domain . "/broker/releasemp?mobilesec="; $request->set_attribute('phoneLockStatus', $phoneLockStatus); $request->set_attribute("CityId", $broker['BaseInfo']['cityId']); $request->set_attribute("act", $act); $request->set_attribute("releaseMobileUrl", $releaseMobileUrl); return 'Broker_EditMobile'; }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId); if (!$brokerInfo) { throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } $usrCardState = $brokerInfo->usrCardState; $usrPhotoState = $brokerInfo->usrPhotoState; $userCardFileJson = json_decode($this->_params['userCardFile'], true); $size = $userCardFileJson['size']; $width = $userCardFileJson['width']; $height = $userCardFileJson['height']; $format = $userCardFileJson['format']; //判断图片大小,格式是否正确 if ($size > 614400 || $size < 20480) { throw new Exception_Broker_UpLoadFailed('pic_error,文件应大于20KB,小于600KB'); } elseif ($width < 320 || $height < 200) { throw new Exception_Broker_UpLoadFailed('pic_error,图片应大于320*200像素'); } elseif (!in_array($format, array('JPEG', 'JPG', 'GIF', 'PNG'))) { throw new Exception_Broker_UpLoadFailed('pic_error,图片限jpg、jpeg、gif、png格式'); } $idCard = $this->_params['idCardNo']; //验证身份证是否正确 $res = $this->checkIdCard($idCard); if (!$res) { throw new Exception_Broker_UpLoadApiFailed('身份证号码错误。'); } //验证身份证是否重复 $data = Model_Broker_AjkBrokerextend::check_usercard_exit($idCard, $brokerId, $brokerInfo->cityId); if ($data) { throw new Exception_Broker_UpLoadApiFailed('身份证号码重复。'); } //都保存md5值 显示规则统一 显示ok 调用上传身份证的接口 $userCardFile = 'display/' . $userCardFileJson['hash'] . '_' . $userCardFileJson['host']; if ($usrCardState == 0 || $usrCardState == 3) { //存身份证号码 $brokerInfo->userCard = $idCard; $brokerInfo->save(); $setNewIdCard = Bll_BrokerBaseBll::setNewIdCard($brokerId, $brokerInfo->trueName, $userCardFile, $idCard); if ($setNewIdCard == 1) { if ($usrPhotoState == 1 || $usrPhotoState == 2) { Bll_Broker_BrokerCheckInfo::autoSendPass($brokerId); } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => 1)); } else { throw new Exception_Broker_UpLoadApiFailed($setNewIdCard['message']); } } else { throw new Exception_Broker_UpLoadApiFailed('身份证不能重复上传。'); } }
public function handle_request_internal() { $request = APF::get_instance()->get_request(); $broker = self::$BrokerInfo; $brokerIdentity = Bll_BrokerBaseBll::get_instance()->get_broker_identity_info_v2($broker['BaseInfo']['brokerId']); if (empty($broker['BaseInfo']) || empty($brokerIdentity)) { apf_require_class("Uri_Http"); //Uri_Http::redirect_header("/user/broker/new/brokerinfo/"); Uri_Http::redirect_header("/ajkbroker/broker/modify/brokerinfo/"); } $broker['UsrCardState'] = $brokerIdentity['IdentityInfo']['usrCardState']; $broker['UsrPhotoTmpState'] = $brokerIdentity['IdentityInfo']['userPhotoTmpState']; $broker['UsrPhotoState'] = $brokerIdentity['IdentityInfo']['userPhotoState']; $broker['BnsCardState'] = $brokerIdentity['IdentityInfo']['bnsCardState']; $broker['CheckState'] = $brokerIdentity['IdentityInfo']['checkState']; // $area = $this->getBlockName(substr($broker['BaseInfo']['areaCode'], 4, 4)); // $block = $this->getBlockName(substr($broker['BaseInfo']['areaCode'], 8, 4)); $area = Bll_Commtype_Api::getInfoByTypeCodeV2(substr($broker['BaseInfo']['areaCode'], 0, 8)); $block = Bll_Commtype_Api::getInfoByTypeCodeV2($broker['BaseInfo']['areaCode']); $broker['CityName'] = $this->getCityName($broker['BaseInfo']['cityId']); $broker['AreaName'] = $area['typeName']; $broker['BlockName'] = $block['typeName']; //获得最后提交资料 $lastupdata = Bll_BrokerBaseBll::get_instance()->getLastPostFile($broker['BaseInfo']['brokerId']); $brokerCheckInfoBll = new Bll_Broker_BrokerCheckInfo(); //获取经纪人最近一次头像或名片审核不通过的原因记录 if ($broker['UsrPhotoState'] == 2) { $brokerTheLastCheck = $brokerCheckInfoBll->getBrokerTheLastCheckInfo($broker['BaseInfo']['brokerId'], 1); $faceLastCheckInfo = $brokerTheLastCheck['content']; } else { $faceLastCheckInfo = $brokerCheckInfoBll->getNoPassExp($broker['BaseInfo']['brokerId'], 1); //1图像 } $brokerTheLastCheckInfo = $brokerCheckInfoBll->getBrokerTheLastCheckInfo($broker['BaseInfo']['brokerId'], 2); //名片 $mingpianLastCheckInfo = $brokerCheckInfoBll->getNoPassExp($broker['BaseInfo']['brokerId'], 3); //名片 $idCardLastCheckInfo = $brokerCheckInfoBll->getNoPassExp($broker['BrokerId'], 2); //电话锁定状态 $phoneLockInfo = $brokerCheckInfoBll->getLockStatus($broker['BaseInfo']['brokerId']); if ($phoneLockInfo['company_id'] == $broker['BaseInfo']['companyId'] && $phoneLockInfo['status'] == 1) { $phoneLockStatus = 1; } else { $phoneLockStatus = 0; } $request->set_attribute('broker', $broker); $request->set_attribute('lastupdata', $lastupdata); $request->set_attribute('faceLastCheckInfo', $faceLastCheckInfo); $request->set_attribute('mingpianLastCheckInfo', $mingpianLastCheckInfo); $request->set_attribute('phoneLockStatus', $phoneLockStatus); $request->set_attribute('idCardLastCheckInfo', $idCardLastCheckInfo); $request->set_attribute('brokerTheLastCheckInfo', $brokerTheLastCheckInfo); return 'Broker_BrokerInfo'; }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId); if (!$brokerInfo) { throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } $usrCardState = $brokerInfo->usrCardState; $userCardFile = $brokerInfo->userCardFile; $userCard = $brokerInfo->userCard; $userCardStatus = 0; $bigImageUrl = ''; $smallImageUrl = ''; $failedReason = ''; if ($usrCardState == 0 && empty($userCardFile)) { $userCardStatus = 0; //未认证 $bigImageUrl = ''; $smallImageUrl = ''; } elseif ($usrCardState == 1) { $userCardStatus = 2; //认证中 $bigImageUrl = Util_DisplayImages::get_img_url($userCardFile, -1, '1200x750'); $smallImageUrl = Util_DisplayImages::get_img_url($userCardFile, -1, '1000x625'); } elseif ($usrCardState == 2) { $userCardStatus = 1; //已认证 $bigImageUrl = Util_DisplayImages::get_img_url($userCardFile, -1, '1200x750'); $smallImageUrl = Util_DisplayImages::get_img_url($userCardFile, -1, '1000x625'); } elseif ($usrCardState == 3) { $userCardStatus = 3; //认证失败 $bigImageUrl = Util_DisplayImages::get_img_url($userCardFile, -1, '1200x750'); $smallImageUrl = Util_DisplayImages::get_img_url($userCardFile, -1, '1000x625'); $brokerCheckInfoBll = new Bll_Broker_BrokerCheckInfo(); $failedReason = $brokerCheckInfoBll->getNoPassExp($brokerId, 2); } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => $userCardStatus, 'userCard' => $userCard, 'bigImageUrl' => $bigImageUrl, 'smallImageUrl' => $smallImageUrl, 'failedReason' => $failedReason)); }
private function checkConsume($brokerId, $cityId) { $result = array('isFree' => 0, 'isPlan' => 0, 'data' => ''); $isComboCity = Bll_Combo_HouseRelation::ifComboCity($cityId); if ($isComboCity) { $conbosProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($brokerId); // 检查是否购买套餐 if ($conbosProNum['totalSalePropNum'] <= 0) { $result['isPlan'] = 0; echo json_encode($result); exit; } else { $result['isPlan'] = 1; } } else { $result['isPlan'] = 1; } // 检查城市是否收费 $checkFree = Bll_Broker_EntrustPrice::getInstance()->checkCityConsumeStatus($cityId); if ($checkFree == true) { // 收费 // 获取余额 $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($brokerId, 'sale'); $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); // 获取委托价格 $startDate = date("Ymd"); $price = Bll_Broker_EntrustPrice::getInstance()->getSalePrice(self::$BrokerInfo['BaseInfo']['CITYID'], $startDate); $price = $price / 100; if ($balance >= $price) { $isEnough = 1; } else { $isEnough = 0; } $result['isFree'] = 0; $result['data'] = array('isEnough' => $isEnough, 'balance' => $balance . "元", 'price' => $price . "元"); } else { // 不收费 $houseId = intval($this->params['houseId']); $brokerName = self::$BrokerInfo['BaseInfo']['TRUENAME']; $brokerPhone = self::$BrokerInfo['BaseInfo']['USERMOBILE']; $consume = Bll_Broker_EntrustQuery::getInstance()->saleRush($houseId, $brokerId, $brokerName, $brokerPhone, $cityId, Const_Entrust::RUSH_FROM_PC, false, $isComboCity); $result['isFree'] = 1; $result['data'] = $consume; } echo json_encode($result); exit; }
/** * 获取房源 * @param $brokerId 二手房经纪人id * @param $dateIndex * @param $dataBase * @return array|int */ public function getBrokerHouses($brokerId, $dateIndex, $dataBase) { if ($dataBase == Const_ShowcaseOrders::SALE_DB) { return Model_House_PpcdsStatsBrokerDay::getInstance()->getFixedSalePpcByBrokerIDAndDayDate($brokerId, $dateIndex); } elseif ($dataBase == Const_ShowcaseOrders::RENT_DB) { // 二手房经纪人id 转化成 租房经纪人id $rentBrokerId = Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($brokerId); return Model_House_PropPromotionData::getInstance()->getFixPropNumByBrokerIDAndReportDate($rentBrokerId, $dateIndex); } else { return 0; } }
public function handle_request() { $arrearageList = $this->getRequestData(); if (!empty($arrearageList)) { foreach ($arrearageList as $arrearageVal) { $updateArrearageArr = array(); $apiData = $otherData = ''; /* *1.设置status = 1,为正在处理中 更新为处理状态(更新失败,跳出继续执行下一跳数据) */ $check = Bll_Broker_EntrustArrearage::getInstance()->updateOneData(array('id' => $arrearageVal->id, 'status' => array(0, 2)), array('status' => 1)); if (empty($check)) { continue; } $arrearageVal->add_old_property_value('status', 1); $commission = $this->getCommissionDataById($arrearageVal->commissionId); if (!$commission) { $otherData = '委托关系表中不存在数据'; $updateArrearageArr['status'] = 2; $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); continue; } // 获取房东房源信息 $house = $this->getCommissionProPDataById($commission->houseId); if (!$house) { $otherData = '房东房源表中不存在数据'; $updateArrearageArr['status'] = 2; $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); continue; } /* * 2. 获取账户余额 */ $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($arrearageVal->brokerId, 'sale'); $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); $balance = $balance * 100; $updateArrearageArr['balance'] = $balance; if ($balance < $arrearageVal->price) { // 余额不足,插入消费日志 $otherData = '余额不足'; $updateArrearageArr['status'] = 2; } else { /* * 3.余额足够,调用扣费API */ $commName = mb_strlen($house->commName, "utf-8") <= 12 ? $house->commName : mb_substr($house->commName, 0, 12, "utf-8") . "..."; $note = "抢委托扣费,房源信息:" . $commName . " " . $house->userName . "(房源id" . $house->id . ")"; $apiResult = Bll_Broker_EntrustConsume::getInstance()->callCosumeApi($userId, $arrearageVal->requestId, $arrearageVal->price, $note); // 扣费成功 if ($apiResult['status'] === true) { $updateArrearageArr['status'] = 3; $otherData = '扣费成功'; $apiData = $apiResult['apiData']; // 更新adconsume表状态 $tmpConsumeData = Bll_Broker_EntrustConsume::getInstance()->getDataById($arrearageVal->consumeId, $arrearageVal->dateIndex); if ($tmpConsumeData) { $consumeData = $tmpConsumeData[0]; $consumeData->balance = $balance; $consumeData->status = 5; $consumeData->updateTime = date("Y-m-d H:i:s", time()); $consumeData->save(); } } else { // 扣费失败 $updateArrearageArr['status'] = 2; $otherData = '扣费失败'; } } $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); } } }
/** *增值业务插入订单操作 * $brokerid 经纪人id * $count 订单天数 * $cityid 城市id * $type 好租是 rent 二手房sale */ public function insertBrokerOrders($brokerid, $count, $cityid, $price, $type = 'sale') { $days = intval($count); $ShowcaseOrders = APF::get_instance()->get_config('ShowcaseOrders'); if ($days < $ShowcaseOrders['min'] || $days > $ShowcaseOrders['max']) { $res = array('status' => false, 'msg' => Const_ShowcaseOrders::DAYS_ERROR); return $res; } if ($type == Const_ShowcaseOrders::SALE_DB) { $Data = array('brokerId' => $brokerid); $info = Model_Broker_AdSetSale::getInstance()->getBrokerInfo($Data); if ($info) { $res = array('status' => false, 'msg' => Const_ShowcaseOrders::BROKERID_EXIST); return $res; } } elseif ($type == Const_ShowcaseOrders::RENT_DB) { $Data = array('brokerId' => $brokerid); $info = Model_Broker_AdSetRent::getInstance()->getBrokerInfo($Data); if ($info) { $res = array('status' => false, 'msg' => Const_ShowcaseOrders::BROKERID_EXIST); return $res; } } else { return false; } $data = array(); $data['brokerId'] = $brokerid; if ($type == Const_ShowcaseOrders::RENT_DB) { //好租经纪人ID $data['hzUserId'] = intval(Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($brokerid)); } $data['cityId'] = $cityid; $data['startDate'] = date('Ymd'); $ndays = $days - 1; $data['endDate'] = date('Ymd', strtotime('+' . $ndays . ' day')); $data['isStop'] = Const_ShowcaseOrders::OPEN_ORDER; $data['status'] = Const_ShowcaseOrders::STATUS_VALID; $data['createTime'] = time(); $ary = array(); $ary['brokerId'] = $brokerid; $ary['cityId'] = $cityid; $ary['startDate'] = date('Ymd'); $ary['endDate'] = date('Ymd', strtotime('+' . $ndays . ' day')); $ary['totalDays'] = $days; $ary['opType'] = Const_ShowcaseOrders::OPTYPE_1; $ary['createTime'] = time(); $order = $this->insertOrderInfo($data, $type); if ($order['status']) { $Column = Bll_Broker_ShowcaseConsumeQuery::getInstance()->addConsumeData($brokerid, $cityid, $price, 0, date('Ymd'), '新订单,插入队列', $type); if (!$Column['status']) { $res = array('status' => false, 'msg' => Const_ShowcaseOrders::COLUMN_ERROR); } $logId = $this->insertSetLog($ary, $type); if (!$logId['status']) { $res = array('status' => false, 'msg' => Const_ShowcaseOrders::LOG_ERROR); } } else { $res = array('status' => false, 'msg' => Const_ShowcaseOrders::ORDERS_ERROR); } if (!$res) { $res = array('status' => true, 'msg' => Const_ShowcaseOrders::ORDERS_OK, 'id' => $order['id']); } return $res; }
public function handlePost() { $this->request = APF::get_instance()->get_request(); $brokerId = $this->request->getBrokerId(); $cityId = $this->request->getBrokerCityId(); $params = $this->request->get_parameters(); $params['broker_id'] = $brokerId; $result = array(); try { if ($this->action == 'edit') { $houseInfo = Bll_House_EsfEdit::getHouseBaseInfo($this->houseId); /** 违规房源不可以编辑 */ if (isset($houseInfo['isIllegal']) && $houseInfo['isIllegal']) { $this->redirect2Result(Const_PublishCode::UNKNOWN_ERROR, 'ajk', 'edit', $this->houseId, '已违规房源不可编辑'); } $result = Bll_House_EsfEdit::saveHouseInfo($brokerId, $cityId, $this->houseId, $params); } if ($this->action == 'publish') { $result = Bll_House_EsfPublish::saveHouseInfo($brokerId, $params, $this->isComboBroker); if ($result['status'] == 'ok') { $this->houseId = $result['houseId']; } } /** 委托房源发布 */ if ($this->action == 'commission') { $result = Bll_House_EsfCommission::saveHouseInfo($brokerId, $cityId, $this->commissionId, $params, $this->isComboBroker); if ($result['status'] == 'ok') { $this->houseId = $result['houseId']; } } if ($result['status'] != 'ok') { $this->redirect2Result(Const_PublishCode::PUBLISH_PROP_ERROR, 'ajk', $this->action, $this->houseId, $result['info']); } } catch (Exception $e) { $params['brokerId'] = self::$intBrokerID; APF::get_instance()->get_nlogger()->log(__CLASS__, $params); $this->redirect2Result(Const_PublishCode::PUBLISH_PROP_ERROR, 'ajk', $this->action, $this->houseId, $e->getMessage()); } /** 立即推广 */ if (isset($params['broker_action']) && $params['broker_action'] == 'publish') { /** 套餐推广 */ if ($this->isComboBroker) { $spreadResult = Bll_Combo_HouseRelation::houseStartComboSpreadV2($brokerId, $cityId, array($this->houseId), Bll_Combo_HouseRelation::SITE_TYPE_AJK); if ($spreadResult['status'] != 1) { switch ($spreadResult['status']) { /** 没有套餐 */ case -1: case -2: $this->redirect2Result(Const_PublishCode::SPREAD_PROP_NO_COMBO, 'ajk', $this->action, $this->houseId, $spreadResult['msg']); break; /** 套餐未生效 */ /** 套餐未生效 */ case -3: $this->redirect2Result(Const_PublishCode::SPREAD_PROP_COMBO_ACTIVE, 'ajk', $this->action, $this->houseId, $spreadResult['msg']); break; /** 推广房源数已满 */ /** 推广房源数已满 */ case -4: case -5: $this->redirect2Result(Const_PublishCode::SPREAD_PROP_COMBO_LIMIT, 'ajk', $this->action, $this->houseId, $spreadResult['msg']); break; default: $this->redirect2Result(Const_PublishCode::SPREAD_PROP_COMBO_FAIL, 'ajk', $this->action, $this->houseId, $spreadResult['msg']); } } } else { /** 定价推广 */ if ($this->action == 'edit') { /** 定价推广失败 房源已经推广 */ if (BLL_Plan_EsfPropFixedPlanRelation::isHouseOnline($cityId, $this->houseId)) { $this->redirect2Result(Const_PublishCode::SPREAD_PROP_PLAN_IN, 'ajk', $this->action, $this->houseId, '房源已经推广'); } } $fixPlanList = BLL_Plan_EsfPropFixedPlanRelation::getBrokerValidPlan($brokerId); if (empty($fixPlanList)) { $this->redirect2Result(Const_PublishCode::UNKNOWN_ERROR, 'ajk', $this->action, $this->houseId, '获取定价计划信息失败'); } $fixPlan = $fixPlanList[0]; /** 定价推广失败 已经超出推广房源上限 */ if (!Bll_Broker_HzBroker::ajkPpcBrokerCanSpreadHouse($cityId, $brokerId)) { $this->redirect2Result(Const_PublishCode::SPREAD_PROP_OUT_LIMIT, 'ajk', $this->action, $this->houseId, '已经超出推广房源上限'); } $spreadResult = Bll_Ppc_ServiceAPI::fixPlanAddHouse($brokerId, $this->houseId, $fixPlan['id'], '23532'); if (isset($spreadResult['status'])) { if ($spreadResult['status'] != 'ok') { $this->redirect2Result(Const_PublishCode::API_ERROR, 'ajk', $this->action, $this->houseId, $spreadResult['info']); } } else { $this->redirect2Result(Const_PublishCode::API_ERROR, 'ajk', $this->action, $this->houseId, '系统繁忙(推广房源超时)'); } /** 定价推广失败 计划已经手动停止 */ if ($fixPlan['viewTime'] == 1861891200) { /** 定价推广失败 认证未通过 */ $brokerCheckState = Bll_Broker_BrokerCheckInfo::getCheckStateByBrokerId($brokerId); if ($brokerCheckState != 1) { $this->redirect2Result(Const_PublishCode::SPREAD_PROP_AUDITED_ERROR, 'ajk', $this->action, $this->houseId, '认证未通过'); } $this->redirect2Result(Const_PublishCode::SPREAD_PROP_HANDLE_STOP, 'ajk', $this->action, $this->houseId, '计划已经手动停止'); } /** 定价推广失败 账户余额不足,充值后自动推广 */ if ($fixPlan['viewTime'] == 1893427200) { $this->redirect2Result(Const_PublishCode::SPREAD_PROP_BALANCE_ERROR, 'ajk', $this->action, $this->houseId, '账户余额不足,充值后自动推广'); } } /** 推广成功 */ $this->redirect2Result(Const_PublishCode::HOUSE_SPREAD_SUCCESS, 'ajk', $this->action, $this->houseId); } /** 发布成功 */ $this->redirect2Result(Const_PublishCode::HOUSE_SAVE_SUCCESS, 'ajk', $this->action, $this->houseId); }
public function handle_request() { $arrearageList = $this->getRequestData(); foreach ($arrearageList as $arrearageVal) { $tmpAdConsumeData = array(); $this->createTime = time(); $updateArrearageArr = array(); $apiData = $otherData = ''; /* *1.设置status = 1,为正在处理中 更新为处理状态(更新失败,跳出继续执行下一跳数据) */ $check = Bll_Broker_ShowcaseArrearageQuery::getInstance()->updateOneData(array('id' => $arrearageVal->id, 'status' => array(0, 2)), array('status' => 1), $this->_dateBase); if (empty($check)) { continue; } $arrearageVal->add_old_property_value('status', 1); /* * 2. 获取账户余额 */ $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($arrearageVal->brokerId, $this->_dateBase); $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); $balance = $balance * 100; $updateArrearageArr['balance'] = $balance; if ($balance < $arrearageVal->price) { // 余额不足,插入消费日志 $otherData = '余额不足'; $updateArrearageArr['status'] = 2; } else { /* * 3.余额足够,调用扣费API */ $apiResult = Bll_Broker_ShowcaseConsumeQuery::getInstance()->callCosumeApi($userId, $arrearageVal->requestId, $arrearageVal->price, $arrearageVal->dateIndex, $this->_dateBase); // 扣费成功 if ($apiResult['status'] === true) { $updateArrearageArr['status'] = 3; $otherData = '扣费成功'; $apiData = $apiResult['apiData']; /*********仅20140630号数据*********/ if ($arrearageVal->dateIndex == 20140630 && substr($arrearageVal->requestId, 2, 3) == 496) { $tmpAdConsumeData = Bll_Broker_ShowcaseConsumeQuery::getInstance()->getDataById($arrearageVal->consumeId, 20140701, $this->_dateBase); if ($tmpAdConsumeData) { $adConsumeData = $tmpAdConsumeData[0]; $adConsumeData->balance = $balance; $adConsumeData->status = 7; $adConsumeData->updateTime = date("Y-m-d H:i:s", time()); $adConsumeData->save(); } } else { // 更新adconsume表状态 $tmpAdConsumeData = Bll_Broker_ShowcaseConsumeQuery::getInstance()->getDataById($arrearageVal->consumeId, $arrearageVal->dateIndex, $this->_dateBase); if ($tmpAdConsumeData) { $adConsumeData = $tmpAdConsumeData[0]; $adConsumeData->balance = $balance; $adConsumeData->status = 7; $adConsumeData->updateTime = date("Y-m-d H:i:s", time()); $adConsumeData->save(); } } } else { // 扣费失败 $updateArrearageArr['status'] = 2; $otherData = '扣费失败'; } } $this->updateArrearageTable($arrearageVal, $updateArrearageArr, $apiData, $otherData); } }
/** * 开始处理数据 */ protected function proccessData() { if (empty($this->jobData)) { //没有数据 if ($this->jobYmd != $this->currentYmd) { //如果job年月不等于当前年月日,则将job年月初始化为当前年月日 $this->jobYmd = $this->currentYmd; $this->id = 0; } return false; } //将相同经纪人数据合并成一个大数组 $brokerMergeData = $this->mergeBrokerData(); foreach ($brokerMergeData as $brokerId => $brokerMergeVal) { //经纪人橱窗信息 $brokerAdInfo = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerOrders(array('brokerId' => $brokerId), $this->jobType); //经纪人橱窗没有开启,则跳过处理下一个人 if (empty($brokerAdInfo) || !($brokerAdInfo->isStop == Const_ShowcaseOrders::OPEN_ORDER && $brokerAdInfo->endDate >= $this->currentYmd)) { continue; } //将同一套房源的动作作合并处理 $mergeProData = $this->mergeProData($brokerMergeVal); if (empty($mergeProData)) { continue; } //经纪人选择主推房源信息 $brokerAdSetPros = $brokerAdSetProInfo = $brokerAdSetShowPros = $brokerAdSetShowProInfo = array(); $this->actionBrokerId = $brokerId; if ($this->jobType == Const_ShowcaseOrders::SALE_DB) { $proCountMax = Const_ShowcaseOrders::SALE_PRO_MAX_COUNT; $brokerAdSetPros = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdSalePropInfo($brokerId, true); } elseif ($this->jobType == Const_ShowcaseOrders::RENT_DB) { $this->actionBrokerId = intval(Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($brokerId)); $proCountMax = Const_ShowcaseOrders::RENT_PRO_MAX_COUNT; $brokerAdSetPros = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdRentPropInfo($brokerId, true); } else { $proCountMax = 5; } //经纪人展示房源信息 $brokerAdSetShowPros = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdPropShowInfo($brokerId, $this->jobType); //提取选择房源ID组成的选择房源数组信息 if (!empty($brokerAdSetPros)) { foreach ($brokerAdSetPros as $brokerAdSetProsVal) { $brokerAdSetProInfo[$brokerAdSetProsVal->propId] = $brokerAdSetProsVal; } } //提取展示房源ID组成的展示房源数组信息 if (!empty($brokerAdSetShowPros)) { foreach ($brokerAdSetShowPros as $brokerAdSetShowProsVal) { $brokerAdSetShowProInfo[$brokerAdSetShowProsVal->propId] = $brokerAdSetShowProsVal; } } //将推广房源或者取消推广房源各自拼到一个大数组中 $spreadProsIds = $cancelProsIds = array(); foreach ($mergeProData as $mergeProVal) { if ($mergeProVal['actionType'] == 5) { //推广房源IDs $spreadProsIds[] = $mergeProVal['proId']; } else { //取消推广房源IDs $cancelProsIds[] = $mergeProVal['proId']; } } //必须展示的选择房源ID+插入系统房源ID $addChoiseProIds = $addSysProIds = $deleteProIds = array(); //编辑是否需要系统补足房源 $mustAddSysPro = false; //取消推广房源处理 if (!empty($cancelProsIds)) { foreach ($cancelProsIds as $cancelProId) { if (!empty($brokerAdSetShowProInfo[$cancelProId])) { $mustAddSysPro = true; //只有在存在房源被删除才存在系统补足操作 $brokerAdSetShowProInfo[$cancelProId]->delete(); $deleteProIds[] = $cancelProId; //插入日志表 $this->insertProLog($cancelProId, $brokerId, $brokerAdInfo->cityId, $brokerAdSetShowProInfo[$cancelProId]->type, Const_ShowcaseOrders::PRO_CHANGE_LOG_FLAG_OUT); unset($brokerAdSetShowProInfo[$cancelProId]); } } } //推广房源数据处理 if (!empty($spreadProsIds)) { foreach ($spreadProsIds as $spreadProId) { if (!empty($brokerAdSetProInfo[$spreadProId])) { //存在于选择房源中 if (empty($brokerAdSetShowProInfo[$spreadProId])) { //但是不存在于展示房源中 $addChoiseProIds[] = $spreadProId; } } else { //不存在于选择房源中 if (empty($brokerAdSetShowProInfo[$spreadProId])) { //也不存在于展示房源中 $addSysProIds[] = $spreadProId; //标记为可以以系统选择插入的房源ID } } } } //存在必须插入的选择的房源ID $addChoiseProIdsCount = count($addChoiseProIds); $currentShorProsCount = count($brokerAdSetShowProInfo); $totalCount = $addChoiseProIdsCount + $currentShorProsCount; if ($addChoiseProIdsCount > 0) { if ($totalCount > $proCountMax) { //必须插入的房源ID插入之后房源数大于限制最大房源数,则作删除系统选择房源操作 //按房源ID升序排序 ksort($brokerAdSetShowProInfo); $deleteCount = 0; foreach ($brokerAdSetShowProInfo as $brokerAdSetShowProKey => $brokerAdSetShowProVal) { if ($deleteCount >= $totalCount - $proCountMax) { break; } if ($brokerAdSetShowProVal->type == Const_ShowcaseOrders::PRO_CHANGE_LOG_TYPE_SYS) { $brokerAdSetShowProVal->delete(); $deleteProIds[] = $brokerAdSetShowProVal->propId; //插入日志表 $this->insertProLog($brokerAdSetShowProVal->propId, $brokerId, $brokerAdInfo->cityId, $brokerAdSetShowProVal->type, Const_ShowcaseOrders::PRO_CHANGE_LOG_FLAG_OUT); unset($brokerAdSetShowProInfo[$brokerAdSetShowProKey]); ++$deleteCount; } } } } //给中间件发送房源下架消息 if (!empty($deleteProIds)) { Bll_Broker_ShowcaseAdSetPro::getInstance()->sendAdProChangeMes($brokerId, $brokerAdInfo->cityId, array(Const_ShowcaseOrders::SHOWCASE_CANCEL_SET), $deleteProIds, $this->jobType); } //插入选择的房源信息,为什么不和上面合并,是因为先发送删除消息,再插入,防止用户端显示会超过5套 if ($addChoiseProIdsCount > 0) { $this->insertBrokerShowPros($addChoiseProIds, $brokerId, $brokerAdInfo->cityId, Const_ShowcaseOrders::PRO_CHANGE_LOG_TYPE_SELF); } //存在可以标记为系统插入的房源,而且当前房源数还不够,则插入 if (!empty($addSysProIds) && $totalCount < $proCountMax) { $addSysProIds = array_slice($addSysProIds, 0, $proCountMax - $totalCount); $totalCount += count($addSysProIds); $this->insertBrokerShowPros($addSysProIds, $brokerId, $brokerAdInfo->cityId, Const_ShowcaseOrders::PRO_CHANGE_LOG_TYPE_SYS); } //需要系统补足,而且当前房源不够,则操作系统补足 if ($mustAddSysPro && $totalCount < $proCountMax) { //当前插入数据库中的展示房源Id $currentShowProIds = array(); foreach ($brokerAdSetShowProInfo as $brokerAdSetShowProVal) { $currentShowProIds[] = $brokerAdSetShowProVal->propId; } $currentShowProIds = array_merge($currentShowProIds, $addChoiseProIds, $addSysProIds); //获取系统补足房源ID $addProIds = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAddProIds($brokerId, $brokerAdInfo->cityId, $proCountMax - $totalCount, $this->jobType, $currentShowProIds); if (!empty($addProIds)) { $this->insertBrokerShowPros($addProIds, $brokerId, $brokerAdInfo->cityId, Const_ShowcaseOrders::PRO_CHANGE_LOG_TYPE_SYS); } } } 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'; }
/** * 抢委托操作流程 * @param $houseId 房源id * @param $brokerId 二手房经纪人Id * @param $brokerName 二手房经纪人真实姓名 * @param $brokerPhone 经纪人手机电话 * @param $cityId 经纪人城市id * @param $comeFrom 来源 * @param $isConsume 是否扣费 * @param $conboOn 套餐是否开启 * @return array */ public function saleRush($houseId, $brokerId, $brokerName, $brokerPhone, $cityId, $comeFrom = Const_Entrust::RUSH_FROM_PC, $isConsume = true, $conboOn = false) { $result = array('status' => 0, 'data' => array(), 'errorMsg' => ""); if (empty($houseId) || empty($brokerId) || empty($cityId) || empty($brokerName) || empty($brokerPhone)) { $result['status'] = 99; $result['errorMsg'] = "输入的参数不正确"; return $result; } // 验证套餐开关是否开启 if ($conboOn == true) { $conbosProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($brokerId); if ($conbosProNum['totalSalePropNum'] <= 0) { $result['status'] = 20; $result['errorMsg'] = "没有购买出售套餐。"; return $result; } } // 判断房源ID $id = isset($houseId) & intval($houseId) > 0 ? intval($houseId) : 0; if ($houseId <= 0) { $result['status'] = 2; $result['errorMsg'] = "无效的房源编号。"; return $result; } // 判断委托房源是否存在 $house = Model_House_CommissionHouse::data_access()->filter('id', $id)->find_only(); if (!$house) { $result['status'] = 3; $result['errorMsg'] = "房源不可委托:房源不存在。"; return $result; } if ($house->commissionType != Model_House_CommissionHouse::COMMISSION_TYPE_SALE) { $result['status'] = 4; $result['errorMsg'] = "房源类型不是二手房"; return $result; } // 判断委托房源状态 if ($house->proStatus != Model_House_CommissionHouse::STATUS_ONGOING) { if ($house->proStatus == Model_House_CommissionHouse::STATUS_DELETED) { $result['status'] = 9; $result['errorMsg'] = "房源不可委托:已被房东删除。"; } elseif ($house->proStatus == Model_House_CommissionHouse::STATUS_ILLEGAL) { $result['status'] = 10; $result['errorMsg'] = "房源不可委托:已被违规删除。"; } elseif ($house->proStatus == Model_House_CommissionHouse::STATUS_STOP) { $result['status'] = 11; $result['errorMsg'] = "房源不可委托:已被停止委托。"; } elseif ($house->proStatus == Model_House_CommissionHouse::STATUS_SAVE) { $result['status'] = 12; $result['errorMsg'] = "房源不可委托:已被估价保存。"; } else { $result['status'] = 5; $result['errorMsg'] = "房源不可委托:已过期。"; } return $result; } // 判断委托房源已委托数量 if ($house->openBrokerCnt >= Model_House_CommissionHouse::allowedMaxCommissionCount()) { $result['status'] = 6; $result['errorMsg'] = '委托已满。'; return $result; } // 判断是否已抢过委托 $commission = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('houseId', $house->id)->find_only(); if ($commission) { $result['status'] = 7; $result['errorMsg'] = '你已经委托了该房源。'; return $result; } if ($isConsume === true) { // 获取余额 $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($brokerId, 'sale'); $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); $balance = $balance * 100; // 获取委托价格 $startDate = date("Ymd"); $price = Bll_Broker_EntrustPrice::getInstance()->getSalePrice($cityId, $startDate); // 判断余额是否足够 if ($balance < $price) { $result['status'] = 8; $result['errorMsg'] = '对不起,您的账户余额不足,请充值。'; return $result; } } // 判断15天内未发布的房源的数量是否最多3套 $tmpTime = time() - 15 * 24 * 3600; $startTime = date("Y-m-d H:i:s", $tmpTime > strtotime(Const_Entrust::EUSH_3HOUSE_RULE_STARTTIME) ? $tmpTime : strtotime(Const_Entrust::EUSH_3HOUSE_RULE_STARTTIME)); $tmpCommission = Model_House_Commission::data_access()->load_field('id')->load_field('type')->load_field('brokerHouseId')->load_field('publishTime')->load_field('isDelete')->filter('brokerId', $brokerId)->filter_by_op('createTime', '>', $startTime)->find(); // bug46464 慢查询,故把数据获取后来处理 $tmpCount = 0; if (!empty($tmpCommission)) { foreach ($tmpCommission as $val) { if ($tmpCount == 5000) { break; } if ($val['publishTime'] == '0000-00-00 00:00:00' && $val['isDelete'] == Model_House_Commission::DELETE_NO && $val['type'] == Model_House_Commission::TYPE_SALE && $val['brokerHouseId'] == 0) { $tmpCount++; } } } if ($tmpCount == 5000) { $result['status'] = 15; $result['errorMsg'] = '15天之内已抢房源中有5000套未发,禁止经纪人继续抢房'; return $result; } // 更新commission_prop表的openBrokerCnt+1 if (!$house->updateCommissionCount()) { $result['status'] = 6; $result['errorMsg'] = '委托已满。'; return $result; } // 更新成功 插入e_commission表 $commission = Model_House_Commission::create(array('type' => $house->commissionType, 'ownerId' => $house->userId, 'houseId' => $house->id, 'brokerId' => $brokerId, 'origin' => $comeFrom, 'createTime' => date('Y-m-d H:i:s'), 'updateTime' => date('Y-m-d H:i:s'))); $commission->save(); if ($isConsume === true) { // 插入扣费队列 $insertQueryArr = array('cityId' => $cityId, 'commissionId' => $commission->id, 'status' => 0, 'dateIndex' => date("Ymd"), 'createTime' => time(), 'updateTime' => date("Y-m-d H:i:s")); Bll_Broker_EntrustQuery::getInstance()->insertOneData($insertQueryArr); } // 更新推送房源状态 $pushedHouse = Model_House_CommissionHousePushed::data_access()->filter('brokerId', $brokerId)->filter('propertyId', $house->id)->find_only(); if ($pushedHouse) { $pushedHouse->propertyStatus = Model_House_CommissionHousePushed::STATUS_RUSHED; $pushedHouse->save(); } // 记录到commission_sale_log日志表 Bll_Broker_EntrustConsumeLog::getInstance()->insertCommissionSaleLog($house, $brokerId); // 给房东发送短信 if ($house->ownerMobile) { // 小区名称 $commName = mb_strlen($house->commName, "utf-8") <= 12 ? $house->commName : mb_substr($house->commName, 0, 12, "utf-8") . "..."; // 经纪人信息 $content = $house->userName . "您好,您在安居客发布的" . $commName . "的委托已被经纪人" . $brokerName . "接受,联系方式" . $brokerPhone; Bll_Broker_ShowcaseCommon::getInstance()->sendAlertMsg(array($house->ownerMobile), $content, 1010); } //给app房东推送消息,added by xiongjiewu at 2014-08-07 $this->pushEntrustMsg($brokerId, $id); // 拼装返回数据 $result['status'] = 1; // 抢委托成功 $result['data'] = array('owner' => $house->userName, 'phone' => $house->getPhone(), 'title' => '', 'summary' => '', 'manageUrl' => ''); $area = '[' . implode('-', $house->getAreaCodeNames()) . '] '; $houseModel = "{$house->roomNum}室{$house->hallNum}厅{$house->toiletNum}卫,{$house->areaNum}平方米,"; $baseDomain = APF::get_instance()->get_config('base_domain', 'common'); $baseUri = defined('BASE_URI') ? BASE_URI : ''; $result['data']['title'] = '[出售] ' . $house->commName; $result['data']['summary'] = $area . $houseModel . $house->proPrice . '万元'; $result['data']['manageUrl'] = "http://my.{$baseDomain}{$baseUri}/commissions/mysale"; return $result; }
/** * 开始处理数据 */ protected function proccessData() { if (empty($this->jobData)) { //没有数据 if ($this->jobYm != $this->currentYm) { //如果job年月不等于当前年月,则将job年月初始化为当前年月 $this->jobYm = $this->currentYm; $this->id = 0; } return false; } //合并数据 $data = $this->initData(); if (!empty($data)) { foreach ($data as $dataKey => $dataVal) { if ($this->jobType == Const_ShowcaseOrders::SALE_DB) { $this->actionBrokerId = $dataKey; } else { $this->actionBrokerId = intval(Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($dataKey)); } if ($dataVal['actionType'] == Const_ShowcaseOrders::OPTYPE_1 || $dataVal['actionType'] == Const_ShowcaseOrders::OPTYPE_6) { //购买动作或者开启换一套,作添加房源动作 $this->addBrokerShowPro($dataKey, $dataVal['cityId'], $dataVal['actionType']); } else { //其他动作(停止、自动到期)都做删除动作 $this->deleteBrokerShowPro($dataKey, $dataVal['cityId'], true, true); } } } return true; }
/** * 获取job数据 * @return array */ protected function getJobData() { return Bll_Broker_BrokerCheckInfo::getPPCBrokerMoreThanId($this->id, $this->limit, $this->offset); }
/** * 获取租房房源数据 * [getBrokerEsfPro description] */ private function getBrokerZfPro() { $data = $proClickInfo = array(); $isCombo = Bll_Combo_HouseRelation::isComboCity($this->cityId); if ($isCombo['data']) { $comboList = Bll_Combo_HouseRelation::getHouseRelations($this->brokerId, Bll_Combo_HouseRelation::SITE_TYPE_HZ, 1); $proIds = $this->getObjFieldInfo($comboList, 'houseId'); $clicksInfo = Bll_Ppc_NewPackageStatsBrokerDay::getHouseComboClickInfo($proIds, date('Ymd'), Model_Ppc_NewPackageStatsHouseDay::SITE_TYPE_HZ); if (!empty($clicksInfo)) { foreach ($clicksInfo as $val) { if (isset($proClickInfo[$val['propId']])) { $proClickInfo[$val['propId']] += intval($val['cnum']); } else { $proClickInfo[$val['propId']] = intval($val['cnum']); } } } } else { $hzBrokerId = Bll_Broker_BrokerCheckInfo::getHzBrokerIdByAjkBrokerId($this->brokerId); //定价房源信息 $fixedProInfos = Bll_House_FixedPro::getInstance()->getBrokerHzFiexdProInfo($hzBrokerId); if (empty($fixedProInfos)) { $this->outData($data, 1); } $proIds = $this->getObjFieldInfo($fixedProInfos, 'proid'); //房源点击量信息 $proClicks = Bll_House_HzPro::getInstance()->getProClicks($proIds, array(), date('Ymd')); if (!empty($proClicks)) { //将房源ID作为key拼接点击量信息 foreach ($proClicks as $proClickVal) { $proClickInfo[$proClickVal['proid']] = intval($proClickVal['cnt']); } } } $proInfos = Bll_House_HzPro::getInstance()->getBrokerHzProInfo($proIds, $this->cityId); if (empty($proInfos)) { $this->outData($data, 1); } //经纪人橱窗房源设置信息 $adProInfos = Bll_Broker_ShowcaseAdSetPro::getInstance()->getBrokerAdRentPropInfo($this->brokerId); $addPro = array(); if (!empty($adProInfos)) { foreach ($adProInfos as $adProVal) { $addPro[$adProVal->propId] = true; } } //房源主表信息 $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); } $this->initZfProData($proInfos, $proClickInfo, $addPro, $propMianNew); }
public function handle_request() { $queryList = $this->getRequestData(); if (!empty($queryList)) { foreach ($queryList as $val) { /* *1.Start 设置status = 1,为正在处理中 更新队列为处理状态(更新失败,跳出继续执行下一跳数据) */ $check = Bll_Broker_EntrustQuery::getInstance()->updateQueryInfo(array('id' => $val->id, 'status' => array(0, 2)), array('status' => 1)); if ($check['status'] == false) { continue; } $val->add_old_property_value('status', 1); /* * 2.验证经纪人是否抢到房源 */ $commission = $this->getCommissionDataById($val->commissionId); if (!$commission) { // 更新status=2,并报警 $this->updateQueryTable($val, 2); continue; } // 获取房东房源信息 $house = $this->getCommissionProPDataById($commission->houseId); if (!$house) { // 更新status=2,并报警 $this->updateQueryTable($val, 2); continue; } /* * 3.验证 entrust_consume_sale 是否已经存在,存在则执行下一条;不存在,则插入 */ $tmpConsumeSale = Bll_Broker_EntrustConsume::getInstance()->getDataByCommissionId($commission->id, $val->dateIndex, true); if (!empty($tmpConsumeSale)) { $this->updateQueryTable($val, 3); continue; } // 获取委托价格 if (!empty($this->_city_price[$val->cityId])) { $cityPrice = $this->_city_price[$val->cityId]; } else { $startDate = date("Ymd"); $cityPrice = Bll_Broker_EntrustPrice::getInstance()->getSalePrice($val->cityId, $startDate); $this->_city_price[$val->cityId] = $cityPrice; } // 判断如果价格是否为0 if ($cityPrice == 0) { // 报警处理,发送短信 $content = "委托扣费异常,cityPrice为0,异常QueryId为:" . $val->id . ";城市id:" . $val->cityId; Bll_Broker_ShowcaseCommon::getInstance()->sendAlertMsg($this->mobileArr, $content); continue; } // 插入一条数据,并获得结果 $consumeData = $this->addConsume($val, $commission, $cityPrice); if (empty($consumeData)) { $this->updateQueryTable($val, 2); continue; } // 更新request_id $requestId = Bll_Broker_EntrustConsume::getInstance()->getPayMentRequestId($consumeData->id, $consumeData->dateIndex); $consumeData->requestId = $requestId; $consumeData->save(); /* * 4.开始扣费 */ $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($commission->brokerId, 'sale'); $commName = mb_strlen($house->commName, "utf-8") <= 12 ? $house->commName : mb_substr($house->commName, 0, 12, "utf-8") . "..."; $note = "抢委托扣费,房源信息:" . $commName . " " . $house->userName . "(房源id" . $house->id . ")"; $apiResult = Bll_Broker_EntrustConsume::getInstance()->callCosumeApi($userId, $requestId, $cityPrice, $note); // 扣费成功 if ($apiResult['status'] === true) { $apiData = $apiResult['apiData']; if (!empty($apiData)) { if (!empty($apiData['response'])) { if (!empty($apiData['response']['data'])) { if (!empty($apiData['response']['data']['account'])) { $afterBalance = $apiData['response']['data']['account']['balance']; } } } } // 更新entrust_consume_sale表状态,并插入详细日志 $updateArr = array('status' => 4, 'balance' => $afterBalance + $cityPrice); $this->updateEntrustConsumeSaleTable($consumeData, $updateArr, 1, $apiResult['apiData'], '扣费成功'); } else { // 更新entrust_consume_sale表状态,并插入详细日志 $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); $balance = $balance * 100; // 转化成分 $updateArr = array('status' => 3, 'balance' => $balance); $this->updateEntrustConsumeSaleTable($consumeData, $updateArr, 1, $apiResult['apiData'], '调用API扣费,扣费失败'); // 扣费失败,插入欠费 $this->insertArrearage($val, $consumeData, $balance, $apiResult['apiData'], '调用API扣费,扣费失败 ' . $apiResult['msg']); } /* * 5.End. * 更新query的status=3 */ $this->updateQueryTable($val, 3); } } }
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 $adSetData * @param $adConsumeData * @param $houseNum */ protected function consumeMainProcess($adSetData, $adConsumeData, $houseNum) { // 1.先更新status,house_num $adConsumeData->status = 1; $adConsumeData->houseNum = $houseNum; $adConsumeData->updateTime = date("Y-m-d H:i:s", time()); $adConsumeData->save(); // 2.获取账户余额 $userId = Bll_Broker_BrokerCheckInfo::getUserIdByBrokerId($adSetData->brokerId, $this->_dateBase); // 3.调用扣费API之前,验证余额是否足够 $balance = Bll_Broker_ShowcaseOrders::getInstance()->getBrokerMoney($userId); $balance = $balance * 100; // 转化成分 //$balance = 200; if ($balance < $adConsumeData->price) { // 3.1 余额不足,插入欠费队列 $this->insertArrearage($adSetData, $adConsumeData, $balance, 4, '', '未调用扣费API之前,余额不足'); } else { // 3.2 余额足够,调用扣费API $apiResult = Bll_Broker_ShowcaseConsumeQuery::getInstance()->callCosumeApi($userId, $adConsumeData->requestId, $adConsumeData->price, $adConsumeData->dateIndex, $this->_dateBase); // 3.2.1 扣费成功 if ($apiResult['status'] === true) { $updateArr = array('status' => 6, 'balance' => $balance); $this->updateAdConsumeLogTable($adConsumeData, $updateArr, 1, $apiResult['apiData'], '扣费成功'); } else { // 3.2.2 扣费失败,插入欠费队列 $this->insertArrearage($adSetData, $adConsumeData, $balance, 5, $apiResult['apiData'], '调用API扣费,扣费失败 ' . $apiResult['msg']); } } }
public function handle_request_internal() { $brokerId = $this->_params['brokerId']; $brokerInfo = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId); if (!$brokerInfo) { throw new Exception_BrokerNotFoundException('经纪人不存在', Const_APIStatus::E_BROKER_NOT_EXISTS); } // echo "<pre>";print_r($brokerInfo);exit; // // $bnsCardFile = 'b'; // $setBizCard = Bll_BrokerBaseBll::setBizCard($brokerId, $brokerInfo->cityId, $brokerInfo->areaCode, $brokerInfo->userMobile, // '', $bnsCardFile, $brokerInfo->companyId, $brokerInfo->cstBrokerCompanyId); // // $res = $this->verifyBizCard($brokerId, 1, '123'); $bnsCardState = $brokerInfo->bnsCardState; $bnsCardFile = $brokerInfo->bnsCardFile; $bnsCardStatus = 0; $bigImageUrl = ''; $smallImageUrl = ''; $failedReason = ''; //获得最后提交资料 $lastupdata = Bll_BrokerBaseBll::get_instance()->getLastPostBnsCardFile($brokerId); //使用model $isPass = $lastupdata['IsPass']; $FileName = $lastupdata['FileName']; if (empty($lastupdata)) { //没认证 $bnsCardStatus = 0; $bigImageUrl = ''; $smallImageUrl = ''; } else { if ($brokerInfo->checkState == 0) { switch ($bnsCardState) { case 1: //认证中 $bnsCardFile $bnsCardStatus = 2; break; case 2: //已认证 $bnsCardFile $bnsCardStatus = 1; break; case 3: //认证失败 $bnsCardFile $bnsCardStatus = 3; break; } $bigImageUrl = Util_DisplayImages::get_img_url($bnsCardFile, -1, '1200x750'); $smallImageUrl = Util_DisplayImages::get_img_url($bnsCardFile, -1, '1000x625'); } elseif ($brokerInfo->checkState == 1) { if ($isPass == 0) { //认证中 FileName $bnsCardStatus = 2; } elseif ($isPass == 1) { //已认证 FileNam $bnsCardStatus = 1; } elseif ($isPass == 2) { //认证失败 FileName $bnsCardStatus = 3; $brokerCheckInfoBll = new Bll_Broker_BrokerCheckInfo(); $brokerTheLastCheckInfo = $brokerCheckInfoBll->getBrokerTheLastCheckInfo($brokerId, 2); $failedReason = $brokerTheLastCheckInfo['content']; } $bigImageUrl = Util_DisplayImages::get_img_url($FileName, -1, '1200x750'); $smallImageUrl = Util_DisplayImages::get_img_url($FileName, -1, '1000x625'); } } return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => $bnsCardStatus, 'bigImageUrl' => $bigImageUrl, 'smallImageUrl' => $smallImageUrl, 'failedReason' => $failedReason)); }