コード例 #1
0
 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']);
     }
 }
コード例 #2
0
 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);
     }
     //名片格式
     $bnsCardFileJson = json_decode($this->_params['bnsCardFile'], true);
     $size = $bnsCardFileJson['size'];
     $width = $bnsCardFileJson['width'];
     $height = $bnsCardFileJson['height'];
     $format = $bnsCardFileJson['format'];
     //判断图片大小,格式是否正确
     if ($size > 614400 || $size < 20480) {
         throw new Exception_Broker_UpLoadFailed('pic_error,文件应大于20KB,小于600KB');
     } elseif ($width < 300 || $height < 200) {
         throw new Exception_Broker_UpLoadFailed('pic_error,图片应大于300*200像素');
     } elseif (!in_array($format, array('JPEG', 'JPG', 'GIF', 'PNG'))) {
         throw new Exception_Broker_UpLoadFailed('pic_error,图片限jpg、jpeg、gif、png格式');
     }
     //上传名片接口
     $bnsCardFile = 'display/' . $bnsCardFileJson['hash'] . '_' . $bnsCardFileJson['host'];
     //$bnsCardFile = 'c9ed1c5f41cd95df97391e5e60ab3c96_1';
     $setBizCard = Bll_BrokerBaseBll::setBizCard($brokerId, $brokerInfo->cityId, $brokerInfo->areaCode, $brokerInfo->userMobile, '', $bnsCardFile, $brokerInfo->companyId, $brokerInfo->cstBrokerCompanyId);
     if ($setBizCard == 1) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('status' => 1));
     } else {
         throw new Exception_Broker_UpLoadApiFailed($setBizCard['message']);
     }
 }
コード例 #3
0
ファイル: BrokerInfo.php プロジェクト: emilymwang8/ajk-broker
 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';
 }
コード例 #4
0
ファイル: HammerGift.php プロジェクト: emilymwang8/ajk-broker
 public function handle_request()
 {
     $apf = APF::get_instance();
     $request = $apf->get_request();
     $response = $apf->get_response();
     try {
         $key = $request->get_parameter('key');
         $hash = $request->get_parameter('hash');
         $brokerId = $request->get_parameter('broker_id');
         if (!($key && $hash && $brokerId)) {
             throw new Exception_ChristmasException('Parameters incomplete.', self::CODE_PARAMETERS_INCOMPLETE);
         }
         $params = $request->get_parameters();
         unset($params['hash']);
         ksort($params);
         // 按照键值排序(升序)所有参数
         $params['secret'] = self::$account['secret'];
         $query = http_build_query($params);
         if (md5($query) !== $hash) {
             throw new Exception_ChristmasException('Parameters invalid.', self::CODE_PARAMETERS_INVALID);
         }
         // 获取经纪人详情
         self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
         $userId = self::$BrokerInfo['BaseInfo'][strtoupper('userId')];
         // 判断经纪人是否通过双证验证
         if (self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')] == 0) {
             throw new Exception_ChristmasException('Check state first.', self::CODE_NOT_CHECK_STATE);
         }
         // 判断今天是否已经送过锤子
         if (Model_Christmas_HammerLog::hammerLogForApp($brokerId, date('Y-m-d'))) {
             throw new Exception_ChristmasException('Already gifted, today.', self::CODE_ALREADY_GIFTED);
         }
         // 经纪人添加锤子
         Model_Christmas_BrokerHammer::incrBrokerHammerForApp($brokerId);
         // 发送系统消息
         $messages = Util_Christmas::messages();
         if (isset($messages[Model_Christmas_HammerLog::TYPE_APP_PUBLISH_HOUSE])) {
             Bll_Service_Message::sendSystem(array('receiverIds' => $userId, 'message' => $messages[Model_Christmas_HammerLog::TYPE_APP_PUBLISH_HOUSE]));
         }
         $result = array('code' => self::CODE_SUCCESS, 'message' => 'Success.');
     } catch (Exception_ChristmasException $e) {
         $result = array('code' => $e->getCode(), 'message' => $e->getMessage());
     } catch (Exception $e) {
         // 500 Error
         // http_response_code('500');
         $result = array('code' => '500', 'message' => 'Server Error.');
     }
     $response->set_content_type('application/json', 'UTF-8');
     $response->add_header('Cache-Control', 'no-cache, no-store, must-revalidate');
     $response->add_header('Pragma', 'no-cache');
     $response->add_header('Expires', 0);
     echo json_encode($result);
     die;
 }
コード例 #5
0
ファイル: HammerSeek.php プロジェクト: emilymwang8/ajk-broker
 public function handle_request()
 {
     $apf = APF::get_instance();
     $request = $apf->get_request();
     $response = $apf->get_response();
     try {
         // 判断经纪人是否已经登陆
         if (!$this->isBrokerLogin()) {
             throw new Exception_ChristmasException('Login first.', self::CODE_NOT_LOGIN);
         }
         // 获取经纪人详情
         self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info(self::$intBrokerID);
         $brokerId = self::$BrokerInfo['BaseInfo'][strtoupper('brokerid')];
         $userId = self::$BrokerInfo['BaseInfo'][strtoupper('userId')];
         // 判断经纪人是否通过双证验证
         if (self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')] == 0) {
             throw new Exception_ChristmasException('Check state first.', self::CODE_NOT_CHECK_STATE);
         }
         // 判断是否是有效页面
         $type = $request->get_parameter('type');
         if (!Model_Christmas_HammerLog::validatePageType($type)) {
             throw new Exception_ChristmasException('Invalid page type.', self::CODE_INVALID_TYPE);
         }
         // 判断该页面是否已经领过锤子
         if ($hammerLog = Model_Christmas_HammerLog::hammerLogForPage($brokerId, $type)) {
             throw new Exception_ChristmasException('Already sought.', self::CODE_ALREADY_SOUGHT);
         }
         $is_check = $request->get_parameter('is_check');
         if ($is_check != true) {
             // 经纪人添加锤子
             Model_Christmas_BrokerHammer::incrBrokerHammerForPage($brokerId, $type, 1);
             // 发送系统消息
             $messages = Util_Christmas::messages();
             if (isset($messages[$type])) {
                 Bll_Service_Message::sendSystem(array('receiverIds' => $userId, 'message' => $messages[$type]));
             }
         }
         $result = array('code' => self::CODE_SUCCESS, 'message' => 'Success.');
     } catch (Exception_ChristmasException $e) {
         $result = array('code' => $e->getCode(), 'message' => $e->getMessage());
     } catch (Exception $e) {
         // 500 Error
         // http_response_code('500');
         $result = array('code' => '500', 'message' => 'Server Error.');
     }
     $response->set_content_type('application/json', 'UTF-8');
     $response->add_header('Cache-Control', 'no-cache, no-store, must-revalidate');
     $response->add_header('Pragma', 'no-cache');
     $response->add_header('Expires', 0);
     echo json_encode($result);
     die;
 }
コード例 #6
0
 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('身份证不能重复上传。');
     }
 }
コード例 #7
0
 /**
  * 检查手机是否被使用
  *
  * @param $mobile 手机号
  * @return int 1 没有被占用 2 被经纪人占用 3 被用户占用 4异常错误
  */
 public function checkmobile($mobile)
 {
     $checkBrokerResult = Bll_BrokerBaseBll::get_instance()->checkBrokerMobileExists_v2($mobile);
     if ($checkBrokerResult['checkMobileExist']) {
         return 2;
     }
     //检查普通用户是否注册此手机号
     $checkUserResult = $this->checkUserMobile($mobile);
     if ($checkUserResult->status == 'ok' && $checkUserResult->result != -1) {
         return 3;
     }
     return 1;
 }
コード例 #8
0
ファイル: Rush.php プロジェクト: emilymwang8/ajk-broker
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $propertyId = $this->_params['propertyId'];
     $comeFrom = $this->_params['comeFrom'];
     //读取经纪人信息
     $BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     //城市是否开通房源库
     $cityInfo = Bll_Fyk_Prop_Manage::getInstance()->getCityConfig($BrokerInfo['BaseInfo']['CITYID']);
     if ($cityInfo) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '已开通房源库,不可抢~', 'errcode' => Const_APIStatus::E_COMMISSION_INVALID);
     }
     //读取房源信息
     $houses = Model_House_CommissionHouse::getEntrustsPro($propertyId);
     $house = $houses[0];
     //获取委托房源关系
     $eEntrust = Model_House_Commission::getInfoByBrokerIdAndHouseId($brokerId, $propertyId, $house->commissionType);
     if ($house['commissionType'] == Model_House_CommissionHouse::COMMISSION_TYPE_SALE) {
         //是否收费
         $isToll = Bll_Broker_EntrustPrice::getInstance()->checkCityConsumeStatus($BrokerInfo['BaseInfo']['CITYID']);
         $isConsume = false;
         if ($isToll) {
             $isConsume = true;
         }
         $data = Bll_Broker_EntrustQuery::getInstance()->saleRush($propertyId, $brokerId, $BrokerInfo['BaseInfo']['TRUENAME'], $BrokerInfo['BaseInfo']['USERMOBILE'], $BrokerInfo['BaseInfo']['CITYID'], $comeFrom, $isConsume);
     } else {
         $isConsume = false;
         //租房免费
         $data = Bll_Broker_EntrustQuery::getInstance()->rentRush($propertyId, $brokerId, $BrokerInfo['BaseInfo']['TRUENAME'], $BrokerInfo['BaseInfo']['USERMOBILE'], $BrokerInfo['BaseInfo']['CITYID'], $comeFrom, $isConsume);
     }
     $ownerinfo = $this->formatdate($house, $eEntrust);
     if ($data['status'] == 1) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $ownerinfo, 'message' => '抢委托成功');
     } elseif ($data['status'] == 15) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '15天之内已抢房源中有3套未发,禁止经纪人继续抢房', 'errcode' => Const_APIStatus::E_COMMISSION_MAX);
     } elseif ($data['status'] == 8) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '账户余额不足', 'errcode' => Const_APIStatus::E_COMMISSION_BALANCE);
     } elseif ($data['status'] == 9) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '房东已删除', 'errcode' => Const_APIStatus::E_COMMISSION_DEL);
     } elseif ($data['status'] == 10) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '违规已删除', 'errcode' => Const_APIStatus::E_COMMISSION_ILLEGAL);
     } elseif ($data['status'] == 5) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '已过期~', 'errcode' => Const_APIStatus::E_COMMISSION_EXPIRED);
     } elseif ($data['status'] == 7) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '抢过了~', 'errcode' => Const_APIStatus::E_COMMISSION_RUSHED);
     } elseif ($data['status'] == 6) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '抢完了~', 'errcode' => Const_APIStatus::E_COMMISSION_FULL);
     } else {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '不可抢~', 'errcode' => Const_APIStatus::E_COMMISSION_INVALID);
     }
 }
