/** * * 用户自动注册 * 用户在打开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); }