Example #1
0
 /**
  * 手动暂停金铺经纪人的定价计划
  *
  * @param int $jpBrokerId
  * @param int $cityId
  * @param array $fixPlan
  */
 private function stopJpFixPlan($jpBrokerId, $cityId, $fixPlan)
 {
     try {
         $ajkBrokerId = Bll_Broker_User::getAjkBrokerIdByJpBrokerId($jpBrokerId);
     } catch (Exception $e) {
         $this->logMsg($e->getMessage());
         return;
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]金铺的定价计划,处理开始。', $cityId, $ajkBrokerId, $jpBrokerId));
     $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d - %d]状态。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlan['id'], $fixPlan['status'], $fixPlan['stopReason']));
     $data = array('houseId' => 0, 'planId' => 0, 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'type' => 207, 'remark' => '切新端口,暂停定价计划', 'flag' => 0, 'addDate' => time(), 'dealRemark' => '', 'operateId' => 0, 'from' => __METHOD__, 'siteType' => 3);
     $this->logMsg(json_encode($fixPlan));
     if (false == Bll_Plan_Fix_JpPlan::stopPlanByHand($fixPlan['id'])) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]手动暂停失败。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlan['id'], $fixPlan['stopReason']));
         return;
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]手动暂停成功。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlan['id'], $fixPlan['stopReason']));
     if ($fixPlan['status'] == 4) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]已经停止,不通知上下架。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlan['id'], $fixPlan['stopReason']));
         return;
     }
     /**
      * 记录上下架队列
      */
     $data['planId'] = $fixPlan['id'];
     if (!Model_House_UpDown_Task::create($data, date('Ymd'))->save()) {
         $this->logMsg(sprintf('%s 记录上下架队列失败。', json_encode($data)));
     } else {
         $this->logMsg(sprintf('%s 记录上下架队列成功。', json_encode($data)));
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]金铺的定价计划,处理结束。', $cityId, $ajkBrokerId, $jpBrokerId));
 }
Example #2
0
 public static function getFykStatus($userId, $cityId)
 {
     $userInfo = Model_Fyk_Users::data_access()->filter(Model_Fyk_Users::USER_ID, $userId)->get_row();
     $isOpen = 0;
     $status = -1;
     $message = '未开通房源库功能';
     //判断城市开关
     $cityInfo = Bll_Fyk_Prop_Manage::getInstance()->getCityConfig($cityId);
     if (empty($cityInfo)) {
         $data = array('isOpen' => 0, 'status' => -1, 'message' => '未开通房源库功能');
         return $data;
     }
     if (!empty($userInfo)) {
         $isOpen = 1;
         $openDate = intval($userInfo['openDate']);
         $today = intval(date('Ymd', time()));
         if ($userInfo['status'] == Model_Fyk_Users::INIT) {
             $message = '房源库功能尚未激活';
             $status = $userInfo['status'];
         }
         if ($userInfo['status'] == Model_Fyk_Users::INVITATION) {
             if ($today >= $openDate) {
                 $message = '房源库功能已经激活';
                 $status = $userInfo['status'];
             } else {
                 $message = '您已被关入小黑屋,暂不能使用房源库功能';
                 $status = Model_Fyk_Users::BLACK;
             }
         }
     }
     //4.3版本 对之前版本做的兼容处理
     if ($status == -1) {
         $brokerInfo = Bll_Broker_User::getBrokerInfoByUserId($userId);
         if (!empty($brokerInfo)) {
             $companyId = intval($brokerInfo['companyId']);
             if (!empty($_SERVER['PG_TEST'])) {
                 //如果是PG
                 $blackList = APF::get_instance()->get_config('pg_blacklist_company_ids');
                 $userBlackList = array();
             } else {
                 $blackList = APF::get_instance()->get_config('blacklist_company_ids');
                 $userBlackList = APF::get_instance()->get_config('blacklist_user_ids');
             }
             if (!in_array($companyId, $blackList) && !in_array($userId, $userBlackList)) {
                 //若不在黑名单公司,则显示房源库入口
                 $isOpen = 1;
                 $status = 0;
                 $message = '房源库功能尚未激活';
             }
         }
     }
     // TODO 获取用户激活状态
     $data = array('isOpen' => $isOpen, 'status' => $status, 'message' => $message);
     return $data;
 }