コード例 #9
0
ファイル: Count.php プロジェクト: emilymwang8/ajk-broker
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $count = 0;
     //读取经纪人信息
     $BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     //是否收费
     $isToll = Bll_Broker_EntrustPrice::getInstance()->checkCityConsumeStatus($BrokerInfo['BaseInfo']['CITYID']);
     if ($isToll) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('count' => $count));
     }
     $pushedCount = Model_House_CommissionHousePushedCount::data_access()->filter('brokerId', $brokerId)->find_only();
     if ($pushedCount) {
         $count = $pushedCount['total'];
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array('count' => $count));
 }
コード例 #10
0
ファイル: Header.php プロジェクト: emilymwang8/ajk-broker
 public function get_view()
 {
     $REQUEST_URI = $_SERVER['REQUEST_URI'];
     if (strpos($REQUEST_URI, 'wish') !== false) {
         $this->assign_data("high_light", 'wish');
     } elseif (strpos($REQUEST_URI, 'hammer') !== false) {
         $this->assign_data("high_light", 'hammer');
     } elseif (strpos($REQUEST_URI, 'egg') !== false) {
         $this->assign_data("high_light", 'egg');
     }
     $base_domain = APF::get_instance()->get_config("anjuke_base_domain");
     $this->assign_data("CityUriPrefix", "http://www." . $base_domain . '/');
     //是否登录
     $broker_id_flag = false;
     $broker_id = APF::get_instance()->get_request()->getBrokerId();
     if ($broker_id) {
         $broker_info = Bll_BrokerBaseBll::get_instance()->get_broker_info($broker_id);
         if ($broker_info && ($broker_info['BaseInfo']['PAYTYPE'] == 9999 || $broker_info['BaseInfo']['PAYTYPE'] == 10000) == false) {
             $broker_id_flag = true;
         }
     }
     $this->assign_data("broker_id_flag", $broker_id_flag);
     return "Header";
 }
コード例 #11
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $maxId = isset($this->_params['maxId']) ? $this->_params['maxId'] : null;
     $sinceId = isset($this->_params['sinceId']) ? $this->_params['sinceId'] : null;
     $per = isset($this->_params['per']) ? $this->_params['per'] : 20;
     $per = $per + 1;
     //判断是否有下一页
     $moreFlag = 1;
     $allData = array();
     $cacheCursorKey = md5($brokerId . 'commission');
     //游标key
     $cacheCommissionKey = md5($cacheCursorKey . $brokerId);
     //commissionInfo key
     $cache = APF_Cache_Factory::get_instance()->get_memcache();
     $cacheCursor = $cache->get($cacheCursorKey);
     $maxCommissionInfo = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('isDelete', Model_House_Commission::DELETE_NO)->sort('id', 'desc')->limit(1)->find_only();
     if ($maxCommissionInfo['id'] == $cacheCursor) {
         //没新数据则读缓存
         $allData = $cache->get($cacheCommissionKey);
     } elseif (!empty($maxCommissionInfo)) {
         //如果有新数据
         // 获取经纪人的所有委托
         $daCommissions = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('isDelete', Model_House_Commission::DELETE_NO)->sort('id', 'desc');
         $commissions = $daCommissions->find_all();
         // 获取委托关联的房源
         $houses = array();
         if (!empty($commissions)) {
             $houseIds = array();
             foreach ($commissions as $commission) {
                 $houseIds[] = $commission->houseId;
                 $brokerHouseIds[] = $commission->brokerHouseId;
             }
             // 获取房源信息
             $houses = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->sort('id', 'asc')->find_all();
             // 索引
             $indexedHouses = array();
             foreach ($houses as $house) {
                 $indexedHouses[$house['id']] = $house;
             }
             $houses = $indexedHouses;
             // 是否存在实拍图片
             $imagesInfos = Model_Image_SaleEntrustImage::getImagesByProIds($houseIds);
             $isImages = array();
             foreach ($imagesInfos as $imagesInfo) {
                 $isImages[$imagesInfo->proId] = 1;
             }
             $BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
             //房源推广状态(定价&套餐)
             $isOnLine = Bll_House_EsfHouse::getHouseOnLineInfo($BrokerInfo['BaseInfo']['CITYID'], $brokerId, $brokerHouseIds);
         }
         $houseAction = array();
         //可操作房源
         $houseUnAction = array();
         //不可操作房源
         foreach ($commissions as $commission) {
             if (!isset($houses[$commission['houseId']])) {
                 continue;
             }
             $house = $houses[$commission['houseId']];
             $row = array();
             $row['id'] = $commission['id'];
             $row['propertyId'] = $house['id'];
             $row['commName'] = $house['commName'];
             $row['type'] = $house['commissionType'];
             $row['room'] = $house['roomNum'];
             $row['hall'] = $house['hallNum'];
             $row['toilet'] = $house['toiletNum'];
             $row['area'] = $house['areaNum'];
             $row['price'] = $house['proPrice'];
             switch ($house['commissionType']) {
                 case Model_House_CommissionHouse::COMMISSION_TYPE_RENT:
                     $row['priceUnit'] = '元/月';
                     break;
                 case Model_House_CommissionHouse::COMMISSION_TYPE_SALE:
                     $row['priceUnit'] = '万元';
                     break;
             }
             $row['publishTime'] = date('Y-m-d H:i:s', $house['created']);
             $row['status'] = $house['proStatus'];
             $row['statusInfo'] = $this->statusMapping[$house['proStatus']];
             $row['ownerName'] = $house['userName'];
             $row['ownerPhone'] = $house->getPhone();
             $row['callable'] = intval($house['proStatus'] == Model_House_CommissionHouse::STATUS_ONGOING);
             $row['isRealityPats'] = $isImages[$house['id']] ? 1 : 0;
             $row['timestate'] = Bll_Common_Format::formatTime($house['created']);
             list($isExtension, $isExtensionInfo) = $this->isExtension($commission, $isOnLine, $house);
             if ($isExtension == 5 || $isExtension == 6) {
                 $row['isExtension'] = 7;
             } else {
                 $row['isExtension'] = $isExtension;
             }
             $row['isExtensionInfo'] = $isExtensionInfo;
             //1-违规已删除 2-已过期 5-待发布 6-待推广 7-已推广 8-房东删除
             if (in_array($isExtension, array(1, 2, 8))) {
                 //不可操作房源
                 $houseUnAction[] = $row;
             } else {
                 $houseAction[] = $row;
             }
         }
         $cacheCursorValue = $houseAction[0]['id'] > $houseUnAction[0]['id'] ? $houseAction[0]['id'] : $houseUnAction[0]['id'];
         $cache->set($cacheCursorKey, $cacheCursorValue, 0, 10);
         $allData = array_merge($houseAction, $houseUnAction);
         $cache->set($cacheCommissionKey, $allData, 0, 10);
     }
     $data = array();
     if ($allData) {
         $countAllCommissions = count($allData);
         $segmentation = array();
         //供分页用
         foreach ($allData as $value) {
             $segmentation[] = $value['id'];
         }
         /**
          * 以下是分页处理代码 略坑,勿踩
          *  add by xiongjianxu
          */
         if (isset($maxId)) {
             $max = array();
             $max = array_keys($segmentation, $maxId);
             if (!empty($max)) {
                 $offset = $countAllCommissions - $max[0];
                 krsort($allData);
                 $data = array_slice($allData, $offset, $per, false);
             }
         } elseif (isset($sinceId)) {
             $since = array();
             $since = array_keys($segmentation, $sinceId);
             if (!empty($since)) {
                 $offset = $since[0] + 1;
                 $data = array_slice($allData, $offset, $per, false);
             }
         } else {
             // maxId和sinceId均不存在时,返回当前最新的记录
             $data = array_slice($allData, 0, $per, false);
         }
         //判断有无下一页
         $countCommissions = count($data);
         if ($countCommissions < $per) {
             $moreFlag = 0;
         } else {
             unset($data[$countCommissions - 1]);
         }
     } else {
         $moreFlag = 0;
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data, 'nextPage' => $moreFlag);
 }
