示例#1
0
 public function handle_request_internal()
 {
     $brokerId = $this->_params['brokerId'];
     $customerId = $this->_params['customerId'];
     $result = array('status' => 'error', 'message' => '');
     // 验证经纪人是否合法
     $broker = Model_Broker_AjkBrokerExtend::findWithBrokerId($brokerId);
     if (!$broker) {
         $result['message'] = '经纪人不合法';
         return $result;
     }
     // 判断是否已经抢过(永久锁定)
     $lock = Bll_CustomerRush_Lock::getDataByBrokerIdAndCustomerId($brokerId, $customerId);
     if (!empty($lock)) {
         $result['message'] = '已经被抢过了';
         return $result;
     }
     // 判断是否有临时关系
     $date = date('Y-m-d', strtotime("-2 day"));
     $relation = Bll_CustomerRush_BrokerUserRelation::getInstance()->getLastRalationData($brokerId, $customerId, $date);
     if (!$this->_isTmpRelation($relation) || empty($relation)) {
         $result['message'] = '已超时,请重新抢我';
         return $result;
     }
     if (!$this->_isFree()) {
         // 获取最早的一张可用劵数据
         $coupon = Bll_CustomerRush_Coupon::getInstance()->getBrokerOldestCouponEx($brokerId);
         if (empty($coupon) || $coupon->totalNum <= $coupon->usedNum) {
             $result['message'] = '没有可抢次数';
             return $result;
         }
     }
     // 获取经纪人锁
     if (!Bll_Customer_Parallel::lockBroker($brokerId)) {
         $result['message'] = '锁经纪人异常';
         return $result;
     }
     /*
      * 兼容5.0版本 ,先判断coustomer_locks表中是否有临时性数据,如果有数据则更新,否则新增插入
      */
     $latestTryLock = Model_Mobile_CustomerLock::getV2BrokerCustomerLatestTempLock($brokerId, $customerId, $relation->uploadDt);
     if (empty($latestTryLock)) {
         // 插入永久锁定
         $insertCusomerLockData = array('uploadDt' => $relation->uploadDt, 'relationId' => $relation->brokerUserRelationId, 'brokerId' => $brokerId, 'userDeviceId' => $customerId, 'status' => 2, 'foreverLockTime' => date("Y-m-d H:i:s"), 'createTime' => date("Y-m-d H:i:s"), 'updateTime' => date("Y-m-d H:i:s"));
         Bll_CustomerRush_Lock::insertCustomerLock($insertCusomerLockData);
     } else {
         // 更新customer_locks表
         $latestTryLock->relationId = $relation->brokerUserRelationId;
         $latestTryLock->status = 2;
         $latestTryLock->foreverLockTime = date("Y-m-d H:i:s");
         $latestTryLock->updateTime = date("Y-m-d H:i:s");
         $latestTryLock->save();
     }
     if (!$this->_isFree()) {
         // 消耗劵
         $this->_updateBrokerCoupon($coupon);
     }
     // 更新永久锁定,加1
     Bll_CustomerRush_Lock::incrForeverLockCount($brokerId, 1);
     // 更新临时表的关系
     $relation->status = Model_Mobile_BrokerUserRelationSub::STATUS_FOREVER_LOCKED;
     $relation->updateTime = date("Y-m-d H:i:s");
     $relation->tempLockTime = '0000-00-00 00:00:00';
     $relation->tempLockExpireTime = '0000-00-00 00:00:00';
     $relation->save();
     // 释放经纪人锁
     Bll_Customer_Parallel::unlockBroker($brokerId);
     $result['status'] = 'ok';
     $result['message'] = '成功';
     return $result;
 }