Example #3
0
 public function handle_request_internal()
 {
     $request = APF::get_instance()->get_request();
     $brokerId = $request->getBrokerId();
     $userId = $request->getUserId();
     $params = $request->get_parameters();
     $BrokerServiceObj = new Bll_Service_Broker();
     $sq1 = $BrokerServiceObj->getBasicInfo(array('brokerId' => $brokerId));
     $replies1 = $BrokerServiceObj->aps_wait_for_replies();
     if (empty($replies1)) {
         apf_require_class("Uri_Http");
         Uri_Http::redirect_header('/user/broker/new/brokeremail?type=modify');
     }
     $oldEmail = $replies1[$sq1]['data']['email'];
     $flag = 0;
     if ($request->is_post_method()) {
         $password = Bll_Broker_User::getPasswordByUserId($userId);
         if (base64_encode(md5($params['password'])) == $password) {
             $userIdByEmail = Bll_Broker_User::getUserIdByEmail($params['email']);
             if (empty($userIdByEmail)) {
                 try {
                     //可以更改邮箱
                     $apsParams = array('brokerId' => $brokerId, 'email' => trim($params['email']));
                     $sq2 = $BrokerServiceObj->setBasicInfo($apsParams);
                     $replies2 = $BrokerServiceObj->aps_wait_for_replies();
                     $flag = $replies2[$sq2]['status'] == 'ok' ? Broker_EditEmailController::EDIT_SUCCESS : Broker_EditEmailController::EDIT_ERROR;
                 } catch (Exception $e) {
                     $flag = Broker_EditEmailController::EDIT_ERROR;
                 }
             } else {
                 //邮箱已经存在
                 //$flag = $userIdByEmail == $userId ? Broker_EditEmailController::EDIT_ERROR : Broker_EditEmailController::EMAIL_IS_EXIST;
                 $flag = Broker_EditEmailController::EMAIL_IS_EXIST;
             }
         } else {
             if (empty($params['password'])) {
                 $flag = Broker_EditEmailController::PASSWORD_EMPTY;
             } else {
                 $flag = Broker_EditEmailController::PASSWORD_ERROR;
             }
         }
         $request->set_attribute("newEmail", $params['email']);
         $request->set_attribute("url", $this->getURL('my', '/ajkbroker/broker/brokerinfo'));
     }
     $request->set_attribute("flag", $flag);
     $request->set_attribute("oldEmail", $oldEmail);
     return "Broker_EditEmail";
 }