コード例 #12
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $per = isset($this->_params['per']) ? $this->_params['per'] : 20;
     $per = $per + 1;
     //判断是否有下一页
     $moreFlag = 1;
     //读取经纪人信息
     $BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     //城市是否开通房源库
     $cityInfo = Bll_Fyk_Prop_Manage::getInstance()->getCityConfig($BrokerInfo['BaseInfo']['CITYID']);
     if ($cityInfo) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'canGrabNum' => 0, 'msg' => '亲!房源已转至房源库,快去开通吧!', 'data' => array(), 'nextPage' => 0);
     }
     // 获取已推送委托
     $pushedCommissionHouses = Model_House_CommissionHousePushed::pushedCommissionHouses($brokerId, $per, $this->_params['maxId'], $this->_params['sinceId']);
     $countPushedCommissionHouses = count($pushedCommissionHouses);
     if ($countPushedCommissionHouses < $per) {
         $moreFlag = 0;
     } else {
         unset($pushedCommissionHouses[$countPushedCommissionHouses - 1]);
     }
     // 排序(按ID倒序)
     uasort($pushedCommissionHouses, function ($a, $b) {
         return $a['id'] < $b['id'];
     });
     // 获取房源数据
     $houses = array();
     $rushedHouses = array();
     if (!empty($pushedCommissionHouses)) {
         // 获取房源ID
         $houseIds = array();
         foreach ($pushedCommissionHouses as $pushedCommissionHouse) {
             $houseIds[] = $pushedCommissionHouse['propertyId'];
         }
         // 获取房源信息
         $houses = Model_House_CommissionHouse::getEntrustsPro($houseIds);
         $indexedHouses = array();
         foreach ($houses as $house) {
             $indexedHouses[$house['id']] = $house;
         }
         $houses = $indexedHouses;
         // 获取已抢房源数据
         $rushedCommissions = Model_House_Commission::getEntrustInfos($houseIds);
         foreach ($rushedCommissions as $rushedCommission) {
             if ($brokerId == $rushedCommission->brokerId) {
                 $rushedHouses[$rushedCommission->houseId] = $rushedCommission->id;
             }
         }
         // 是否存在实拍图片
         $imagesInfos = Model_Image_SaleEntrustImage::getImagesByProIds($houseIds);
         foreach ($imagesInfos as $imagesInfo) {
             $isImages[$imagesInfo->proId] = 1;
         }
     }
     // 拼装结果
     $data = array();
     $rushableCount = 0;
     foreach ($pushedCommissionHouses as $pushedCommissionHouse) {
         if (!isset($houses[$pushedCommissionHouse['propertyId']])) {
             continue;
         }
         $house = $houses[$pushedCommissionHouse['propertyId']];
         $row = array();
         $row['id'] = $pushedCommissionHouse['id'];
         $row['propertyId'] = $house['id'];
         $row['commName'] = $house['commName'];
         $row['ownerName'] = $house['userName'];
         if ($house->getPhone()) {
             $row['ownerPhone'] = substr_replace($house->getPhone(), '*****', 3, 5);
         } else {
             $row['ownerPhone'] = '';
         }
         $row['type'] = $house['commissionType'];
         $row['room'] = $house['roomNum'];
         $row['hall'] = $house['hallNum'];
         $row['toilet'] = $house['toiletNum'];
         $row['area'] = $house['areaNum'];
         $row['price'] = $house['proPrice'];
         switch ($house['commissionType']) {
             case Model_House_CommissionHouse::COMMISSION_TYPE_RENT:
                 $row['priceUnit'] = '元/月';
                 break;
             case Model_House_CommissionHouse::COMMISSION_TYPE_SALE:
                 $row['priceUnit'] = '万元';
                 break;
         }
         $row['publishTime'] = date('Y-m-d H:i:s', $house['created']);
         $row['rushable'] = 1;
         $row['showStatus'] = 4;
         $row['rushableInfo'] = '抢委托';
         $row['rushed'] = 0;
         if ($house['proStatus'] == Model_House_CommissionHouse::STATUS_ONGOING && $house['openBrokerCnt'] < Model_House_CommissionHouse::allowedMaxCommissionCount()) {
             $rushableCount++;
         }
         if (!($house['proStatus'] == Model_House_CommissionHouse::STATUS_ONGOING && $house['openBrokerCnt'] < Model_House_CommissionHouse::allowedMaxCommissionCount()) && empty($rushedHouses[$house['id']])) {
             $row['rushable'] = 0;
             $row['showStatus'] = 3;
             $row['rushableInfo'] = '抢完了';
         }
         if ($house['proStatus'] == Model_House_CommissionHouse::STATUS_STOP && $house['openBrokerCnt'] < Model_House_CommissionHouse::allowedMaxCommissionCount()) {
             $row['rushable'] = 0;
             $row['showStatus'] = 9;
             $row['rushableInfo'] = '房东停止委托';
         }
         if (isset($rushedHouses[$house['id']])) {
             $row['rushable'] = 0;
             $row['rushableInfo'] = '抢过了';
             $row['rushed'] = 1;
         }
         $row['isRealityPats'] = $isImages[$house['id']] ? 1 : 0;
         $row['timestate'] = Bll_Common_Format::formatTime($house['created']);
         //抢过不显示
         if (empty($rushedHouses[$house['id']])) {
             $data[] = $row;
         }
     }
     // 重置可抢房源数
     $daCommissionHousePushedCount = Model_House_CommissionHousePushedCount::data_access()->filter('brokerId', $brokerId)->find_only();
     if (!empty($daCommissionHousePushedCount)) {
         $daCommissionHousePushedCount->resetCommissionHousePushedCount();
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'canGrabNum' => $rushableCount, 'msg' => '仅展示15天以内房源', 'data' => $data, 'nextPage' => $moreFlag);
 }
コード例 #13
0
 public static function checkBrokerMobileExists_v2($mobile)
 {
     $arrResult = array();
     $arrResult['checkMobileExist'] = Bll_BrokerBaseBll::checkMobileExists($mobile);
     return $arrResult;
 }
