wesmiler před 14 hodinami
rodič
revize
18ec6c9c22
1 změnil soubory, kde provedl 49 přidání a 7 odebrání
  1. 49 7
      app/Services/Api/MemberService.php

+ 49 - 7
app/Services/Api/MemberService.php

@@ -83,22 +83,63 @@ class MemberService extends BaseService
         }
 
         // 验证是否注册,没有则注册
-        $where = ['openid' => $openid];
+        $where = ['openid' => $openid,'mark'=>1];
         $data = $this->model->where($where)
             ->select(['id', 'openid', 'mobile', 'user_type', 'nickname', 'avatar', 'code', 'status', 'mark'])
             ->first();
         $data = $data ? $data->toArray() : [];
         $userId = isset($data['id']) ? $data['id'] : 0;
         $status = isset($data['status']) ? $data['status'] : 0;
+        $mobile = isset($data['mobile']) ? $data['mobile'] : '';
         $nickname = isset($data['nickname']) ? $data['nickname'] : '';
         $avatar = isset($data['nickname']) ? $data['avatar'] : '';
-        $mark = isset($data['mark']) ? $data['mark'] : 0;
-        if($data && ($status!= 1 && $mark == 1)){
+        if($data && $status!= 1){
             $this->error = '账号已被冻结,请联系客服~';
             return false;
         }
 
-        return ['uid'=>$userId,'has_info'=>($nickname && $avatar && $mark==1)? true: false, 'openid'=>$openid];
+        // 未注册或未完善资料
+        if(empty($data)){
+            return ['info'=>['uid'=>$userId,'has_info'=>($nickname && $avatar)? true: false, 'openid'=>$openid,'mobile'=>$mobile]];
+        }
+
+        // 已注册
+        $system = isset($params['system']) ? $params['system'] : [];
+        $system = $system && !is_array($system) ? json_decode($system, true) : $system;
+        $appSources = isset($system['app_sources']) && $system['app_sources'] ? $system['app_sources'] : 'ios';
+        $uuid = isset($system['uuid']) ? $system['uuid'] : '';
+        $version = isset($system['app_version']) ? $system['app_version'] : '';
+        if (!RedisService::get("caches:members:login_{$userId}")) {
+            $updateData = [
+                'login_ip' => get_client_ip(),
+                'login_time' => time(),
+                'app_uuid' => $uuid,
+                'login_count' => DB::raw("login_count+1"),
+                'app_version' => $version,
+                'device' => $appSources == 'ios' ? 1 : 2,
+                'mark' => 1,
+            ];
+
+            $this->model->where(['id' => $userId])->update($updateData);
+            RedisService::set("caches:members:login_{$userId}", $updateData, rand(30, 60));
+        }
+
+        // 获取登录授权token
+        $token = JwtService::make()->encode($userId);
+
+        // 结果返回
+        $result = [
+            'access_token' => $token,
+            'info' => ['uid' => $userId, 'openid' => $openid, 'mobile' => $mobile],
+        ];
+
+        // 用户缓存信息
+        $this->error = 2019;
+        $data['token'] = $token;
+        unset($data['mobile']);
+        RedisService::keyDel("caches:members:teamList*");
+        RedisService::set("auths:info:{$userId}", $data, 24 * 3600);
+        return $result;
     }
 
     /**
@@ -110,6 +151,7 @@ class MemberService extends BaseService
     public function login($code, $params = [])
     {
         $openid = isset($params['openid'])? $params['openid'] : '';
+        $mobile = isset($params['mobile'])? $params['mobile'] : '';
         $avatar = isset($params['avatar'])? $params['avatar'] : '';
         $nickname = isset($params['nickname'])? $params['nickname'] : '';
 
@@ -118,9 +160,9 @@ class MemberService extends BaseService
             return false;
         }
 
-        // 账号登录
-        if (empty($code)) {
-            $this->error = 1041;
+        // 手机号
+        if ($mobile && empty($code)) {
+            $this->error = '请先授权获取手机号';
             return false;
         }