Example #4
0
 public function handle_request_internal()
 {
     $userId = $this->_params['userId'];
     $type = $this->_params['type'];
     $source = $this->_params['source'];
     $amount = $this->_params['amount'];
     //$amount = 1;
     $userAccoutId = Bll_Fyk_Payment_User::getInstance()->getUserAccountId($userId);
     if (empty($userAccoutId)) {
         return array("status" => "error", "errcode" => Const_APIStatus::E_FYK_PROP_ACTION_ACCOUNT_IS_NULL, "message" => "支付中心账户创建失败");
     }
     /*****************创建充值订单**********/
     $addArr = array('userId' => $userId, 'accountId' => $userAccoutId, 'price' => $amount, 'payType' => $type, 'status' => Model_Fyk_RechargeOrder::STATUS_NODEAL, 'source' => $source, 'createTime' => time());
     $id = Bll_Fyk_Payment_Recharge::getInstance()->insertRechargeOrder($addArr);
     $tmpData = Bll_Fyk_Payment_Recharge::getInstance()->getRechargeOrderDataById($id);
     if (empty($id) || empty($tmpData)) {
         return array("status" => "error", "errcode" => Const_APIStatus::E_UNKNOWN, "message" => "充值插入数据库失败");
     }
     $rechargeOrder = $tmpData[0];
     $requestId = Bll_Fyk_Payment_Common::getInstance()->createRequsetId("recharge", $id);
     $orderNo = Bll_Fyk_Payment_Common::getInstance()->createOrderNo("recharge", $requestId);
     $this->updateRechargeOrderTable($rechargeOrder, array('orderNo' => $orderNo, 'status' => Model_Fyk_RechargeOrder::STATUS_DEALING));
     /*****************生成支付中心充值参数**********/
     // 获取ack
     $tmpAckResult = Bll_Fyk_Payment_Common::getInstance()->getAckValue($userAccoutId);
     $ack = $tmpAckResult['status'] ? $tmpAckResult['sessionkey'] : "";
     $userData = Bll_Broker_User::getBrokerInfoByUserId($userId);
     $apps = APF::get_instance()->get_config('apps', 'acenter');
     $userName = !empty($userData) ? $userData['trueName'] : '';
     $orderName = "移动经纪人钱包充值";
     $appId = $apps['fyk']['appId'];
     $backUrl = $this->getBackUrl($id, $userId, $amount);
     $cityId = !empty($userData) ? $userData['cityId'] : '';
     $mobile = !empty($userData) ? $userData['userMobile'] : '';
     if (empty($userAccoutId) || empty($ack) || empty($userName) || empty($cityId) || empty($mobile)) {
         return array('status' => "error", "errcode" => Const_APIStatus::E_PARAM_MISS, "message" => "参数不正确");
     }
     $objApi = new Uri_PayCenterAPI();
     $acUrl = $objApi->redirectWabPayCenter($amount / 100, $userAccoutId, $ack, $userName, $orderName, $appId, $backUrl, $orderNo, $cityId, $mobile, $orderNo);
     return array('status' => "ok", 'data' => array('acUrl' => $acUrl), "message" => "成功");
 }
 private function moveJpPPCFixPlanRelation($cityId, $jpBrokerId, $fixPlan)
 {
     try {
         $ajkBrokerId = Bll_Broker_User::getAjkBrokerIdByJpBrokerId($jpBrokerId);
     } catch (Exception $e) {
         $this->logMsg($e->getMessage());
         return;
     }
     if ($ajkBrokerId == 0) {
         $this->logMsg(sprintf('经纪人[%d - %d]没有获取到二手房经纪人ID。', $cityId, $jpBrokerId));
         return;
     }
     $fixPlanId = $fixPlan['id'];
     $fixPlanHouseRelationList = Model_House_JpHouseIdx::getHouseInfoByFixPlanIdEx($fixPlanId);
     if (empty($fixPlanHouseRelationList)) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d - %d]没有获取到金铺定价计划房源。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlanId));
         return;
     }
     foreach ($fixPlanHouseRelationList as $fixPlanHouseRelation) {
         $comboHouseRelation = Bll_Combo_HouseRelation::getRelationByHouseId($fixPlanHouseRelation['id'], Model_Combo_HouseRelation::SITE_TYPE_JP);
         if (!empty($comboHouseRelation)) {
             if ($comboHouseRelation['state'] == Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE) {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],且state==205', $fixPlanHouseRelation['id'], $comboHouseRelation['id']));
                 continue;
             }
             if (1 == Bll_Combo_HouseRelation::updateComboStatusById($comboHouseRelation['id'], Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, Model_Combo_HouseRelation::SITE_TYPE_JP)) {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新成功', $fixPlanHouseRelation['id'], $comboHouseRelation['id']));
             } else {
                 $this->logMsg(sprintf('房源[%d]的套餐关系存在id[%d],更新失败', $fixPlanHouseRelation['id'], $comboHouseRelation['id']));
             }
             continue;
         }
         $data = array('houseId' => $fixPlanHouseRelation['id'], 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'state' => Model_Combo_HouseRelation::ENUM_COMBO_EXPIRE, 'created' => $fixPlanHouseRelation['createTime']);
         if (1 == Model_Combo_HouseRelation::create($data, Model_Combo_HouseRelation::SITE_TYPE_JP)->save()) {
             $this->logMsg(sprintf('房源[%d]转移成功', $fixPlanHouseRelation['id']));
         } else {
             $this->logMsg(sprintf('房源[%d]转移失败', $fixPlanHouseRelation['id']));
         }
     }
 }