コード例 #14
0
ファイル: Choice.php プロジェクト: emilymwang8/ajk-broker
 /**
  * 金铺-精选房源设置
  *
  * @param $ajkBrokerId
  * @param $cityId
  * @param $propId
  * @param array $params
  * @return array
  */
 public static function jp_setting_post($ajkBrokerId, $cityId, $propId, $params = array())
 {
     $jpBrokerInfo = Model_Broker_JpBroker::getJpBrokerInfoByAjkBrokerId($ajkBrokerId);
     //check房源是否已经加入精选推广
     $bidObj = Model_Plan_Jp::getBidPlanByHouseIdEx($ajkBrokerId, $propId, true);
     if (!empty($bidObj)) {
         if ($bidObj['status'] == Model_Plan_Jp::ENUM_STATUS_ONLINE || $bidObj['status'] == Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD) {
             return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源已经加入精选推广');
         } elseif ($bidObj['status'] == Model_Plan_Jp::ENUM_STATUS_HOLD) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源正在结算中,请稍后...');
         }
     }
     $bidChoiceCount = Model_Plan_Jp::getBidChoiceInfoEx($cityId, $ajkBrokerId);
     //获取精选推广预算
     $brokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($ajkBrokerId);
     $brokerCompanyId = $brokerInfo['BaseInfo']['COMPANYID'];
     $choiceSet = APF::get_instance()->get_config('choice_set');
     if (isset($choiceSet[$brokerCompanyId]) && !empty($choiceSet[$brokerCompanyId])) {
         $min_budget = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MIN_BUDGET'];
         $max_budget = $choiceSet[$brokerCompanyId]['jp']['JP_CHOICE_MAX_BUDGET'];
     } else {
         $min_budget = $choiceSet['default']['jp']['JP_CHOICE_MIN_BUDGET'];
         $max_budget = $choiceSet['default']['jp']['JP_CHOICE_MAX_BUDGET'];
     }
     if ($params['budget'] < $min_budget || $params['budget'] > $max_budget) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '推广预算最低' . $min_budget . '安币,最高' . $max_budget . '安币');
     }
     $status = isset($bidObj['status']) ? $bidObj['status'] : 0;
     if (count($bidChoiceCount) >= self::ALL_JP_PLAN_NUM && $status != 4) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '精选推广房源已经超过' . self::ALL_JP_PLAN_NUM . '套');
     }
     if (0 == $jpBrokerInfo) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '您不是金铺经纪人');
     }
     /** 获取房源基本信息 */
     $propInfo = Bll_House_JpHouseInfo::getHouseInfoById($propId);
     if (empty($propInfo)) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不存在');
     }
     if ($propInfo['base']['memberId'] != $jpBrokerInfo['id']) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不属于该经纪人');
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($cityId, Const_Site::JINPU)) {
         /** 判断房源是否在套餐推广 */
         $propCombos = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($propId, Bll_Combo_HouseRelation::SITE_TYPE_JP);
         if (empty($propCombos)) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源必须在套餐推广才能参与精选');
         }
     }
     if (false == $propInfo['info']['isExquisite']) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     $limitDay = intval(date('Ymd', strtotime('-15 days')));
     $postDay = intval(date('Ymd', strtotime($propInfo['base']['createTime'])));
     if ($limitDay > $postDay) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '精品、新发15天房源才能参与精选推广', 'params' => array('site' => 'jp'));
     }
     /** 获取板块信息 **/
     $blockArr = Bll_House_JpHouseInfo::getBlock($propInfo['base']['houseType'], $propInfo['info']);
     if (!$blockArr['blockId'] && !$blockArr['newBlockId']) {
         return array('err_no' => self::BID_HOUSE_ALREADY_IN_BID, 'err_msg' => '房源缺少板块信息');
     }
     /** 获取价格信息 **/
     $arrPrice = Bll_House_JpHouseInfo::getPrice($cityId, $propInfo['base']['houseType'], $propInfo['info']);
     if (empty($arrPrice['price_id'])) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '缺少价格段信息');
     }
     /** 获取点击单价开始 */
     try {
         $apiParams = array('brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'price' => $arrPrice['price'] ?: 0, 'blockId' => $blockArr['blockId'] ?: 0, 'newBlockId' => $blockArr['newBlockId'] ?: 0, 'houseType' => $propInfo['base']['houseType']);
         /**
          * @var Bll_Service_Client_HttpResponse $clickPrice
          */
         for ($i = 0; $i < 3; $i++) {
             $clickPrice = Bll_Service_Choice::jpClickPrice($apiParams);
             if ($clickPrice->isSucceeded()) {
                 break;
             }
         }
         if (!$clickPrice->isSucceeded() || $clickPrice['status'] == 'error') {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-1000)');
         }
         if ($params['budget'] * 100 < $clickPrice['realTradeAmount']) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '推广预算不能小于点击单价');
         }
         /** 点击单价不能小于当前系统内的单价 防止恶意操作 */
         if ($params['price'] < $clickPrice['realTradeAmount'] / 100) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '点击单价错误');
         }
     } catch (Exception $e) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-2000)');
     }
     /** 防并发 */
     if (false === self::rejectSameRequest(Bll_Plan_Bid_Choice::SITE_JP, $ajkBrokerId, $propId)) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '系统繁忙(code:-906)');
     }
     /** 往冻结队列里添加记录,获取request id*/
     $bidFreezeOrder = new Bll_Plan_BidFreezeOrderNum(date('Y'));
     $ajk_user_id = Bll_Broker_MainBusiness::getDataByEsfId($ajkBrokerId)->memberId;
     $requestId = $bidFreezeOrder->getRequestId(Bll_Plan_BidFreezeOrderNum::JP, $ajk_user_id, date('Y'), 0, $propId);
     /** 冻结金额 **/
     $freezeResult = self::bid_freeze($ajkBrokerId, $params['budget'] * 100, $requestId, sprintf('金铺精选房源冻结,房源ID是: %d', $propId), Const_PaymentApp::JP_CHOICE);
     /** 判断是否冻结成功 **/
     $freezeResponse = $freezeResult->getResponse();
     if (!$freezeResult->isSucceeded() || $freezeResponse['status'] == 'error') {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => isset($freezeResult['info']) ? $freezeResult['info'] . "code:" . $freezeResult['code'] : '冻结金额失败');
     }
     //检查是否有坑位 坑位+1
     $bucketStatus = Model_Choice_JPBidBucket::incrementUsedNum($blockArr['blockId'], $blockArr['newBlockId'], $propInfo['base']['houseType'], $arrPrice['price_id']);
     if (!$bucketStatus) {
         return array('err_no' => self::BID_WAIT_FAIL, 'err_msg' => '精选推广已满,请稍后再试');
     }
     /** 获取最小竞价单元的精选信息 **/
     $bucketInfo = Model_Choice_JPBidBucket::getBucketInfo($blockArr['blockId'], $blockArr['newBlockId'], $propInfo['base']['houseType'], $arrPrice['price_id']);
     /** 根据最小竞价单位里面的房源数判断当前的房源应该是排队还是推广中 **/
     /*
     if ($bucketInfo['usedNum'] > $bucketInfo['maxOnlineNum']) {
         $planStatus = Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD;
     } else {
         $planStatus = Model_Plan_Jp::ENUM_STATUS_ONLINE;
     }
     */
     $planStatus = Model_Plan_Jp::ENUM_STATUS_CHOICE_HOLD;
     /** 如果计划已经存在删除该计划**/
     if (isset($bidObj['status']) && $bidObj['status'] == 4) {
         Model_Plan_Jp::data_access()->set_field('isDelete', 1)->filter('id', $bidObj['id'])->update();
     }
     /** 构造计划数据 创建计划**/
     $planData = self::buildJpPlanData($cityId, $jpBrokerInfo['id'], $params['budget'], $freezeResult['data']['sn'], $propId, $blockArr['blockId'], $blockArr['newBlockId'], $arrPrice['price_id'], $propInfo['base']['houseType'], $planStatus);
     $planData['ajkBrokerId'] = $ajkBrokerId;
     $PlanObj = Model_Plan_Jp::create($planData);
     $PlanObj->save();
     if (empty($PlanObj->id)) {
         /** 坑位-1 **/
         Model_Choice_JPBidBucket::decrementUsedNum($blockArr['blockId'], $blockArr['newBlockId'], $propInfo['base']['houseType'], $arrPrice['price_id']);
         Model_Plan_Jp::data_access()->set_field('isDelete', 0)->filter('id', $bidObj['id'])->update();
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '创建计划失败');
     }
     /** 更新房源里面的竞价计划id **/
     $propInfo['base']->bidSpreadId = $PlanObj->id;
     $propInfo['base']->save();
     /** 更新房源分表信息 **/
     //$propInfo['info']->isList = 1;
     $propInfo['info']->spreadOffer = $clickPrice['realTradeAmount'];
     $propInfo['info']->spreadOfferTime = time();
     $propInfo['info']->save();
     /** 构建精选动作处理数据 **/
     $choiceData = self::buildJpChoiceData($ajkBrokerId, Model_Choice_ActionQueue::ENUM_BEGIN_BY_HAND, $PlanObj->id, '经纪人手动推广', $propId);
     /** 插入到精选动作处理队列表 **/
     Model_Choice_ActionQueue::create($choiceData, date('m'))->save();
     $bidFreezeOrder->updateRequestComplete($requestId, $freezeResult['data']['sn'], $PlanObj->id);
     if ($bucketInfo['usedNum'] > $bucketInfo['maxOnlineNum']) {
         $rank = $bucketInfo['usedNum'] - $bucketInfo['maxOnlineNum'];
         return array('err_no' => self::BID_WAIT_SUCCESS, 'err_msg' => '精选排队成功', 'rank' => $rank);
     } else {
         return array('err_no' => self::BID_SHOW_SUCCESS, 'err_msg' => '精选推广成功');
     }
 }
コード例 #15
0
 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));
 }
コード例 #16
0
ファイル: Publish.php プロジェクト: emilymwang8/ajk-broker
 protected function get_broker_info()
 {
     return Bll_BrokerBaseBll::get_instance()->get_broker_info(self::$intBrokerID);
 }
コード例 #17
0
 public static function getBrokerLimitForApi($intBrokerId)
 {
     $result = Bll_Service_Ppc::limit(array('brokerId' => $intBrokerId, 'bizType' => Bll_Service_Ppc_Limit::SITE_JINPU));
     if ($result['status'] == 'ok') {
         $res['api_status'] = 'ok';
         $res['tempId'] = $result['data']['tempId'];
         $res['tempName'] = $result['data']['tempName'];
         $res['amountLimit'] = $result['data']['amountLimit'];
         $res['publishLimit'] = $result['data']['publishLimit'];
         $res['promotionLimit'] = $result['data']['promotionLimit'];
         return $res;
     } else {
         $brokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($intBrokerId);
         $cityLimitObj = Model_City_JpLimit::data_access()->filter(Model_City_JpLimit::CITY_ID, $brokerInfo['BaseInfo']['CITYID'])->get_row();
         if (empty($cityLimitObj)) {
             $amountLimit = -1;
         } else {
             $amountLimit = $cityLimitObj['limit_price'];
         }
         $res['api_status'] = 'fail';
         $res['tempId'] = 0;
         $res['tempName'] = '无限额';
         $res['amountLimit'] = $amountLimit;
         $res['publishLimit'] = Model_House_JpHouseIdx::HOUSE_LIMIT;
         $res['promotionLimit'] = Model_Plan_Jp::SPREAD_ONLINE_NUM_MAX;
         return $res;
     }
 }
