public function handle_request_internal() { $entrustId = $this->_params['entrustId']; $brokerId = $this->_params['brokerId']; $entrustType = $this->_params['entrustType']; //房源数据获取 $data = Model_House_CommissionHouse::getEntrustsPro($entrustId); $data = $data[0]; //图片读取 $imgInfo = Model_Image_SaleEntrustImage::getImagesByProIds(array($entrustId)); //获取委托房源关系 $eEntrust = Model_House_Commission::getCommissions($entrustId); foreach ($eEntrust as $eEntrustval) { $eBrokers[] = $eEntrustval['brokerId']; if ($eEntrustval['brokerId'] == $brokerId) { $rushBrokerId = $eEntrustval['brokerId']; $brokerHouseId = $eEntrustval['brokerHouseId']; } } //委托房源详情状态值获取 list($showStatus, $propertyId) = $this->showState($data, $brokerId, $rushBrokerId, $brokerHouseId); //小区信息读取 $commInfo = Bll_Community_APIComm::getInstance()->getInfoByIdMapping($data['commId'], 2); //格式化数据 $data = $this->formatdate($data, $eBrokers, $showStatus, $commInfo['commLocal'], $rushBrokerId, $propertyId, $imgInfo); return array('status' => Const_APIStatus::RETURN_CODE_OK, 'data' => $data); }
private function insertCommissionSaleLog($commission) { $house = Model_House_CommissionHouse::data_access()->filter('id', $commission->houseId)->find_only(); if (empty($house)) { return false; } $commissionSaleLog = Model_House_CommissionSaleLog::create(array('cityId' => $house->cityId, 'ownerId' => $commission->ownerId, 'houseId' => $commission->houseId, 'brokerId' => $commission->brokerId, 'brokerHouseId' => $commission->brokerHouseId, 'origin' => $commission->origin, 'dateindex' => date("Ymd"), 'status' => 9, 'createTime' => time())); $commissionSaleLog->save(); }
/** * 查询房东信息 * @param $proId * @param $brokerId * @return bool * add by xiongjianxu */ private function getCommissionHouseInfo($proId, $brokerId) { $commissionInfo = Model_House_Commission::data_access()->filter('brokerHouseId', $proId)->filter('brokerId', $brokerId)->load_field('houseId')->find_only(); if (!$commissionInfo) { return false; } $houseId = $commissionInfo->houseId; $houseInfo = Model_House_CommissionHouse::data_access()->filter('id', $houseId)->find_only(); return $houseInfo; }
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); } }
public function handle_request() { $houses = $this->getPushedCommissionHouses(); $propertyIds = array(); foreach ($houses as $val) { $propertyIds[] = $val['propertyId']; } $propertyIds = array_unique($propertyIds); $entrustInfos = array(); if (!empty($propertyIds)) { //读取房源信息 $entrusts = Model_House_CommissionHouse::getEntrustsPro($propertyIds); foreach ($entrusts as $entrust) { $entrustInfos[$entrust['id']] = $entrust; } } foreach ($houses as $key => $house) { //xxx(小区)出现N室N厅(户型)的委托房源,快来抢吧 $msg = '新房源出现,快抢!'; $entrustId = $house['propertyId']; $entrustType = $entrustInfos[$house['propertyId']]['commissionType']; $result = $this->push($house['brokerId'], $msg, $entrustId, $entrustType); // 更新游标 $this->cursor['id'] = $house['id']; $this->setFlag($this->cursor); if (!$result) { $house['rpcStatus'] = -1; $this->setLog(date('Y-m-d H:i:s') . ' - id: ' . $house['id'] . ', fail'); $house->save(); unset($houses[$key]); } } $api_host = APF::get_instance()->get_config('chat_api_host'); $message_url = $api_host['host'] . '/common/sendUserNotify?from_idc=1&skip_auth=1&from=mobile-ajk-broker'; $message = json_encode($this->message); $results = Util_API::postData($message_url, $message); foreach ($houses as $house) { if ($results['status'] == 'OK') { $house['rpcStatus'] = 1; $this->setLog(date('Y-m-d H:i:s') . ' - id: ' . $house['id'] . ', success'); } else { $house['rpcStatus'] = -1; $this->setLog(date('Y-m-d H:i:s') . ' - id: ' . $house['id'] . ', fail'); } $house->save(); } }
/** * 添加日志主函数 * @param $cityId * @param $ownerHouseId * @param $brokerId * @param $brokerHouseId * @param $source * @param $status * add by xiongjianxu */ public function addLog($cityId, $ownerHouseId, $brokerId, $brokerHouseId, $source, $status) { $owerObj = Model_House_CommissionHouse::data_access()->filter('id', $ownerHouseId)->load_field('userId')->find_only(); $owerId = $owerObj->userId; $date = date('Ymd', time()); $createTime = time(); $data = array('cityId' => $cityId, 'ownerId' => $owerId, 'houseId' => $ownerHouseId, 'brokerId' => $brokerId, 'brokerHouseId' => $brokerHouseId, 'dateindex' => $date, 'status' => $status, 'origin' => $source, 'createTime' => $createTime); $isAdd = $this->_addCommissionSaleLog($data); $isUpdata = $this->_updataECommission($data); if (!$isAdd) { $this->message = array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => Const_APIStatus::E_PARAM_INVALID, 'message' => '插入委托房源操作表失败'); } elseif (!$isUpdata) { $this->message = array('status' => Const_APIStatus::RETURN_CODE_ERROR, 'errcode' => Const_APIStatus::E_PARAM_INVALID, 'message' => '更新委托关系表失败'); } else { $this->message = array('status' => Const_APIStatus::RETURN_CODE_OK, 'message' => '成功'); } }
public function handle_request_internal() { $this->apf = APF::get_instance(); $this->request = $this->apf->get_request(); $this->response = $this->apf->get_response(); $params = $this->request->get_parameters(); $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID']; // TODO 替换为其他的方式 try { // 必须使用POST请求 if (!$this->request->is_post_method()) { throw new Exception('请使用POST请求。'); } // 判断委托ID $id = isset($params['id']) & intval($params['id']) > 0 ? intval($params['id']) : 0; if ($id <= 0) { throw new Exception('非法的委托编号。'); } // 判断委托是否存在 $commission = Model_House_Commission::data_access()->filter('id', $id)->find_only(); if (!$commission) { throw new Exception('委托不存在。'); } // 确认委托的经纪人和当前经纪人是同一人 if ($commission->brokerId != $brokerId) { throw new Exception('非法的委托编号。'); } // 获取委托房源信息 $house = Model_House_CommissionHouse::data_access()->filter('id', $commission->houseId)->find_only(); if (!$house) { throw new Exception('房源不存在'); } // 返回结果 $result = array('code' => 0, 'data' => array('phone' => $house->getPhone())); } catch (Exception $e) { $result = array('code' => $e->getCode() ? $e->getCode() : 1, 'message' => $e->getMessage()); } $this->response->add_header('Content-type', 'application/json'); // $response->add_header(); // todo no cache echo json_encode($result); die; }
private function getHasOverHouses($cityId, $num = 3) { $house = Model_House_CommissionHouse::data_access()->filter('cityId', $cityId)->filter('proStatus', Model_House_CommissionHouse::STATUS_ONGOING)->filter('openBrokerCnt', Model_House_CommissionHouse::allowedMaxCommissionCount())->offset(0)->limit($num)->sort('lastModifyDate', 'desc')->find_all(); return $house; }
/** * @param $houseIds * @param $cityId * @return array */ private function getNormalHouseId($houseIds, $cityId) { if (empty($houseIds) || !is_array($houseIds) || empty($cityId)) { return array(); } $proStatus = array(Model_House_CommissionHouse::STATUS_ONGOING, Model_House_CommissionHouse::STATUS_EXPIRED, Model_House_CommissionHouse::STATUS_DELETED, Model_House_CommissionHouse::STATUS_STOP); $res = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->filter('cityId', $cityId)->filter('proStatus', $proStatus)->load_field('id')->find(); return $res; }
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); }
/** * 获取委托房源 * @param $commissionId * @param $ajkBrokerId * @return array|null */ public static function getCommissionHouse($commissionId, $ajkBrokerId) { $result = null; $commissionInfos = Model_House_Commission::getLists(array('id' => $commissionId, 'brokerId' => $ajkBrokerId, 'isDelete' => 0)); if (empty($commissionInfos)) { return array(); } $commissionInfo = $commissionInfos[0]; $houses = Model_House_CommissionHouse::getLists(array('id' => $commissionInfo['houseId'])); if (empty($houses)) { return array(); } $house = $houses[0]; // 房源非委托中,返回null if ($house['proStatus'] == 1) { $commissionInfo['house'] = $house; $result = $commissionInfo; } return $result; }
/** * 根据城區域ID获取该區域下的所有可委托房源 * @param $areaCode * @return array() * add by hukan */ private function getCommissionsByAreaCode($cityId, $areaCode, $type) { if (empty($areaCode)) { return array(); } $res = Model_House_CommissionHouse::data_access()->load_field('id')->filter('cityId', $cityId)->filter_by_op('areaCode', 'like', "{$areaCode}%"); //->filter('areaCode',$areaCode); if ($type) { $res->filter('commissionType', $type); } $data = $res->filter('proStatus', Model_House_CommissionHouse::STATUS_ONGOING)->filter_by_op('openBrokerCnt', '<', 5)->get_all(); return $data; }
/** * 取最新的一条数据 * @return mixed|null */ public static function getNewestHouse() { $result = Model_House_CommissionHouse::data_access()->sort('id', 'desc')->find_only(); return $result; }
/** * 房东房源被抢给app推送消息 * @param $brokerId 抢的经纪人ID * @param $houseId 房东房源ID * @return bool */ public function pushEntrustMsg($brokerId, $houseId) { if (empty($brokerId) || empty($houseId)) { return false; } // 判断委托房源是否存在 $house = Model_House_CommissionHouse::data_access()->filter('id', $houseId)->find_only(); if (empty($house)) { //房源不存在,不需要推送消息 return false; } // 通知到API用户端提示信息(消息推送) try { if (!empty($_SERVER['PG_TEST'])) { //如果是PG $userCheckInPushUrl = 'http://api.anjuke.test/mobile/v5/broker/checkin/notice?is_nocheck=1'; } else { $userCheckInPushUrl = 'http://api.anjuke.com/mobile/v5/broker/checkin/notice?is_nocheck=1'; } $curl = new Util_Http_Curl(); return $curl->setDefaults()->post($userCheckInPushUrl, array('broker_id' => $brokerId, 'prop_id' => $houseId, 'updated' => time(), 'owner_id' => $house->userId, 'owner_name' => $house->userName)); } catch (Exception $e) { // 暂时忽略请求 return false; } }
protected function fetchHouses() { $houses = Model_House_CommissionHouse::data_access()->filter_by_op('lastModifyDate', '>=', $this->cursor['lastModifyDate'])->sort('lastModifyDate', 'asc')->limit($this->per)->find(); return $houses; }
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); }
/** * 获取房东委托最新的一条信息 * @return mixed|null */ public static function getNewestHouse() { return Model_House_CommissionHouse::getNewestHouse(); }
protected function getCommissionProPDataById($id) { $id = intval($id); if (!$id) { return array(); } return Model_House_CommissionHouse::data_access()->filter('id', $id)->find_only(); }
/** * 开始处理数据 * @return bool */ protected function proccessData() { if (empty($this->jobData)) { //没有数据 return false; } $tDate = date('Ymd'); foreach ($this->jobData as $jobData) { $this->id = $jobData->id; //查询委托关系 $commissionInfo = Model_House_Commission::getInfoByBrokerIdAndBrokerHouseId($jobData->proId, 1, ''); if (!empty($commissionInfo)) { if (empty($this->cPropInfo[$commissionInfo->houseId])) { //房东房源具体信息 try { $this->cPropInfo[$commissionInfo->houseId] = Model_House_CommissionHouse::data_access()->find_by_pk($commissionInfo->houseId); } catch (Exception $e) { $this->cPropInfo[$commissionInfo->houseId] = false; } } $commissionProp = $this->cPropInfo[$commissionInfo->houseId]; if (empty($commissionProp)) { //房东信息没有,跳过处理下一跳 continue; } //写入委托房源被推广日志 $spreadObj = new Model_House_CommissionSaleLog(); $spreadObj->cityId = $commissionProp->cityId; $spreadObj->ownerId = $commissionInfo->ownerId; $spreadObj->houseId = $commissionInfo->houseId; $spreadObj->brokerId = $commissionInfo->brokerId; $spreadObj->brokerHouseId = $jobData->proId; $spreadObj->dateindex = $tDate; $spreadObj->status = $jobData->type == 1 ? Model_House_CommissionSaleLog::STATUS_PROP_FS : Model_House_CommissionSaleLog::STATUS_PROP_BS; $spreadObj->origin = $commissionInfo->origin; $spreadObj->createTime = time(); $spreadObj->save(); unset($spreadObj); $firstSmsInfo = Model_House_CommissionFirstAction::getBrokerHouseInfo($commissionInfo->brokerId, $commissionInfo->houseId); if (!empty($firstSmsInfo)) { //如果已经发过短信,无需再处理 continue; } if (empty($this->brokerInfo[$commissionInfo->brokerId])) { //经纪人信息 $this->brokerInfo[$commissionInfo->brokerId] = Model_Broker_AjkBrokerExtend::data_access()->find_by_pk($commissionInfo->brokerId); } $bInfo = $this->brokerInfo[$commissionInfo->brokerId]; if (empty($bInfo) || empty($commissionProp)) { continue; } if (mb_strlen($commissionProp->commName, 'UTF-8') > 12) { //小区名称 $commName = mb_substr($commissionProp->commName, 0, 12, 'UTF-8') . '...'; } else { $commName = $commissionProp->commName; } //短信内容 $content = $commissionProp->userName . '您好,' . $bInfo->trueName . ' ' . $bInfo->userMobile . ' 已将您在' . $commName . '的房源在安居客网站上挂牌'; $smsInfo = array('userid' => $commissionProp->userId, 'brokerid' => $commissionInfo->brokerId, 'mobile' => $commissionProp->ownerMobile, 'content' => $content, 'status' => '0', 'createtime' => date('Y-m-d H:i:s'), 'bizid' => 1010); Model_Notice_AjkSmsTask::insertLayer($smsInfo); //插入发短信信息表 $smsObj = new Model_House_CommissionFirstAction(); $smsObj->brokerId = $commissionInfo->brokerId; $smsObj->houseId = $commissionInfo->houseId; $smsObj->type = $jobData->type; $smsObj->dateIndex = $tDate; $smsObj->createTime = time(); $smsObj->save(); //给app推送消息 $this->senfAppMsg($commissionInfo->brokerId, $jobData->proId, $commissionInfo->houseId, $commissionProp->userId); var_dump('LOG:' . $jobData->id . ' send sms done!' . "\n"); } var_dump('LOG:' . $jobData->id . ' is done!' . "\n"); } return true; }
public function getHouses() { $props = Model_House_CommissionHouse::data_access()->filter_by_op('id', '>', $this->cursor['id'])->sort('id', 'asc')->limit($this->per)->find_all(); return $props; }
public function handle_request_internal() { $type = "sale"; $this->apf = APF::get_instance(); $this->request = $this->apf->get_request(); $this->response = $this->apf->get_response(); $baseDomain = APF::get_instance()->get_config('base_domain', 'common'); $baseUri = defined('BASE_URI') ? BASE_URI : ''; $baseUrl = "http://my.{$baseDomain}"; $commissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions"; $myCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/mysale"; $myRentCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/my"; $cityId = $this->request->getBrokerCityId(); if ($cityId == 11) { $this->request->set_attribute('propCheck', 0); } else { $this->request->set_attribute('propCheck', 1); } $params = $this->request->get_parameters(); $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID']; // TODO 替换为其他的方式 $per = 10; $page = isset($params[Const_Listing::PARAM_N_PAGE]) && intval($params[Const_Listing::PARAM_N_PAGE]) > 0 ? intval($params[Const_Listing::PARAM_N_PAGE]) : 1; // 获取经纪人的委托 $daCommissions = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('type', 1)->filter('isDelete', Model_House_Commission::DELETE_NO); $daTotal = clone $daCommissions; $commissions = $daCommissions->limit($per)->offset(($page - 1) * $per)->sort('id', 'desc')->find_all(); // 获取委托关联的房源 if (!empty($commissions)) { $houseIds = array(); $brokerHouseIds = array(); foreach ($commissions as $commission) { $houseIds[] = $commission->houseId; if (!empty($commission->brokerHouseId)) { $brokerHouseIds[] = $commission->brokerHouseId; } } $houses = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->sort('id', 'asc')->find_all(); $this->request->set_attribute('houses', $houses); // 获取小区默认图片 和 区域板块名称 $communityIds = array(); $areaCodes = array(); foreach ($houses as $house) { $communityIds[] = $house->commId; $areaCodes[] = $house->areaCode; } // 房东房源图片 $propImageUrls = Bll_Image_UtilsImage::getCommissionProImage($houseIds); $this->request->set_attribute('propImageUrls', $propImageUrls); // 小区默认图片 $communityImageUrls = $this->getCommunityImageUrls($communityIds); $this->request->set_attribute('communityImageUrls', $communityImageUrls); // 区域板块 $areaCodesNames = $this->getAreaCodeNames($areaCodes); $this->request->set_attribute('areaCodeNames', $areaCodesNames); // 是否推广数据 $staticPro = Bll_House_EsfHouse::getHouseOnLineInfo(self::$BrokerInfo['BaseInfo']['CITYID'], $brokerId, $brokerHouseIds); if (!empty($brokerHouseIds)) { $publishedProInfo = Bll_House_EsfHouse::getHouseInfo($brokerHouseIds, self::$BrokerInfo['BaseInfo']['CITYID']); } // 分页 $total = $daTotal->count(); $pager = Util_MultiPage::multiPage($params, '', $total, $per, 10, $myCommissionsPageUrl); $this->request->set_attribute('page', $page); $this->request->set_attribute('pager', $pager); $this->request->set_attribute('showPager', $total > $per); } $proSpreadUrl1 = "http://my." . $baseDomain . "/user/ajax/ppclimit"; $proSpreadUrl2 = "http://my." . $baseDomain . "/user/ajax/sale/staticplan/"; // 立即推广地址 $isCombo = Bll_Combo_HouseRelation::ifComboCity(self::$BrokerInfo['BaseInfo']['CITYID']); if ($isCombo == true) { $tgUrl = $baseUrl . "/ajkbroker/combo/broker/manage/ajk"; } else { $tgUrl = $baseUrl . "/user/broker/sale/homepage"; } $this->request->set_attribute('commissions', $commissions); $this->request->set_attribute('commissionsPageUrl', $commissionsPageUrl); $this->request->set_attribute('myCommissionsPageUrl', $myCommissionsPageUrl); $this->request->set_attribute('type', $type); $this->request->set_attribute('staticPro', $staticPro); $this->request->set_attribute('publishedProInfo', $publishedProInfo); $this->request->set_attribute('myRentCommissionsPageUrl', $myRentCommissionsPageUrl); $this->request->set_attribute('proSpreadUrl1', $proSpreadUrl1); $this->request->set_attribute('proSpreadUrl2', $proSpreadUrl2); $this->request->set_attribute('baseUrl', $baseUrl); $this->request->set_attribute('tgUrl', $tgUrl); return 'House_Commission_MySale'; }
public function handle_request_internal() { $type = "rent"; $this->apf = APF::get_instance(); $this->request = $this->apf->get_request(); $this->response = $this->apf->get_response(); $baseDomain = APF::get_instance()->get_config('base_domain', 'common'); $baseUri = defined('BASE_URI') ? BASE_URI : ''; $pageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/my"; $commissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions"; $myCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/mysale"; $myRentCommissionsPageUrl = "http://my.{$baseDomain}{$baseUri}/commissions/my"; // *** *** *** *** *** *** *** $params = $this->request->get_parameters(); $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID']; // TODO 替换为其他的方式 $per = 5; $page = isset($params[Const_Listing::PARAM_N_PAGE]) && intval($params[Const_Listing::PARAM_N_PAGE]) > 0 ? intval($params[Const_Listing::PARAM_N_PAGE]) : 1; $cityId = $this->request->getBrokerCityId(); if ($cityId == 11) { $this->request->set_attribute('propCheck', 0); } else { $this->request->set_attribute('propCheck', 1); } // 获取经纪人的所有委托 $daCommissions = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('type', 2)->filter('isDelete', Model_House_Commission::DELETE_NO); $daTotal = clone $daCommissions; $commissions = $daCommissions->limit($per)->offset(($page - 1) * $per)->sort('id', 'desc')->find_all(); // 获取委托关联的房源 if (!empty($commissions)) { $houseIds = array(); foreach ($commissions as $commission) { $houseIds[] = $commission->houseId; } $houses = Model_House_CommissionHouse::data_access()->filter('id', $houseIds)->sort('id', 'asc')->find_all(); $this->request->set_attribute('houses', $houses); // 获取小区默认图片 和 区域板块名称 $communityIds = array(); $areaCodes = array(); foreach ($houses as $house) { $communityIds[] = $house->commId; $areaCodes[] = $house->areaCode; } // 房东房源图片 $propImageUrls = Bll_Image_UtilsImage::getCommissionProImage($houseIds); $this->request->set_attribute('propImageUrls', $propImageUrls); // 小区默认图片 $communityImageUrls = $this->getCommunityImageUrls($communityIds); $this->request->set_attribute('communityImageUrls', $communityImageUrls); // 区域板块 $areaCodesNames = $this->getAreaCodeNames($areaCodes); $this->request->set_attribute('areaCodeNames', $areaCodesNames); // 分页 $total = $daTotal->count(); $pager = Util_MultiPage::multiPage($params, '', $total, $per, 5, $pageUrl); $this->request->set_attribute('page', $page); $this->request->set_attribute('pager', $pager); $this->request->set_attribute('showPager', $total > $per); } $this->request->set_attribute('commissions', $commissions); $this->request->set_attribute('commissionsPageUrl', $commissionsPageUrl); $this->request->set_attribute('myCommissionsPageUrl', $myCommissionsPageUrl); $this->request->set_attribute('type', $type); $this->request->set_attribute('myRentCommissionsPageUrl', $myRentCommissionsPageUrl); return 'House_Commission_My'; }
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); }
public function handle_request_internal() { $this->apf = APF::get_instance(); $this->request = $this->apf->get_request(); $this->response = $this->apf->get_response(); $params = $this->request->get_parameters(); $brokerId = self::$BrokerInfo['BaseInfo']['BROKERID']; // TODO 替换为其他的方式 $cityId = self::$BrokerInfo['BaseInfo']['CITYID']; try { // 必须使用POST请求 if (!$this->request->is_post_method()) { throw new Exception('请使用POST请求。'); } /* if($cityId == 11){ APF::get_instance()->get_response()->redirect('/ajkbroker/commissions/my'); return false; } */ // 判断是否套餐城市 $isComboCity = Bll_Combo_HouseRelation::ifComboCity($cityId); if ($isComboCity == true) { // 判断经纪人是否购买了租房套餐 $conbosProNum = Bll_Combo_Broker_BrokerComboInfo::getTotalCombosProNum($brokerId); if ($conbosProNum['totalRentPropNum'] <= 0) { $isPlan = 0; throw new Exception('经纪人无租房套餐。'); } else { $isPlan = 1; } } else { $isPlan = 1; } // 判断房源ID $id = isset($params['id']) & intval($params['id']) > 0 ? intval($params['id']) : 0; if ($id <= 0) { throw new Exception('无效的房源编号。'); } // 判断委托房源是否存在 $house = Model_House_CommissionHouse::data_access()->filter('id', $id)->find_only(); if (!$house) { throw new Exception('房源不可委托:房源不存在或已被业主删除。'); } // 判断类型是否是出租 if ($house->commissionType != Model_House_CommissionHouse::COMMISSION_TYPE_RENT) { throw new Exception('房源类型不是出租'); } // 判断委托房源状态 if ($house->proStatus != Model_House_CommissionHouse::STATUS_ONGOING) { throw new Exception('房源不可委托:已过期或已被删除。'); } // 判断委托房源已委托数量 if ($house->openBrokerCnt >= Model_House_CommissionHouse::allowedMaxCommissionCount()) { throw new Exception('委托已满。', 37); } // 判断是否已抢过委托 $commission = Model_House_Commission::data_access()->filter('brokerId', $brokerId)->filter('houseId', $house->id)->find_only(); if ($commission) { throw new Exception('你已经委托了该房源。', 77); } // 防并发(先插入,再检测(超出,删除),最后更新) // TODO 该方案层使用在2013圣诞活动“找锤子,砸金蛋”,并导致数据库多次TMC,但是在该业务场景中瞬时并发并没有那么多,暂定使用 by 胡言言 2014.02.28 $commission = Model_House_Commission::create(array('type' => $house->commissionType, 'ownerId' => $house->userId, 'houseId' => $house->id, 'brokerId' => $brokerId, '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('委托已满。', 37); } // 更新房源的委托数量 $house->incrCommissionCount(); // 更新推送房源状态 $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(); } // 拼装返回数据 $result = array('isPlan' => $isPlan, 'code' => 0, 'data' => array('owner' => $house->userName, 'phone' => $house->getPhone(), 'title' => '', 'summary' => '')); $area = '[' . implode('-', $house->getAreaCodeNames()) . '] '; $houseModel = "{$house->roomNum}室{$house->hallNum}厅{$house->toiletNum}卫,{$house->areaNum}平方米,"; switch ($house->commissionType) { case Model_House_CommissionHouse::COMMISSION_TYPE_SALE: // 记录到commission_sale_log日志表 $this->insertCommissionSaleLog($house, $brokerId); $result['data']['title'] = '[出售] ' . $house->commName; $result['data']['summary'] = $area . $houseModel . $house->proPrice . '万元'; break; case Model_House_CommissionHouse::COMMISSION_TYPE_RENT: $result['data']['title'] = '[出租] ' . $house->commName; $result['data']['summary'] = $area . $houseModel . $house->proPrice . '元/月'; break; } } catch (Exception $e) { $result = array('code' => $e->getCode() ? $e->getCode() : 1, 'message' => $e->getMessage(), 'isPlan' => $isPlan); } $baseDomain = APF::get_instance()->get_config('base_domain', 'common'); $baseUri = defined('BASE_URI') ? BASE_URI : ''; $result['data']['manageUrl'] = "http://my.{$baseDomain}{$baseUri}/commissions/my"; $this->response->add_header('Content-type', 'application/json'); echo json_encode($result); die; }
/** * 开始处理数据 * @return bool */ protected function proccessData() { if (empty($this->jobData)) { //没有数据 $this->id = $this->endStr; //作结束标示 return false; } foreach ($this->jobData as $jobData) { $this->id = $jobData->id; if ($jobData->publishTime == '0000-00-00 00:00:00') { continue; } if (!$this->checkProp($jobData)) { //检查房源,不符合要求不处理 continue; } if (empty($this->cPropInfo[$jobData->houseId])) { //房东房源具体信息 try { $this->cPropInfo[$jobData->houseId] = Model_House_CommissionHouse::data_access()->find_by_pk($jobData->houseId); } catch (Exception $e) { $this->cPropInfo[$jobData->houseId] = false; } } $commissionProp = $this->cPropInfo[$jobData->houseId]; if (empty($commissionProp)) { //房东信息不存在跳过处理下一条 continue; } //如果上海跳过不执行 if ($commissionProp->cityId == 11) { continue; } //开始更新操作 $upRes = $this->upAction($jobData->brokerHouseId, $commissionProp->cityId, 3); if ($upRes) { var_dump('LOG:' . $jobData->id . ' is success!' . "\n"); } else { var_dump('LOG:' . $jobData->id . ' is fail!' . "\n"); } } return true; }
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' => '抢成功!快去联系业主吧'); }