Beispiel #1
0
 /**
  * * 用户自动注册
  * 用户在打开APP进行第一次使用后进行自动注册,
  * 如果这个手机第一次使用APP则可以自动注册成功,
  * 如果不是第一次使用,且没有绑定过账号,则进行自动登录
  * 如果已使用绑定账号,则需要用户进行登录后才能进入APP使用
  *
  * @param $version              -- API版本号,版本控制使用
  * @param $deviceId            -- IMEI设备ID(open-udid)
  * @param $platform             -- 平台 IOS/Android
  * @param $channel              -- 登录渠道 baidu|91|appstore
  * @param $appVersion          -- App版本号
  * @param $osVersion           -- 操作系统版本号
  * @param $appId               -- 应用编号
  * @return array
  */
 public function autoRegister($version, $deviceId, $platform, $channel, $appVersion, $osVersion, $appId)
 {
     $data = array();
     $nowTime = date("Y-m-d H-i-s", strtotime("now"));
     //当前时间
     try {
         // 第一次使用打开App,判断该机器($device_id)有没有旧账号($userId)
         $user = UserMachineInfo::model()->IsExistUserIdByDeviceId($deviceId);
         if (!$user) {
             // 没有账号,自动注册, 插入数据
             $registerTime = $nowTime;
             //用户注册时间
             $lastLoginTime = $nowTime;
             //用户最后登录时间,当前为注册时间
             // 伪造username
             //                $username = '******' . LogMobileCheckcode::model()->getNum();
             $username = '******' . LogMobileCheckcode::model()->getCheckNum(6, 0, 9);
             Yii::app()->cnhutong_user->createCommand()->insert('user', array('username' => $username, 'register_time' => $registerTime, 'last_login_time' => $lastLoginTime));
             // 获得刚刚自动注册的userId
             //                $userId = self::getUserIdByAutoRegister();
             $userId = Yii::app()->cnhutong_user->getLastInsertID();
             // 表执行update/insert之后执行获得当前表的自增id
             //注册成功生成token
             $token = UserToken::model()->getRandomToken(32);
             $create_ts = $nowTime;
             // token 生成时间
             $expire_ts = date("Y-m-d H-i-s", strtotime("+30 day"));
             // token 过期时间
             Yii::app()->cnhutong_user->createCommand()->insert('user_token', array('user_id' => $userId, 'token' => $token, 'type' => $platform, 'create_ts' => $create_ts, 'expire_ts' => $expire_ts));
             // 注册成功insert user_machine_info
             $register_ip = self::getClientIP();
             Yii::app()->cnhutong_user->createCommand()->insert('user_machine_info', array('user_id' => $userId, 'device_id' => $deviceId, 'platform' => $platform, 'version' => $version, 'regist_ip' => $register_ip, 'register_time' => $registerTime));
             //userId
             $data['userId'] = $userId;
             //token
             $data['token'] = UserToken::model()->getToken($userId);
             //用户昵称,积分,等级
             $userMessage = self::getUserMessageByUserId($userId);
             $data['mobile'] = $userMessage['mobile'];
             $data['nickname'] = $userMessage['username'];
             $data['points'] = $userMessage['score'];
             $data['level'] = $userMessage['level'];
             //members   新自动注册的用户是不会有member数据的,直接为空
             $data['members'] = [];
             return $data;
         } else {
             //机器中有账号,继续判断userId唯一且密码为空。则自动登录,否则跳转到账号密码登录页面
             $aUser = self::IsAutoLogin($user);
             if ($aUser) {
                 // 唯一且手机号/密码为空, 未绑定手机,自动登录
                 //userId
                 $data['userId'] = $aUser;
                 //token
                 $data['token'] = UserToken::model()->getToken($aUser);
                 //用户昵称,积分,等级
                 $userMessage = self::getUserMessageByUserId($aUser);
                 $data['mobile'] = $userMessage['mobile'];
                 $data['nickname'] = $userMessage['username'];
                 $data['points'] = $userMessage['score'];
                 $data['level'] = $userMessage['level'];
                 //members
                 $data['members'] = UserMember::model()->getMembers($aUser);
                 $loginIp = self::getClientIP();
                 //自动登录 记录登录历史 log_user_login_history
                 LogUserLoginHistory::model()->log_user_login_history($aUser, $loginIp, $version, $deviceId, $platform, $channel, $appVersion, $osVersion, $appId, $nowTime);
                 return $data;
             } else {
                 // 有账号密码,绑定了手机号,账号密码登录
                 return 20019;
                 // MSG_MOBILE_PASSWORD_LOGIN
             }
         }
     } catch (Exception $e) {
         error_log($e);
     }
     //        return $data;
 }
 /**
  * action_id : 2102
  * 用户自动登录接口 actionUserVerify()  登录token(在系统中存放30天有效);用户id
  * @token $token string     --登录token
  * @userId $userId int      --用户id
  * @return result          调用返回结果
  * @return msg             调用返回结果说明
  * @return data             调用返回数据
  */
 public function actionUserVerify()
 {
     if (!isset($_REQUEST['token']) || !isset($_REQUEST['userId'])) {
         $this->_return('MSG_ERR_LESS_PARAM');
     }
     $token = Yii::app()->request->getParam('token', NULL);
     $userId = Yii::app()->request->getParam('userId', NULL);
     $version = Yii::app()->request->getParam('version', NULL);
     $deviceId = Yii::app()->request->getParam('deviceId', NULL);
     $platform = Yii::app()->request->getParam('platform', NULL);
     $channel = Yii::app()->request->getParam('channel', NULL);
     $appVersion = Yii::app()->request->getParam('appVersion', NULL);
     $osVersion = Yii::app()->request->getParam('osVersion', NULL);
     $appId = Yii::app()->request->getParam('appId', NULL);
     $data = User::model()->userVerify($userId, $token);
     if ($data === 20008) {
         $this->_return('MSG_ERR_FAIL_USER');
     } elseif ($data === 20007) {
         $this->_return('MSG_ERR_FAIL_TOKEN');
     }
     // 登录log
     $loginIp = $this->getClientIP();
     $nowTime = date("Y-m-d H-i-s", strtotime("now"));
     //当前时间
     LogUserLoginHistory::model()->log_user_login_history($userId, $loginIp, $version, $deviceId, $platform, $channel, $appVersion, $osVersion, $appId, $nowTime);
     // TODO : add log
     $actionId = 2102;
     $params = '';
     foreach ($_REQUEST as $key => $value) {
         $params .= $key . '=' . $value . '&';
     }
     LogUserAction::model()->userAction($userId, $actionId, $params);
     $this->_return('MSG_SUCCESS', $data);
 }