コード例 #18
0
 public function handle_request()
 {
     $apf = APF::get_instance();
     $request = $apf->get_request();
     $response = $apf->get_response();
     try {
         // 判断经纪人是否已经登陆
         if (!$this->isBrokerLogin()) {
             throw new Exception_ChristmasException('Login first.', self::CODE_NOT_LOGIN);
         }
         // 获取经纪人详情
         self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info(self::$intBrokerID, true);
         $brokerId = self::$BrokerInfo['BaseInfo'][strtoupper('brokerid')];
         $userId = self::$BrokerInfo['BaseInfo'][strtoupper('userId')];
         // 判断经纪人是否通过双证验证
         /*if (self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')] == 0) {
               throw new Exception_ChristmasException('Check state first.', self::CODE_NOT_CHECK_STATE);
           }*/
         // 判断经纪人兑换的锤子是否已经多于3把
         $brokerExchangeHammers = Model_Christmas_HammerLog::data_access()->force_master()->filter('type', Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE)->filter('brokerId', $brokerId)->count();
         if ($brokerExchangeHammers >= self::EXCHANGE_HAMMER_LIMIT) {
             throw new Exception_ChristmasException('Reach exchange limit.', self::CODE_REACH_EXCHANGE_LIMIT);
         }
         // 判断经纪人的积分是否足否兑换锤子
         $brokerGradeScore = self::$BrokerInfo['BaseInfo'][strtoupper('gradescore')];
         if ($brokerGradeScore < self::EXCHANGE_GRADE_SCORE) {
             throw new Exception_ChristmasException('Grade not enough', self::CODE_GRADE_NOT_ENOUGH);
         }
         // 积分换锤子
         $brokerHammer = Model_Christmas_BrokerHammer::incrBrokerHammerForGrade($brokerId, 1);
         // 发送系统消息
         $messages = Util_Christmas::messages();
         if (isset($messages[Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE])) {
             Bll_Service_Message::sendSystem(array('receiverIds' => $userId, 'message' => $messages[Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE]));
         }
         // 添加积分消费记录
         $gradeLog = new Model_Grade_Log(date('Ym'));
         $gradeLog->itemId = self::GRADE_ITEM;
         $gradeLog->operateType = 1;
         $gradeLog->time = time();
         $gradeLog->date = date('Ymd', $gradeLog->time);
         $gradeLog->data = serialize(array('time' => date('Y年m月d日 H时i分s秒')));
         $gradeLog->score = 300;
         $gradeLog->brokerId = $brokerId;
         $gradeLog->adminId = 0;
         $gradeLog->flag = 0;
         // 未处理
         $gradeLog->appId = 1;
         // 经纪人
         $gradeLog->save();
         $brokerGradeScore -= self::EXCHANGE_GRADE_SCORE;
         $result = array('code' => self::CODE_SUCCESS, 'message' => 'Success.', 'coin' => $brokerGradeScore, 'number' => $brokerHammer->number);
     } catch (Exception_ChristmasException $e) {
         $result = array('code' => $e->getCode(), 'message' => $e->getMessage(), 'isLogin' => intval($this->isBrokerLogin()), 'loginUrl' => Uri_ChristmasUrl::login_url(Uri_ChristmasUrl::hammer_url()));
     } catch (Exception $e) {
         // 500 Error
         // http_response_code('500');
         $result = array('code' => '500', 'message' => 'Server Error.');
     }
     $response->set_content_type('application/json', 'UTF-8');
     $response->add_header('Cache-Control', 'no-cache, no-store, must-revalidate');
     $response->add_header('Pragma', 'no-cache');
     $response->add_header('Expires', 0);
     echo json_encode($result);
     die;
 }
コード例 #19
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $per = isset($this->_params['per']) ? $this->_params['per'] : 20;
     $per = $per + 1;
     //判断是否有下一页
     $moreFlag = 1;
     //读取经纪人信息
     $BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     //城市是否开通房源库
     $cityInfo = Bll_Fyk_Prop_Manage::getInstance()->getCityConfig($BrokerInfo['BaseInfo']['CITYID']);
     if ($cityInfo) {
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => array(), 'nextPage' => 0);
     }
     //是否收费
     $isToll = Bll_Broker_EntrustPrice::getInstance()->checkCityConsumeStatus($BrokerInfo['BaseInfo']['CITYID']);
     if ($isToll) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => Const_APIStatus::E_PROMPT_UPDATE, 'message' => '你的版本太老了,快更新到新版本吧!');
     }
     // 获取已推送委托
     $daPushedCommissionHouses = Model_House_CommissionHousePushed::data_access()->filter('brokerId', $brokerId)->filter('propertyStatus', Model_House_CommissionHouse::STATUS_ONGOING)->limit($per);
     if (isset($this->_params['maxId'])) {
         $daPushedCommissionHouses->filter_by_op('id', '>', $this->_params['maxId'])->sort('id', 'asc');
     } elseif (isset($this->_params['sinceId'])) {
         $daPushedCommissionHouses->filter_by_op('id', '<', $this->_params['sinceId'])->sort('id', 'desc');
     } else {
         // maxId和sinceId均不存在时,返回当前最新的记录
         $daPushedCommissionHouses->sort('id', 'desc');
     }
     $pushedCommissionHouses = $daPushedCommissionHouses->find_all();
     $countPushedCommissionHouses = count($pushedCommissionHouses);
     if ($countPushedCommissionHouses < $per) {
         $moreFlag = 0;
     } else {
         unset($pushedCommissionHouses[$countPushedCommissionHouses - 1]);
     }
     // 排序(按ID倒序)
     uasort($pushedCommissionHouses, function ($a, $b) {
         return $a['id'] < $b['id'];
     });
     // 获取房源数据
     $houses = array();
     $rushedHouses = array();
     if (!empty($pushedCommissionHouses)) {
         // 获取房源ID
         $houseIds = array();
         foreach ($pushedCommissionHouses as $pushedCommissionHouse) {
             $houseIds[] = $pushedCommissionHouse['propertyId'];
         }
         // 获取房源信息
         $houses = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->find_all();
         // 索引
         $indexedHouses = array();
         foreach ($houses as $house) {
             $indexedHouses[$house['id']] = $house;
         }
         $houses = $indexedHouses;
         // 获取已抢房源数据
         $rushedCommissions = Model_House_Commission::data_access()->filter('houseId', $houseIds)->filter('brokerId', $brokerId)->find_all();
         foreach ($rushedCommissions as $rushedCommission) {
             $rushedHouses[$rushedCommission->houseId] = $rushedCommission->id;
         }
     }
     // 拼装结果
     $data = array();
     foreach ($pushedCommissionHouses as $pushedCommissionHouse) {
         if (!isset($houses[$pushedCommissionHouse['propertyId']])) {
             continue;
         }
         $house = $houses[$pushedCommissionHouse['propertyId']];
         $row = array();
         $row['id'] = $pushedCommissionHouse['id'];
         $row['propertyId'] = $house['id'];
         $row['commName'] = $house['commName'];
         $row['type'] = $house['commissionType'];
         $row['room'] = $house['roomNum'];
         $row['hall'] = $house['hallNum'];
         $row['toilet'] = $house['toiletNum'];
         $row['area'] = $house['areaNum'];
         $row['price'] = $house['proPrice'];
         switch ($house['commissionType']) {
             case Model_House_CommissionHouse::COMMISSION_TYPE_RENT:
                 $row['priceUnit'] = '元/月';
                 break;
             case Model_House_CommissionHouse::COMMISSION_TYPE_SALE:
                 $row['priceUnit'] = '万元';
                 break;
         }
         $row['publishTime'] = date('Y-m-d H:i:s', $house['created']);
         $row['rushable'] = 1;
         $row['rushableInfo'] = '抢委托';
         $row['rushed'] = 0;
         if (!($house['proStatus'] == Model_House_CommissionHouse::STATUS_ONGOING && $house['openBrokerCnt'] < Model_House_CommissionHouse::allowedMaxCommissionCount())) {
             $row['rushable'] = 0;
             $row['rushableInfo'] = '抢完了';
         }
         if (isset($rushedHouses[$house['id']])) {
             $row['rushable'] = 0;
             $row['rushableInfo'] = '抢过了';
             $row['rushed'] = 1;
         }
         $data[] = $row;
     }
     // 重置可抢房源数
     $daCommissionHousePushedCount = Model_House_CommissionHousePushedCount::data_access()->filter('brokerId', $brokerId)->find_only();
     if (!empty($daCommissionHousePushedCount)) {
         $daCommissionHousePushedCount->resetCommissionHousePushedCount();
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data, 'nextPage' => $moreFlag);
 }