Example #6
0
 private function getBrokerAreaCode($brokerInfo)
 {
     if (empty($brokerInfo)) {
         return 0;
     }
     if (!empty($brokerInfo['AREACODE'])) {
         return strlen($brokerInfo['AREACODE']) >= 8 ? substr($brokerInfo['AREACODE'], 0, 8) : 0;
     }
     // 经纪人没有区域,去经纪人对应的门店中获取相应的区域
     $brokerCompanyId = $brokerInfo['CST_BROKER_COMPANY_ID'];
     if (empty($brokerCompanyId)) {
         return 0;
     }
     $brokerCompanyData = Bll_Broker_User::getBrokerCompanyData($brokerCompanyId);
     if (!empty($brokerCompanyData)) {
         $tmpCode = !empty($brokerCompanyData[0]['areaCode']) ? $brokerCompanyData[0]['areaCode'] : 0;
         return strlen($tmpCode) >= 8 ? substr($tmpCode, 0, 8) : 0;
     } else {
         return 0;
     }
 }
 /**
  * 创建log
  * @param $logInfo
  */
 private function createLog($logInfo)
 {
     if (!$logInfo) {
         return false;
     }
     $accountId = $logInfo['account_id'];
     //获取用户信息
     if (!($accountInfo = BLL_Payment_Account::getAccountMapping($accountId))) {
         echo 'balbanceLogId=' . $logInfo['id'] . ',获取accountInfo信息失败:$accountId=' . $accountId . PHP_EOL;
         return false;
     }
     $accountInfo = (array) $accountInfo;
     // 初始参数
     $userId = $accountInfo['userId'];
     $createTime = $logInfo['created_time'];
     $logDay = date("Ymd", strtotime($createTime));
     $amount = $logInfo['amount'];
     $inTable = false;
     // 是否写入子表
     $isStatic = false;
     // 是否定价
     $logType = $logInfo['log_type'];
     //只有定价扣费和退费才进子表
     //定价扣费
     if ($logInfo['log_type'] == 2) {
         if (in_array($logInfo['appid'], array(26, 47, 48, 30, 40))) {
             if (in_array($logInfo['appid'], array(30, 40)) && strstr($logInfo['note'], '定价') !== false) {
                 $inTable = true;
                 $isStatic = true;
             } elseif (in_array($logInfo['appid'], array(26, 47, 48))) {
                 $inTable = true;
                 $isStatic = true;
             } else {
                 $logType = 8;
                 //竞价
             }
         } else {
             $logType = 8;
             //竞价
         }
     }
     //退费
     if ($logInfo['log_type'] == 1 && ($logInfo['parentId'] == $logInfo['orderid'] && intval($logInfo['parentId'] > 0)) && $logInfo['account_id'] == $logInfo['payid']) {
         $inTable = true;
         $logType = 7;
     }
     $note = $logInfo['note'];
     // 在线充值
     if (substr($note, 0, strlen('from ')) == 'from ') {
         $note = '在线充值';
     } elseif ($logType == 1 && strpos($note, '返还') !== false) {
         //$note = '活动返还';
     } elseif ($logType == 7) {
         $note = '无效点击扣费返还';
     } elseif ($isStatic) {
         $note = '定价推广消费';
     }
     // 加钱
     if (in_array($logType, array(1, 4, 6, 7))) {
         if (!($broker = Dao_Broker_BrokerInfo::getBrokerInfoByUserId($userId))) {
             echo 'balbanceLogId=' . $logInfo['id'] . ',获取broker信息失败:userid=' . $userId . PHP_EOL;
             return false;
         }
         $cityId = $broker['CITYID'];
         $brokerId = $broker['BROKERID'];
         $isNotify = false;
         if ($logType == 4) {
             $result = $this->getBalance($accountInfo);
             if ($result['status'] == 'ok') {
                 if ($result['data']['balance'] > 0) {
                     $isNotify = true;
                 }
             }
         } else {
             $isNotify = true;
         }
         if ($isNotify) {
             // 通知租房 金浦
             //$this->notifyZufang($brokerId, $amount);//20140626 启用新队列
             //$this->notifyJinpu($brokerId, $amount);//20140626 启用新队列
             // 通知安居客上架
             //if (!Bll_House_AjkHpProSpread::insertProSpreadChange(0, 0, $brokerId, $cityId, 7, '支付中心日志同步:加钱', __CLASS__)) {
             //  echo 'balbanceLogId=' . $logInfo['id'] . '通知安居客上架失败' . PHP_EOL;
             // return false;
             //}
             $ProPlanChangeApiBll = Bll_ProPlanChangeApiBll::get_instance();
             $Result = $ProPlanChangeApiBll->insertProPlanChange(array('broker_id' => $brokerId, 'pro_id' => 0, 'plan_id' => 0, 'type' => 'BROKER_HAVE_MONEY', 'from' => __CLASS__, 'remark' => '支付中心日志同步:加钱;logType:' . $logType, 'site_type' => 4), 0);
             if ($Result['status'] != 'ok') {
                 echo 'balbanceLogId=' . $logInfo['id'] . '通知安居客上架失败,msg:' . $Result['msg'] . PHP_EOL;
             }
         }
     }
     // 账户钱变多, 通知生命周期队列
     if ($logType == 1) {
         //推广动作触发表
         if (!Bll_Broker_User::insertLifeQueen(array('BrokerId' => $brokerId, 'Type' => 2))) {
             echo 'balbanceLogId=' . $logInfo['id'] . '通知生命周期队列失败' . PHP_EOL;
         }
     }
     $isHaved = false;
     // 是否插入过
     if ($inTable) {
         if (Bll_Broker_BrokerAccountParticulars::getBalanceLogSubByAcenterId($logInfo['id'], $logDay)) {
             $isHaved = true;
         }
     } else {
         if (Bll_Broker_BrokerAccountParticulars::getBalanceLogByAcenterId($logInfo['id'], $logDay)) {
             $isHaved = true;
         }
     }
     // 重跑, 如果有记录则跳过
     if (!$isHaved) {
         $result = null;
         if ($inTable) {
             $result = (array) Bll_Broker_BrokerAccountParticulars::getBalanceLogWithCache($userId, $logType, $logDay);
         }
         if ($result) {
             //消费和退费
             $id = $result['id'];
             if ($createTime >= $result['createTimeEnd']) {
                 $createdTimeEnd = $createTime;
             } else {
                 $createdTimeEnd = date('Y-m-d H:i:s');
             }
             // 更新账户日志
             if (!Bll_Broker_BrokerAccountParticulars::updateBalanceLogById($id, $amount, $note, $createdTimeEnd)) {
                 echo 'balbanceLogId=' . $logInfo['id'] . ',账户日志更新失败' . PHP_EOL;
                 return false;
             }
         } else {
             // 新增账户日志
             if (!$userId) {
                 echo '+++++userid为空:';
                 var_dump($userId);
                 echo PHP_EOL . '支付中心账户日志id:' . $logInfo['id'] . ';获取$accountInfo为:';
                 var_dump($accountInfo);
                 echo PHP_EOL;
             }
             if (!($id = Bll_Broker_BrokerAccountParticulars::insertBalanceLog($userId, $amount, $logType, $note, $logDay, $createTime, $logInfo['id']))) {
                 echo 'balbanceLogId=' . $logInfo['id'] . ',账户日志新增失败' . PHP_EOL;
                 return false;
             }
         }
     } else {
         if (!$inTable) {
             echo 'balbanceLogId=' . $logInfo['id'] . ',已经存在表中' . PHP_EOL;
             return true;
         }
     }
     if ($inTable) {
         //消费和退费
         // 重跑 判断子表是否有, 有则直接返回
         if ($isHaved) {
             echo 'balbanceLogId=' . $logInfo['id'] . ',已经存在子表中' . PHP_EOL;
         }
         // 插入子表
         if (!($id = Bll_Broker_BrokerAccountParticulars::insertBalanceLogSub($id, $userId, $accountId, $amount, $logType, $logInfo['note'], $createTime, $logInfo['id']))) {
             echo 'balbanceLogId=' . $logInfo['id'] . ',账户子日志新增失败' . PHP_EOL;
         }
     }
 }
