Example #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();
     try {
         // 第一次使用打开App,判断该机器($device_id)有没有旧账号($userId)
         $user = UserMachineInfo::model()->IsExistUserIdByDeviceId($deviceId);
         if (!$user) {
             // 没有账号,自动注册, 插入数据
             $registerTime = date("Y-m-d H-i-s", strtotime("now"));
             //用户注册时间
             $lastLoginTime = date("Y-m-d H-i-s", strtotime("now"));
             //用户最后登录时间,当前为注册时间
             // 伪造username
             $username = '******' . LogMobileCheckcode::model()->getNum();
             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();
             //有问题
             //注册成功生成token
             $token = UserToken::model()->getRandomToken(32);
             $create_ts = date("Y-m-d H-i-s", strtotime("now"));
             $expire_ts = date("Y-m-d H-i-s", strtotime("+30 day"));
             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
             $data['members'] = UserMember::model()->getMembers($userId);
             if (!$data['members']) {
                 $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);
                 if (!$data['members']) {
                     $data['members'] = [];
                 }
                 return $data;
             } else {
                 // 有账号密码,绑定了手机号,账号密码登录
                 return 50000;
             }
         }
     } catch (Exception $e) {
         error_log($e);
     }
     //        return $data;
 }
Example #2
0
 /**
  * 系统注册账号
  */
 public function actionSysRegister()
 {
     $user_transaction = Yii::app()->db_user->beginTransaction();
     $characters_transaction = Yii::app()->db_characters->beginTransaction();
     $token_transaction = Yii::app()->db_token->beginTransaction();
     $now = date("Y-m-d H:i:s");
     $is_register = trim(Yii::app()->request->getParam('is_register'));
     try {
         $password = null;
         if ($is_register != 1) {
             $lastAccountData = User::model()->getLastAccount();
             if ($lastAccountData) {
                 if ($lastAccountData['password'] != null) {
                     //修改过密码,请登录
                     $this->_return('MSG_ERR_EDIT_PASSWORD_LOGIN');
                 }
                 $user_id = $lastAccountData['user_id'];
                 $token = Token::model()->getUserToken($user_id, $GLOBALS['__APPID']);
                 if (!isset($token)) {
                     //创建token
                     $token = Token::model()->insertUserToken($user_id, $GLOBALS['__APPID']);
                 } else {
                     //返回的token 值
                     $token = Token::model()->updateUserToken($user_id, $GLOBALS['__APPID']);
                 }
                 $data = array();
                 $data['username'] = $lastAccountData['user_name'];
                 $data['token'] = $token;
                 $data['user_id'] = (int) $user_id;
                 $user_transaction->commit();
                 $characters_transaction->commit();
                 $token_transaction->commit();
                 $this->_return('MSG_SUCCESS', $data);
             }
         }
         //用户表    goddess_user.user AND goddess_user.user%02s 插入
         $res = User::model()->SysInsertUser($password);
         $user_id = $res['user_id'];
         //用户信息  goddess_user.user_info 插入
         UserInfo::model()->insertUserInfo($user_id, 0, '', '', 0, '游客');
         //硬件信息  goddess_user.user_machine_info 插入
         UserMachineInfo::model()->insertUserMachineInfo($user_id, $GLOBALS['__IP'], $GLOBALS['__DEVICEID'], $GLOBALS['__PLATFORM'], $GLOBALS['__APPVERSION'], $GLOBALS['__CHANNEL'], $GLOBALS['__OSVERSION']);
         // 创建游戏内帐号
         Consumer::model()->createGameCharacters($user_id, $now);
         /* switch($GLOBALS['__APPID'])
            {
                // goddess 女神零距离
            	case 10 : Consumer::model()->createGameCharacters($user_id, $now); break;
            	default : 
            	    Consumer::model()->createGameCharacters($user_id, $now);
            	    break;
            } */
         //创建token
         $token = Token::model()->insertUserToken($user_id, $GLOBALS['__APPID']);
         //每日玫瑰发放
         Characters::model()->everyRose($user_id);
         // 提交事务
         $user_transaction->commit();
         $characters_transaction->commit();
         $token_transaction->commit();
         // 注册成功 写入日志
         Log::model()->_user_log($user_id, 'SYS_USER_ACTIVE', date('Y-m-d H:i:s'), '');
     } catch (Exception $e) {
         error_log($e);
         $user_transaction->rollback();
         $characters_transaction->rollback();
         $token_transaction->rollback();
         $this->_return('MSG_ERR_UNKOWN');
     }
     if ($user_id <= 0) {
         $this->_return('MSG_ERR_UNKOWN');
     }
     // 发送返回值
     $data = array();
     $data['username'] = $res['user_name'];
     $data['token'] = $token;
     $data['user_id'] = (int) $user_id;
     $this->_return('MSG_SUCCESS', $data);
 }