コード例 #20
0
ファイル: Rush.php プロジェクト: emilymwang8/ajk-broker
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $propertyId = $this->_params['propertyId'];
     //读取经纪人信息
     $BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     //城市是否开通房源库
     $cityInfo = Bll_Fyk_Prop_Manage::getInstance()->getCityConfig($BrokerInfo['BaseInfo']['CITYID']);
     if ($cityInfo) {
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'message' => '已开通房源库,不可抢~', 'errcode' => Const_APIStatus::E_COMMISSION_INVALID);
     }
     //是否收费
     $isToll = Bll_Broker_EntrustPrice::getInstance()->checkCityConsumeStatus($BrokerInfo['BaseInfo']['CITYID']);
     if ($isToll) {
         // 不能再抢了请升级
         return array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => Const_APIStatus::E_PROMPT_UPDATE, 'message' => '你的版本太老了,快更新到新版本吧!');
     }
     // 判断是否是推送房源
     $pushedHouse = Model_House_CommissionHousePushed::data_access()->filter('brokerId', $brokerId)->filter('propertyId', $propertyId)->filter('propertyStatus', array(Model_House_CommissionHouse::STATUS_ONGOING, Model_House_CommissionHousePushed::STATUS_RUSHED))->find_only();
     if (!$pushedHouse) {
         throw new Exception('来晚了,房源已删除', Const_APIStatus::E_COMMISSION_INVALID);
     }
     // 判断委托房源是否存在
     $house = Model_House_CommissionHouse::data_access()->filter('id', $propertyId)->find_only();
     if (!$house || $house->proStatus != Model_House_CommissionHouse::STATUS_ONGOING) {
         throw new Exception('来晚了,房源已删除', Const_APIStatus::E_COMMISSION_INVALID);
     }
     // 判断是否已抢过委托
     $commission = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('houseId', $propertyId)->find_only();
     if ($commission) {
         // 更新推送房源状态
         if ($pushedHouse->propertyStatus != Model_House_CommissionHousePushed::STATUS_RUSHED) {
             $this->pushedHouseRushed($pushedHouse);
         }
         // 如果已抢,仍然返回成功状态
         return array('status' => Const_APIStatus::RETURN_CODE_OK, 'message' => '抢过了!去“我的委托”里看看');
     }
     if ($house->openBrokerCnt >= Model_House_CommissionHouse::allowedMaxCommissionCount()) {
         throw new Exception('抢完了~', Const_APIStatus::E_COMMISSION_FULL);
     }
     // 防并发(先插入,再检测(超出,删除),最后更新)
     // TODO 该方案层使用在2013圣诞活动“找锤子,砸金蛋”,并导致数据库多次TMC,但是在该业务场景中瞬时并发并没有那么多,暂定使用 by 胡言言 2014.02.28
     $commission = Model_House_Commission::create(array('type' => $house->commissionType, 'ownerId' => $house->userId, 'houseId' => $house->id, 'brokerId' => $brokerId, 'origin' => Model_House_Commission::ORIGIN_APP, 'createTime' => date('Y-m-d H:i:s'), 'updateTime' => date('Y-m-d H:i:s')));
     $commission->save();
     $rank = Model_House_Commission::data_access()->filter_by_op('houseId', '=', $house->id)->filter_by_op('id', '<=', $commission->id)->sort('id', 'asc')->count();
     if ($rank > Model_House_CommissionHouse::allowedMaxCommissionCount()) {
         $commission->delete();
         throw new Exception('抢完了~', Const_APIStatus::E_COMMISSION_FULL);
     }
     // 更新房源的委托数量
     $house->incrCommissionCount();
     // 更新推送房源状态
     $this->pushedHouseRushed($pushedHouse);
     // 通知到API用户端提示信息(消息推送)
     try {
         $userCheckInPushUrl = 'http://api.anjuke.com/mobile/v5/broker/checkin/notice?is_nocheck=1';
         $curl = new Util_Http_Curl();
         $curl->setDefaults()->post($userCheckInPushUrl, array('broker_id' => $brokerId, 'prop_id' => $propertyId, 'updated' => time(), 'owner_id' => $house['userId'], 'owner_name' => $house['userName']));
     } catch (Exception $e) {
         // 暂时忽略请求
     }
     return array('status' => Const_APIStatus::RETURN_CODE_OK, 'message' => '抢成功!快去联系业主吧');
 }
コード例 #21
0
 /**
  * app 获取经纪人基础信息
  */
 public static function get_broker_baseinfo_app($broker_id)
 {
     $base_info = Dao_Broker_BrokerInfo::get_broker_base_info($broker_id);
     if (empty($base_info)) {
         return array();
     }
     //头像状态
     $usrPhotoState = $base_info['USRPHOTOSTATE'];
     $usrPhotoTmpState = $base_info['USRPHOTOTMPSTATE'];
     $userPhotoTmp = $base_info['USERPHOTOTMP'];
     $userPhoto = $base_info['USERPHOTO'];
     $imageUrl = '';
     $photoStaus = 0;
     if ($usrPhotoState == 2 || $usrPhotoTmpState == 1) {
         $photoStaus = 1;
         //已认证
         $imageUrl = Util_DisplayImages::get_img_url($userPhoto, -1, '100x133');
     } elseif ($usrPhotoState == 0 && empty($userPhoto) && empty($userPhotoTmp)) {
         $photoStaus = 0;
         //未认证
     } elseif ($usrPhotoState == 1 || $usrPhotoTmpState == 0 && !empty($userPhotoTmp)) {
         $photoStaus = 2;
         //认证中
     } elseif ($usrPhotoState == 3 || $usrPhotoTmpState == 2) {
         $photoStaus = 3;
         //认证失败
     }
     //身份证状态
     $usrCardState = $base_info['USRCARDSTATE'];
     $userCardFile = $base_info['USERCARDFILE'];
     $userCardStatus = 0;
     if ($usrCardState == 0 && empty($userCardFile)) {
         $userCardStatus = 0;
         //未认证
     } elseif ($usrCardState == 1) {
         $userCardStatus = 2;
         //认证中
     } elseif ($usrCardState == 2) {
         $userCardStatus = 1;
         //已认证
     } elseif ($usrCardState == 3) {
         $userCardStatus = 3;
         //认证失败
     }
     //名片状态
     $bnsCardState = $base_info['BNSCARDSTATE'];
     $bnsCardStatus = 0;
     $lastupdata = Bll_BrokerBaseBll::get_instance()->getLastPostBnsCardFile($broker_id);
     $isPass = $lastupdata['IsPass'];
     if (empty($lastupdata)) {
         //没认证
         $bnsCardStatus = 0;
     } else {
         if ($base_info['CHECKSTATE'] == 0) {
             switch ($bnsCardState) {
                 case 1:
                     //认证中 $bnsCardFile
                     $bnsCardStatus = 2;
                     break;
                 case 2:
                     //已认证 $bnsCardFile
                     $bnsCardStatus = 1;
                     break;
                 case 3:
                     //认证失败 $bnsCardFile
                     $bnsCardStatus = 3;
                     break;
             }
         } elseif ($base_info['CHECKSTATE'] == 1) {
             if ($isPass == 0) {
                 //认证中 FileName
                 $bnsCardStatus = 2;
             } elseif ($isPass == 1) {
                 //已认证 FileNam
                 $bnsCardStatus = 1;
             } elseif ($isPass == 2) {
                 //认证失败 FileName
                 $bnsCardStatus = 3;
             }
         }
     }
     //城市
     $citys = array();
     $citys_tmp = Dao_Broker_BrokerInfo::get_citys();
     foreach ($citys_tmp as $city) {
         $citys[$city['CITYID']] = $city['TYPENAME'];
     }
     //门店
     if ($base_info['CST_BROKER_COMPANY_ID'] != 0) {
         $cst_commpany = Dao_Broker_BrokerInfo::get_cst_company($base_info['CST_BROKER_COMPANY_ID']);
     } else {
         $cst_commpany['COMANYNAME'] = "";
     }
     //区域板块
     $area = Dao_Broker_BrokerInfo::get_comm(substr($base_info['AREACODE'], 4, 4));
     $block = Dao_Broker_BrokerInfo::get_comm(substr($base_info['AREACODE'], 8, 4));
     $return['brokerName'] = $base_info['TRUENAME'];
     $return['phone'] = $base_info['USERMOBILE'];
     $return['city_id'] = $base_info['CITYID'];
     $return['cityName'] = $citys[$base_info['CITYID']];
     // 城市名
     $return['workRegion'] = $area['TYPENAME'] . ' ' . $block['TYPENAME'];
     //工作区域
     //获取所属公司
     $com = Model_Broker_CstCompany::getCompanyNameById($base_info['COMPANYID']);
     $return['company'] = $com['CompanyName'];
     //所属公司
     $return['store'] = $cst_commpany['COMANYNAME'];
     //所属门店
     $return['display'] = "";
     $return['bnsCardStatus'] = $bnsCardStatus;
     $return['userCardStatus'] = $userCardStatus;
     $return['userPhotoStatus'] = $photoStaus;
     $return['imageUrl'] = $imageUrl;
     $return['userId'] = $base_info['USERID'];
     //账户余额
     $hzbroker_id = Bll_HzBroker::get_brokerid_by_ajk_brokerid($broker_id);
     if (!$hzbroker_id) {
         $hzbroker_id = $broker_id;
     }
     $broker_money = Bll_PayAccount::get_broker_balance($hzbroker_id);
     $return['balance'] = sprintf("%.2f", $broker_money);
     return $return;
 }