Example #8
0
 /**
  * @param $audit
  * @param $type
  * @return bool
  */
 private function _insertDataByType($audit, $type)
 {
     $brokerInfo = Bll_Broker_User::getBrokerInfoByUserId(intval($audit['userId']));
     $message = $this->_punishMsg($audit);
     $punishMsg = '发布了假房源 (' . $message . ')';
     if ($type == Model_Fyk_UserPunish::DETENTION) {
         $openTime = strtotime('+' . Const_Fyk::DETENTION_TIME . ' day');
         $openDate = intval(date('Ymd', $openTime));
     } else {
         $openDate = 0;
     }
     $data = array('cityId' => $audit['cityId'], 'userId' => $audit['userId'], 'brokerId' => $brokerInfo['brokerId'], 'status' => $type, 'openDate' => $openDate, 'actionType' => $audit['type'], 'punishReason' => $punishMsg, 'createTime' => date('Y-m-d H:i:s', time()));
     $punishId = Model_Fyk_UserPunish::getInstance()->insertData($data);
     return $punishId;
 }
Example #9
0
 /**
  * 手动暂停金铺经纪人的定价计划
  *
  * @param int $ajkBrokerId
  * @param int $cityId
  */
 private function stopJpFixPlan($ajkBrokerId, $cityId)
 {
     $jpBrokerId = Bll_Broker_User::getJpBrokerInfoByAjkBrokerId($ajkBrokerId);
     if ($jpBrokerId == 0) {
         $this->logMsg(sprintf('经纪人[%d - %d]没有获取到金铺经纪人ID。', $cityId, $ajkBrokerId));
         return;
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]金铺的定价计划,处理开始。', $cityId, $ajkBrokerId, $jpBrokerId));
     $spreadingPlanList = Bll_Plan_Fix_JpPlan::getValidaFixPlanByMemberId($jpBrokerId);
     $insufficientBalancePlanList = Bll_Plan_Fix_JpPlan::getStopByInsufficientBalancePlanList($jpBrokerId);
     $fixPlanList = array_merge($spreadingPlanList, $insufficientBalancePlanList);
     if (empty($fixPlanList)) {
         $this->logMsg(sprintf('经纪人[%d - %d - %d]没有获取到金铺定价计划。', $cityId, $ajkBrokerId, $jpBrokerId));
         return;
     }
     $data = array('houseId' => 0, 'planId' => 0, 'brokerId' => $ajkBrokerId, 'cityId' => $cityId, 'type' => 207, 'remark' => '切新端口,暂停定价计划', 'flag' => 0, 'addDate' => time(), 'dealRemark' => '', 'operateId' => 0, 'from' => __METHOD__, 'siteType' => 3);
     foreach ($fixPlanList as $fixPlan) {
         $this->logMsg(json_encode($fixPlan));
         if (false == Bll_Plan_Fix_JpPlan::stopPlanByHand($fixPlan['id'])) {
             $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]手动暂停失败。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlan['id'], $fixPlan['stopReason']));
             continue;
         }
         $this->logMsg(sprintf('经纪人[%d - %d - %d]定价计划[%d - %d]手动暂停成功。', $cityId, $ajkBrokerId, $jpBrokerId, $fixPlan['id'], $fixPlan['stopReason']));
         /**
          * 记录上下架队列
          */
         $data['planId'] = $fixPlan['id'];
         if (!Model_House_UpDown_Task::create($data, date('Ymd'))->save()) {
             $this->logMsg(sprintf('%s 记录上下架队列失败。', json_encode($data)));
         } else {
             $this->logMsg(sprintf('%s 记录上下架队列成功。', json_encode($data)));
         }
     }
     $this->logMsg(sprintf('经纪人[%d - %d - %d]金铺的定价计划,处理结束。', $cityId, $ajkBrokerId, $jpBrokerId));
 }
