Exemple #1
0
 /**
  * 1.3版本的通过用户的 user_id获取用户的基本信息
  * @param  int $user_id 用户的 id
  */
 public static function getUserProfileVer13($user_id)
 {
     //获取用户的昵称性别头像
     $user_avatar = UserAvatar::get($user_id);
     //用户基本信息
     $user_profile = UserProfile::getProfile($user_id);
     //认证状态
     $sign_status = UserStatus::checkSignStatus($user_id) ? 1 : 0;
     //禁言状态
     $nosay_status = UserStatus::checkPressContentStatus($user_id) ? 1 : 0;
     //返回签到天数
     $sign_count = SignRecord::getSignCount($user_id);
     //获取 uid
     $uid = UserAccount::getUid($user_id);
     //被点赞的总数,获取的顺序,发布中的数量,对应的使用的标签的数量,->太麻烦,临时增加数据表,做点赞总数的记录,用user_status的字段吧 = =
     $like_count = UserStatus::getUserLikeCount($user_id);
     //验证身份的数组
     $auth_user_arr = Yii::$app->params['auth_account'];
     //组合数据
     $user_status = ['uid' => $uid, 'avatar' => $user_avatar, 'sign_count' => $sign_count, 'banned_status' => $nosay_status, 'sign_status' => $sign_status, 'like_count' => $like_count, 'access_status' => 1, 'account_status' => (int) in_array($uid, $auth_user_arr)];
     $user_info = array_merge($user_status, $user_profile);
     return $user_info;
 }
 /**
  * 用户采用设备号进行登录
  */
 public function actionLogin()
 {
     $response = Yii::$app->response;
     $response->format = \yii\web\Response::FORMAT_JSON;
     $request = Yii::$app->request;
     $this_path = $this->modules_name . "/" . lcfirst($this->class_name) . "/" . lcfirst(str_replace('action', "", __FUNCTION__));
     $this_allow_version = "1.0";
     //获取参数
     $param_deviceid = $request->post("deviceid");
     //设备id
     $param_clienttime = (int) $request->post("clienttime");
     //客户端时间
     $param_channel = $request->post("channel");
     //渠道
     $param_os = (int) $request->post("os");
     //渠道
     //获取token
     $headers = $request->headers;
     $header_openid = $headers->get('Openid') ? $headers->get('Openid') : $request->post("openid");
     //加密之后的设备号,做到兼容post的方式
     //验证参数是不是有空的
     $check_null = Validators::validateAllNull([$param_deviceid, $param_clienttime, $header_openid, $param_channel, $param_os]);
     if ($check_null === FALSE) {
         //错误信息,参数不全
         return $response->data = Error::errorJson($this_path, 1001);
     }
     //验证加密
     $decode_hear_openid = RsaDecode::rsa_decode($header_openid);
     if ($decode_hear_openid !== $param_deviceid) {
         return $response->data = Error::errorJson($this_path, 9001);
     }
     //验证通过,证明了合法性
     //验证这个设备是不是进行过注册的操作
     $user_id = UserEmblem::checkExist($param_deviceid);
     if ($user_id == 0) {
         //新的设备,进行注册操作
         // 获取新的uid,写入 用户基础表,写入 用户标识表 ,写入 用户头像表
         $uid = NumberOrder::getNewid(1);
         $user_id = UserAccount::add($uid, $param_channel, $param_os);
         UserAvatar::add($user_id, Yii::$app->params['default_avatar']);
         UserEmblem::add($user_id, $param_deviceid);
         UserProfile::add($user_id, "游客" . rand(1000, 9999), 1);
     } else {
         $uid = UserAccount::getUid($user_id);
     }
     //写入token
     TokenUser::joinToken($uid, $param_deviceid, $param_clienttime, time(), time());
     //获取用户的基本信息 uid,头像,那么直接返回用户的头像
     $user_avatar = UserAvatar::get($user_id);
     $user_info = ['uid' => $uid, 'avatar' => $user_avatar];
     //返回对应的token
     $token = RsaDecode::tokenMake($uid);
     //返回对应的结果
     $return_json = ['request' => $this_path, 'info' => ['token' => $token, 'user_info' => $user_info], 'version' => $this_allow_version, 'error_code' => 0, 'error' => ""];
     //接口访问记录
     CensusApi::add($user_id, $this_path);
     return $response->data = $return_json;
 }