コード例 #22
0
ファイル: Hammer.php プロジェクト: emilymwang8/ajk-broker
 public function handle_request()
 {
     $is_christmas_test = APF::get_instance()->get_config('is_christmas_test', 'christmas');
     if (!$is_christmas_test) {
         if (time() < strtotime("2013-12-16 00:00:00")) {
             APF::get_instance()->get_response()->redirect(Uri_ChristmasUrl::advance_url());
         }
     }
     $isLoggedIn = $this->isBrokerLogin();
     $this->setAttribute('BrokerIsLoggedIn', $isLoggedIn);
     // 获取缓存实例
     $cache = APF_Cache_Factory::get_instance()->get_memcache();
     // CurrentRoundTime & NextRoundTime
     $currentRoundTime = null;
     $nextRoundTime = null;
     $startDate = Util_Christmas::hammerRushStartDate();
     $endDate = Util_Christmas::hammerRushEndDate();
     if (!Util_Christmas::hammerRushStarted()) {
         $currentRoundTime = null;
         $nextRoundTime = date("{$startDate} 10:00:00");
     } elseif (!Util_Christmas::hammerRushEnded()) {
         $currentHour = date('H');
         if ($currentHour < 10) {
             if (date('Y-m-d') != $startDate) {
                 $currentRoundTime = date('Y-m-d 18:00:00', strtotime('-1 day'));
             }
             $nextRoundTime = date('Y-m-d 10:00:00');
         } elseif ($currentHour >= 10 && $currentHour < 14) {
             $currentRoundTime = date('Y-m-d 10:00:00');
             $nextRoundTime = date('Y-m-d 14:00:00');
         } elseif ($currentHour >= 14 && $currentHour < 18) {
             $currentRoundTime = date('Y-m-d 14:00:00');
             $nextRoundTime = date('Y-m-d 18:00:00');
         } elseif ($currentHour >= 18) {
             $currentRoundTime = date('Y-m-d 18:00:00');
             if (date('Y-m-d') != $endDate) {
                 $nextRoundTime = date('Y-m-d 10:00:00', strtotime('+1 day'));
             }
         }
     }
     $this->setAttribute('CurrentRoundTime', $currentRoundTime);
     $this->setAttribute('NextRoundTime', $nextRoundTime);
     // IsRushable
     $isRushable = false;
     // 当前在可抢时间范围内
     if ($currentRoundTime && time() < strtotime($currentRoundTime) + 30 * 60) {
         $isRushable = true;
     }
     // 当前可抢开关
     $result = $cache->get(Util_Christmas::hammerIsRushableCacheKey($currentRoundTime));
     if ($result !== FALSE) {
         $isRushable = (bool) $result;
     }
     $this->setAttribute('IsRushable', $isRushable);
     $this->setAttribute('IsEnd', Util_Christmas::hammerRushEnded());
     if ($isLoggedIn) {
         $brokerId = self::$intBrokerID;
         self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId, true);
         $this->setAttribute('BrokerName', $this->request->getUserName());
         $isCheckedState = isset(self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')]) && self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')];
         $this->setAttribute('BrokerIsCheckedState', $isCheckedState);
         $gradeScore = isset(self::$BrokerInfo['BaseInfo'][strtoupper('gradescore')]) ? self::$BrokerInfo['BaseInfo'][strtoupper('gradescore')] : 0;
         $this->setAttribute('BrokerGradeScore', $gradeScore);
         $exchangeHammerNumber = Model_Christmas_HammerLog::data_access()->filter_by_op('brokerId', '=', $brokerId)->filter_by_op('type', '=', Model_Christmas_HammerLog::TYPE_GRADE_EXCHANGE)->count();
         $isExchangeable = $exchangeHammerNumber < 3;
         $this->setAttribute('IsExchangeAble', $isExchangeable);
         $brokerHammer = Model_Christmas_BrokerHammer::fetchBrokerHammerByBrokerId($brokerId, true);
         $this->setAttribute('BrokerHammerNumber', $brokerHammer->number);
     } else {
         $this->setAttribute('BrokerLoginUrl', Uri_ChristmasUrl::login_url($this->request->get_request_url()));
     }
     return 'Christmas_Hammer';
 }
コード例 #23
0
ファイル: HammerRush.php プロジェクト: emilymwang8/ajk-broker
 /**
  * 逻辑
  * 插入前,判断 排名 < 1000,执行插入。
  * 插入后,判断 排名 < 1000,更新总数;否则,删除。
  */
 public function handle_request()
 {
     $apf = APF::get_instance();
     $request = $apf->get_request();
     $response = $apf->get_response();
     $cache = APF_Cache_Factory::get_instance()->get_memcache();
     // CurrentRoundTime & NextRoundTime
     $currentRoundTime = null;
     $nextRoundTime = null;
     $startDate = Util_Christmas::hammerRushStartDate();
     $endDate = Util_Christmas::hammerRushEndDate();
     if (!Util_Christmas::hammerRushStarted()) {
         $currentRoundTime = null;
         $nextRoundTime = date("{$startDate} 10:00:00");
     } elseif (!Util_Christmas::hammerRushEnded()) {
         $currentHour = date('H');
         if ($currentHour < 10) {
             if (date('Y-m-d') != $startDate) {
                 $currentRoundTime = date('Y-m-d 18:00:00', strtotime('-1 day'));
             }
             $nextRoundTime = date('Y-m-d 10:00:00');
         } elseif ($currentHour >= 10 && $currentHour < 14) {
             $currentRoundTime = date('Y-m-d 10:00:00');
             $nextRoundTime = date('Y-m-d 14:00:00');
         } elseif ($currentHour >= 14 && $currentHour < 18) {
             $currentRoundTime = date('Y-m-d 14:00:00');
             $nextRoundTime = date('Y-m-d 18:00:00');
         } elseif ($currentHour >= 18) {
             $currentRoundTime = date('Y-m-d 18:00:00');
             if (date('Y-m-d') != $endDate) {
                 $nextRoundTime = date('Y-m-d 10:00:00', strtotime('+1 day'));
             }
         }
     }
     // IsRushable
     $isRushable = false;
     // 当前在可抢时间范围内
     if ($currentRoundTime && time() < strtotime($currentRoundTime) + 30 * 60) {
         $isRushable = true;
     }
     // 当前可抢开关
     $result = $cache->get(Util_Christmas::hammerIsRushableCacheKey($currentRoundTime));
     if ($result !== FALSE) {
         $isRushable = (bool) $result;
     }
     try {
         // Not Rushable
         if (!$isRushable) {
             throw new Exception_ChristmasException('Not rushable.', self::CODE_FAILED);
         }
         // 判断活动是否已开始
         if (!Util_Christmas::hammerRushStarted()) {
             throw new Exception_ChristmasException('Hammer rush is not started.', self::CODE_NOT_START);
         }
         // 判断活动是否已结束
         if (Util_Christmas::hammerRushEnded()) {
             throw new Exception_ChristmasException('Hammer rush is ended.', self::CODE_ENDED);
         }
         // 判断经纪人是否已经登陆
         if (!$this->isBrokerLogin()) {
             throw new Exception_ChristmasException('Login first.', self::CODE_NOT_LOGIN);
         }
         // 获取经纪人详情
         self::$BrokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info(self::$intBrokerID);
         $brokerId = self::$BrokerInfo['BaseInfo'][strtoupper('brokerid')];
         $userId = self::$BrokerInfo['BaseInfo'][strtoupper('userId')];
         // 判断经纪人是否通过双证验证
         if (self::$BrokerInfo['BaseInfo'][strtoupper('checkstate')] == 0) {
             throw new Exception_ChristmasException('Check state first.', self::CODE_NOT_CHECK_STATE);
         }
         // 插入前,判断是否本轮是否已经抢过
         try {
             $hammerLog = Model_Christmas_HammerLog::data_access()->force_master()->filter_by_op('brokerId', '=', $brokerId)->filter_by_op('type', '=', Model_Christmas_HammerLog::TYPE_HAMMER_RUSH)->filter_by_op('createdAt', '>=', $currentRoundTime)->find_one();
         } catch (Exception $e) {
             $hammerLog = false;
         }
         if ($hammerLog) {
             throw new Exception_ChristmasException('Already rushed.', self::CODE_RUSHED);
         }
         // 经纪人添加1把锤子
         $hammerLog = new Model_Christmas_HammerLog();
         $hammerLog->brokerId = $brokerId;
         $hammerLog->type = Model_Christmas_HammerLog::TYPE_HAMMER_RUSH;
         $hammerLog->number = 1;
         $hammerLog->memo = '整点抢锤子';
         $hammerLog->createdAt = date('Y-m-d H:i:s');
         $hammerLog->updatedAt = $hammerLog->createdAt;
         $hammerLog->save();
         // 本轮有效锤子数
         $hammerRoundNumber = 1000;
         // 插入后,判断 排名 < 1000,更新总数;否则,删除。
         $rank = $this->current_round_rank($hammerLog->id, $currentRoundTime);
         if ($rank >= $hammerRoundNumber) {
             $hammerLog->delete();
             $isRushable = false;
             $cache->set(Util_Christmas::hammerIsRushableCacheKey($currentRoundTime), false);
             throw new Exception_ChristmasException('Not rushed.', self::CODE_FAILED);
         }
         // 更新经纪人总锤子
         $brokerHammer = Model_Christmas_BrokerHammer::incrBrokerHammerNumber($brokerId, 1);
         // 发送系统消息
         $messages = Util_Christmas::messages();
         if (isset($messages[Model_Christmas_HammerLog::TYPE_HAMMER_RUSH])) {
             Bll_Service_Message::sendSystem(array('receiverIds' => $userId, 'message' => $messages[Model_Christmas_HammerLog::TYPE_HAMMER_RUSH]));
         }
         $result = array('code' => self::CODE_SUCCESS, 'message' => 'Success.', 'number' => $brokerHammer->number, 'currentTime' => strtotime($currentRoundTime) * 1000, 'nextTime' => $isRushable ? strtotime($currentRoundTime) * 1000 : strtotime($nextRoundTime) * 1000, 'isRushable' => intval($isRushable));
     } catch (Exception_ChristmasException $e) {
         $result = array('code' => $e->getCode(), 'message' => $e->getMessage(), 'nextTime' => $isRushable ? strtotime($currentRoundTime) * 1000 : strtotime($nextRoundTime) * 1000, 'isRushable' => intval($isRushable), 'isLogin' => intval($this->isBrokerLogin()), 'loginUrl' => Uri_ChristmasUrl::login_url(Uri_ChristmasUrl::hammer_url()));
     } catch (Exception $e) {
         // 500 Error
         // http_response_code('500');
         $result = array('code' => '500', 'message' => 'Server Error.');
     }
     $response->set_content_type('application/json', 'UTF-8');
     $response->add_header('Cache-Control', 'no-cache, no-store, must-revalidate');
     $response->add_header('Pragma', 'no-cache');
     $response->add_header('Expires', 0);
     echo json_encode($result);
     die;
 }