Example #10
0
 /**
  * 购买房源
  * @param $userId
  * @param $propId
  * @param $source
  * @return array
  */
 public function addUserProp($userId, $propId, $source)
 {
     //$t1 = microtime(true);
     $result = array('status' => false, 'errcode' => '', 'msg' => '');
     if (empty($userId) || empty($propId) || empty($source)) {
         $result['errcode'] = Const_APIStatus::E_UNKNOWN;
         $result['msg'] = '参数不正确';
         return $result;
     }
     /*
      * 1、验证经纪人是否已经购买
      */
     $tmpUserPropData = $this->getUserPropByUserIdAndPropId($userId, $propId);
     if (!empty($tmpUserPropData)) {
         $result['errcode'] = Const_APIStatus::E_FYK_PROP_ACTION_HAVE_TO_BUY;
         $result['msg'] = '该房源已购买';
         return $result;
     }
     /*
      * 2、验证房源是否存在
      */
     $propData = $this->getPropInfo($propId, array(Const_Fyk::PROPSTATUS_SELLING, Const_Fyk::PROPSTATUS_NOSELL));
     if (empty($propData)) {
         $result['errcode'] = Const_APIStatus::E_FYK_PROP_INFO_IS_NULL;
         $result['msg'] = '该房源不存在';
         return $result;
     }
     // 判断是否是测试账户
     if (!empty($_SERVER['PG_TEST'])) {
         //PG
         $testCommIds = APF::get_instance()->get_config('fyk_pg_test_commIds');
         $tmpTestUserIds = APF::get_instance()->get_config('fyk_pg_test_userIds');
     } else {
         $testCommIds = APF::get_instance()->get_config('fyk_ga_test_commIds');
         $tmpTestUserIds = APF::get_instance()->get_config('fyk_ga_test_userIds');
     }
     $testUserIds = array_values($tmpTestUserIds);
     if (in_array($userId, $testUserIds) && !in_array($propData[$propId]['commId'], $testCommIds)) {
         $result['errcode'] = Const_APIStatus::E_UNKNOWN;
         $result['msg'] = '测试账户,不能购买其他房源';
         return $result;
     } else {
         if (!in_array($userId, $testUserIds) && in_array($propData[$propId]['commId'], $testCommIds)) {
             $result['errcode'] = Const_APIStatus::E_UNKNOWN;
             $result['msg'] = '测试房源,您不能购买';
             return $result;
         }
     }
     //$t2 =  microtime(true);
     //echo '1.本地耗时'.round($t2-$t1,3)."<br>";
     $cityId = empty($propData[$propId]['cityId']) ? 0 : $propData[$propId]['cityId'];
     $userCityId = Bll_Broker_User::getCityIdByUserId($userId);
     if (empty($cityId) || empty($userCityId) || $cityId != $userCityId) {
         $result['errcode'] = Const_APIStatus::E_UNKNOWN;
         $result['msg'] = '经纪人城市id信息异常';
         return $result;
     }
     /*
      * 3、验证余额是否足够
      */
     $userAccoutId = Bll_Fyk_Payment_User::getInstance()->getUserAccountId($userId);
     if (empty($userAccoutId)) {
         $result['errcode'] = Const_APIStatus::E_FYK_PROP_ACTION_ACCOUNT_IS_NULL;
         $result['msg'] = '支付账号不存在';
         return $result;
     }
     //$t3 =  microtime(true);
     //echo '2.本地耗时'.round($t3-$t2,3)."<br>";
     $balanceResult = Bll_Fyk_Payment_Amount::getInstance()->getBalance($userId, $userAccoutId);
     $balance = $balanceResult['status'] ? $balanceResult['balance'] : 0;
     //$t4 =  microtime(true);
     //echo '3.查询余额耗时'.round($t4-$t3,3)."<br>";
     // 获取购买价格
     $startDate = date("Ymd");
     $price = Bll_Fyk_Payment_Price::getInstance()->getPropUnitPrice($cityId, $startDate, Model_Fyk_CityPriceConfig::TYPE_BUY);
     if (empty($price)) {
         $result['errcode'] = Const_APIStatus::E_FYK_PROP_ACTION_PRICE_ANOMALIES;
         $result['msg'] = '支付价格异常';
         return $result;
     }
     if ($balance < $price) {
         $result['errcode'] = Const_APIStatus::E_FYK_PROP_ACTION_LACK_OF_BALANCE;
         $result['msg'] = '余额不足';
         return $result;
     }
     /*
      * 4、添加订单
      */
     $addOrderData = array('accountId' => $userAccoutId, 'userId' => $userId, 'propId' => $propId, 'price' => $price, 'status' => Model_Fyk_UserOrder::ORDER_STATUS_NODEAL, 'requestId' => 0, 'source' => $source, 'createTime' => time());
     $orderId = Bll_Fyk_Order_Manage::getInstance()->insertData($addOrderData);
     // $t5 = microtime(true);
     // echo '5.本地耗时'.round($t5-$t4,3)."<br>";
     /*
      * 5.扣费
      */
     $note = "购买房源扣款,房源id为{$propId}";
     $requestId = Bll_Fyk_Payment_Common::getInstance()->createRequsetId("order", $orderId);
     $payResult = Bll_Fyk_Payment_Amount::getInstance()->chargeMoney($userId, $price, $userAccountId = "", $note, $requestId);
     //$t6 = microtime(true);
     //echo '6.扣费耗时'.round($t6-$t5,3)."<br>";
     if ($payResult['status'] == false) {
         // 更新订单状态支付失败
         $updateOrderArr = array("status" => Model_Fyk_UserOrder::ORDER_STATUS_PAYFAIL, "requestId" => $requestId);
         Bll_Fyk_Order_Manage::getInstance()->updateData(array("id" => $orderId), $updateOrderArr);
         $result['errcode'] = Const_APIStatus::E_FYK_PROP_ACTION_PAY_FAILURE;
         $result['msg'] = '支付失败';
     } else {
         // 记录到账户流水表
         $addBalanceLogArr = array('userId' => $userId, 'accountId' => $userAccoutId, 'propId' => $propId, 'listId' => $orderId, 'price' => $price, 'realPrice' => $price, 'amount' => $payResult['balance'], 'requestId' => $requestId, 'type' => Const_Fyk::USER_BUY_PROP, 'createTime' => time());
         Bll_Fyk_Payment_Log::getInstance()->insertBalanceLog($addBalanceLogArr);
         // 更新订单状态支付成功
         $updateOrderArr = array("status" => Model_Fyk_UserOrder::ORDER_STATUS_PAYSUCCESS, "requestId" => $requestId);
         Bll_Fyk_Order_Manage::getInstance()->updateData(array("id" => $orderId), $updateOrderArr);
         // 插入我的房源列表
         $addUserPropArr = array('cityId' => $cityId, 'userId' => $userId, 'propId' => $propId, 'source' => $source, 'status' => !empty($propData[$propId]['status']) ? $propData[$propId]['status'] : Const_Fyk::PROPSTATUS_DELETE, 'comeFrom' => Model_Fyk_UserProps::COME_FROM_BUY, 'createTime' => time());
         Model_Fyk_UserProps::getInstance()->insertData($addUserPropArr);
         Bll_Fyk_UserUnReadData::getInstance()->updateUnReadNum($userId, Model_Fyk_UserUnread::TYTE_AMOUNT);
         $result['status'] = true;
     }
     // 记录到扣费详细日志
     //$t7 = microtime(true);
     //echo '7.耗时'.round($t7-$t6,3)."<br>";
     //echo '8.总耗时'.round($t7-$t1,3).'秒';exit;
     return $result;
 }