コード例 #24
0
ファイル: Suggestion.php プロジェクト: emilymwang8/ajk-broker
 public function get_broker_info()
 {
     $brokerId = APF::get_instance()->get_request()->getBrokerId();
     $info = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     return $info;
 }
コード例 #25
0
 /**
  * 二手房-板块精选房源设置页面
  *
  * @param int $brokerId
  * @param int $cityId
  * @param int $houseId
  * @param array $params
  *
  * @return array
  */
 public static function esf_setting($brokerId, $cityId, $houseId, $userId, $params = array())
 {
     $pageAttribute = array();
     //获取精选推广预算
     $brokerInfo = Bll_BrokerBaseBll::get_instance()->get_broker_info($brokerId);
     $brokerCompanyId = $brokerInfo['BaseInfo']['COMPANYID'];
     $choiceSet = APF::get_instance()->get_config('block_choice_set');
     //根据经纪人公司不同有不同的预算
     if (isset($choiceSet[$brokerCompanyId]) && !empty($choiceSet[$brokerCompanyId])) {
         $pageAttribute['min_budget'] = $choiceSet[$brokerCompanyId]['ajk']['ESF_CHOICE_MIN_BUDGET'];
         $pageAttribute['max_budget'] = $choiceSet[$brokerCompanyId]['ajk']['ESF_CHOICE_MAX_BUDGET'];
     } else {
         $pageAttribute['min_budget'] = $choiceSet['default']['ajk']['ESF_CHOICE_MIN_BUDGET'];
         $pageAttribute['max_budget'] = $choiceSet['default']['ajk']['ESF_CHOICE_MAX_BUDGET'];
     }
     self::setChoiceNum($cityId);
     //判断当前经纪人已经精选推广的房源数
     if (isset($params['act']) && isset($params['rebid'])) {
         if (self::checkEsfBidChoiceFull($brokerId, $cityId, 1)) {
             //检查二手房精选是否达到最大
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '最多精选推广' . self::$all_esf_plan_num . '套房源');
         }
     } else {
         if (self::checkEsfBidChoiceFull($brokerId, $cityId)) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '最多精选推广' . self::$all_esf_plan_num . '套房源');
         }
     }
     /** 经纪人重新推广房源 */
     if (isset($params['act']) && isset($params['rebid'])) {
         //在精选管理页就已经设置时候是重新推广
         $planInfo = Model_Plan_EsfAjkPropSpread::getChoicePlanInfoByHouseid($houseId);
         if ($planInfo->status == Model_Plan_EsfAjkPropSpread::ONLINE || $planInfo->status == Model_Plan_EsfAjkPropSpread::ONQUEUE) {
             return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源已经精选');
         }
         $pageAttribute['plan_id'] = $params['plan_id'];
         $pageAttribute['rebid'] = true;
     }
     $balance = self::get_broker_balance_by_broker_id($brokerId);
     //获取经纪人账户余额
     $pageAttribute['balance'] = $balance;
     if ($balance > 0) {
         $balance = sprintf('%.2f', $balance / 100);
     }
     $pageAttribute['balance_fmt'] = $balance;
     //获取房源信息
     $pageAttribute['housesInfo'] = Bll_House_EsfHouse::getHouseBaseInfo($houseId, $cityId);
     if (empty($pageAttribute['housesInfo'])) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不存在!');
     }
     $houseInfo = $pageAttribute['housesInfo'][0];
     if ($houseInfo->userId != $userId) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '房源不属于当前操作人');
     }
     if ($houseInfo->isVisible != 1) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '房源是违规房源,不可以参加精选房源推广');
     }
     if ($houseInfo->isHighQulity == 0) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '多图、新发15天房源才能参与精选推广');
     }
     if (date('Ymd', strtotime('-15 days')) > date('Ymd', $houseInfo->postDate)) {
         return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '多图、新发15天房源才能参与精选推广');
     }
     /** 判断是否是精选开放城市 */
     if (!Bll_City::isChoiceIndependentCity($cityId, Const_Site::ANJUKE)) {
         /** 判断是在套餐推广中 */
         $houseState = Bll_Combo_HouseRelation::getOnlineRelationByHouseId($houseId, Bll_Combo_HouseRelation::SITE_TYPE_AJK);
         if (empty($houseState)) {
             return array('err_no' => self::BID_FAIL_QUALITY_OR_NEW, 'err_msg' => '该房源不在推广中');
         }
     }
     //判断是否已在竞价计划中
     $planInfo = Model_Plan_EsfAjkPropSpread::getChoicePlanInfoByHouseid($houseId);
     if (!empty($planInfo) && !isset($params['act']) && !isset($params['rebid'])) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源已经精选');
     }
     $block = Bll_Commtype_Api::getInfoByTypeCode($houseInfo->areaCode);
     $area = Bll_Commtype_Api::getInfoByTypeId($block['parentId']);
     $pageAttribute['areaBlock'] = $area['typeName'] . " " . $block['typeName'];
     $pageAttribute['title'] = sprintf("%s,%s,%d室%d厅%d卫,%d平,%.2f万", $pageAttribute['areaBlock'], $houseInfo->commName, $houseInfo->roomNum, $houseInfo->hallNum, $houseInfo->toiletNum, intval($houseInfo->areaNum), $houseInfo->proPrice);
     $pageAttribute['community_name'] = $houseInfo->commName;
     $housePrice = intval($houseInfo->proPrice * 10000);
     if (strlen($houseInfo->areaCode) < 12) {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '房源不能精选');
     }
     //获取坑位信息
     $bucketInfo = Bll_Choice_EsfBlockBidBucket::get_bucket_info($houseInfo->areaCode, $cityId, $housePrice);
     //获取坑位信息
     if (empty($bucketInfo)) {
         Bll_Choice_EsfBlockBidBucket::init_bucket_info($houseInfo->areaCode, $cityId, $housePrice);
         $bucketInfo = Bll_Choice_EsfBlockBidBucket::get_bucket_info($houseInfo->areaCode, $cityId, $housePrice);
     }
     if ($bucketInfo['usedNum'] < $bucketInfo['maxOnlineNum']) {
         $pageAttribute['hidden']['show'] = 1;
     }
     $pageAttribute['bucket_total'] = $bucketInfo['totalNum'];
     $pageAttribute['bucket_used'] = $bucketInfo['usedNum'];
     $pageAttribute['bucket_used_num'] = $bucketInfo['usedNum'];
     $pageAttribute['bucket_total_num'] = $bucketInfo['totalNum'];
     $pageAttribute['bucket_max_online_num'] = $bucketInfo['maxOnlineNum'];
     $priceInfo = Model_House_EsfPrice::get_price_by_id($bucketInfo['priceId']);
     $pageAttribute['price_title'] = sprintf("%d-%d万", intval($priceInfo['minPrice'] / 10000), intval($priceInfo['maxPrice'] / 10000));
     //价格
     $clickPrice = Bll_Service_BlockChoice::ajkBlockClickPrice(array('brokerId' => $brokerId, 'cityId' => $cityId, 'price' => $housePrice, 'blockId' => $block['typeId']));
     if ($clickPrice['status'] == 'error') {
         return array('err_no' => self::BID_FAIL_OTHER, 'err_msg' => '服务器繁忙,请重试(code: -' . __LINE__ . ')');
     }
     if ($clickPrice['realTradeAmount'] != $clickPrice['shouldTradeAmount']) {
         $pageAttribute['favorable'] = true;
         $pageAttribute['price'] = round($clickPrice['realTradeAmount'] / 100, 2);
         $pageAttribute['origin_price'] = round($clickPrice['shouldTradeAmount'] / 100, 2);
         $pageAttribute['favorable_end_time'] = date('Y-m-d', strtotime($clickPrice['rebateEndTime']));
     } else {
         $pageAttribute['favorable'] = false;
         $pageAttribute['price'] = round($clickPrice['realTradeAmount'] / 100, 2);
     }
     //         $clickAndBudget = Bll_Choice_EsfBlockBidBucket::getBucketAverageClickBudget($houseInfo->areaCode, $cityId, $housePrice);  //获取坑位的平均点击的预算
     //        if (!empty($clickAndBudget)) {
     //            $pageAttribute['averageClick'] = $clickAndBudget['averageClick'];
     //            $pageAttribute['averageBudget'] = $clickAndBudget['averageBudget'] / 100;
     //        }
     /**重组区域精选url**/
     $bidPlanList = Bll_Plan_Bid_AjkPlan::getBrokerValidPlanListByhouseId($houseId, $brokerId, $cityId, true);
     $bidPlanList = $bidPlanList[0];
     if (isset($bidPlanList)) {
         $blockInfo['bidStatus'] = $bidPlanList['status'];
         if ($bidPlanList['status'] == 1) {
             $bidUrl = '/ajkbroker/user/choice/manage/ajk/#' . $houseId;
         } elseif ($bidPlanList['status'] == 11) {
             $bidUrl = '/ajkbroker/user/choice/manage/ajk/#' . $houseId;
         } else {
             if ($bidPlanList['status'] != 2) {
                 $bidUrl = "/ajkbroker/user/choice/set/ajk/" . $houseInfo['proId'] . '/?act=1&rebid=1&plan_id=' . $bidPlanList['id'];
             }
         }
     } else {
         $bidUrl = "/ajkbroker/user/choice/set/ajk/" . $houseInfo['proId'];
     }
     $pageAttribute['bidUrl'] = $bidUrl;
     return $pageAttribute;
 }