wesmiler пре 12 часа
родитељ
комит
3ed25d4ff4
4 измењених фајлова са 89 додато и 110 уклоњено
  1. 1 2
      README.md
  2. 12 14
      app/Http/Controllers/Api/v1/LoginController.php
  3. 75 93
      app/Services/Api/MemberService.php
  4. 1 1
      routes/api.php

+ 1 - 2
README.md

@@ -1,3 +1,2 @@
 # NN2026031605
-
-情趣商城
+蜜柚情趣商城

+ 12 - 14
app/Http/Controllers/Api/v1/LoginController.php

@@ -16,10 +16,10 @@ class LoginController extends webApp
 {
 
     /**
-     * 账号登录
+     * 登录验证
      * @return array
      */
-    public function login(MemberValidator $validator)
+    public function check(MemberValidator $validator)
     {
         try {
             $params = request()->all();
@@ -29,7 +29,7 @@ class LoginController extends webApp
                 return showJson($params, false);
             }
 
-            if (!$result = MemberService::make()->login($code, $params)) {
+            if (!$result = MemberService::make()->check($code, $params)) {
                 return showJson(MemberService::make()->getError(), false);
             }
 
@@ -41,28 +41,26 @@ class LoginController extends webApp
     }
 
     /**
-     * 小程序授权登录
-     * @param MemberValidator $validator
+     * 账号登录
      * @return array
      */
-    public function mpAuth(MemberValidator $validator)
+    public function login(MemberValidator $validator)
     {
-        $params = request()->all();
         try {
-            $params = $validator->check($params, 'mp');
+            $params = request()->all();
+            $code = request()->post('code', '');
+            $params = $validator->check($params, 'login');
             if (!is_array($params)) {
                 return showJson($params, false);
             }
 
-            $code = isset($params['code']) ? $params['code'] : '';
-            if ($result = MemberService::make()->mpAuth($code, $params)) {
-                return showJson(MemberService::make()->getError(), true, $result);
-            }else{
+            if (!$result = MemberService::make()->login($code, $params)) {
                 return showJson(MemberService::make()->getError(), false);
             }
-        } catch (\Exception $exception) {
+
+            return showJson(MemberService::make()->getError(), true, $result);
+        }catch (\Exception $exception) {
             $error = ['data' => $exception->getTrace(), 'err' => $exception->getMessage()];
-            RedisService::set("caches:members:loginError", ['params'=>$params, 'error'=>$error], 600);
             return showJson(1046, false, $error);
         }
     }

+ 75 - 93
app/Services/Api/MemberService.php

@@ -61,12 +61,12 @@ class MemberService extends BaseService
     }
 
     /**
-     * 授权登录
+     * 验证账号
      * @param $code
      * @param array $params
      * @return array|false
      */
-    public function login($code, $params = [])
+    public function check($code, $params = [])
     {
         // 账号登录
         if (empty($code)) {
@@ -89,16 +89,74 @@ class MemberService extends BaseService
             ->first();
         $data = $data ? $data->toArray() : [];
         $userId = isset($data['id']) ? $data['id'] : 0;
-        $avatar = isset($data['avatar']) ? $data['avatar'] : '';
-        $mobile = isset($data['mobile']) ? $data['mobile'] : '';
-        $nickName = isset($data['nickname']) ? $data['nickname'] : '';
         $status = isset($data['status']) ? $data['status'] : 0;
+        $nickname = isset($data['nickname']) ? $data['nickname'] : '';
+        $avatar = isset($data['nickname']) ? $data['avatar'] : '';
         $mark = isset($data['mark']) ? $data['mark'] : 0;
-        if ($data && $userId && $status != 1 && $mark == 1) {
-            $this->error = 2015;
+        if($data && ($status!= 1 && $mark == 1)){
+            $this->error = '账号已被冻结,请联系客服~';
+            return false;
+        }
+
+        return ['uid'=>$userId,'has_info'=>($nickname && $avatar && $mark==1)? true: false, 'openid'=>$openid];
+    }
+
+    /**
+     * 授权登录
+     * @param $code
+     * @param array $params
+     * @return array|false
+     */
+    public function login($code, $params = [])
+    {
+        $openid = isset($params['openid'])? $params['openid'] : '';
+        $avatar = isset($params['avatar'])? $params['avatar'] : '';
+        $nickname = isset($params['nickname'])? $params['nickname'] : '';
+
+        if(empty($openid)){
+            $this->error = '请先获取授权';
             return false;
         }
 
+        // 账号登录
+        if (empty($code)) {
+            $this->error = 1041;
+            return false;
+        }
+
+        if(empty($avatar) || empty($nickname)){
+            $this->error = '请先授权设置用户信息';
+            return false;
+        }
+
+        // 获取手机号信息
+        if($code){
+            $phoneData = MpService::make()->getPhoneNumber($code);
+            $phoneData = isset($phoneData['phone_info']) ? $phoneData['phone_info'] : [];
+            $phone = isset($phoneData['phoneNumber']) ? $phoneData['phoneNumber'] : '';
+
+            if (empty($phone)) {
+                $this->error = MpService::make()->getError();
+                return false;
+            }
+        }
+
+
+        $avatar = save_base64_image($avatar, 'avatar');
+
+
+        // 验证是否注册,没有则注册
+        $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;
+        if ($data && $userId && $status != 1) {
+            $this->error = '账号已被冻结,请来奶昔客服~';
+            return false;
+        }
 
         $system = isset($params['system']) ? $params['system'] : [];
         $system = $system && !is_array($system) ? json_decode($system, true) : $system;
@@ -106,6 +164,10 @@ class MemberService extends BaseService
         $uuid = isset($system['uuid']) ? $system['uuid'] : '';
         $version = isset($system['app_version']) ? $system['app_version'] : '';
         if (empty($data)) {
+            // 清理无效注册数据
+            $this->model->where(['openid'=>$openid,'mark'=>0])->delete();
+
+            // 用户ID
             $userId = $this->model->max('id') + 1;
 
             // 推荐人
@@ -125,13 +187,13 @@ class MemberService extends BaseService
             }
 
             $data = [
-                'nickname' => '',
+                'nickname' => $nickname,
                 'openid' => $openid,
-                'mobile' => '',
-                'avatar' => '',
+                'mobile' => $phone,
+                'avatar' => $avatar,
                 'parent_id' => $rid,
                 'parents' => $parents,
-                'code' => get_random_code(9, 'S', $userId),
+                'code' => get_random_code(9, 'Q', $userId),
                 'password' => get_password('a123456'),
                 'login_ip' => get_client_ip(),
                 'create_time' => time(),
@@ -151,7 +213,7 @@ class MemberService extends BaseService
 
 
         } // 更新登录信息
-        else if ($mark == 0 || !RedisService::get("caches:members:login_{$userId}")) {
+        else if (!RedisService::get("caches:members:login_{$userId}")) {
             $updateData = [
                 'login_ip' => get_client_ip(),
                 'login_time' => time(),
@@ -162,32 +224,17 @@ class MemberService extends BaseService
                 'mark' => 1,
             ];
 
-            if ($mark == 0) {
-                $data['create_time'] = time();
-                $data['nickname'] = '';
-                $data['avatar'] = '';
-                $data['mobile'] = '';
-                $data['openid'] = $openid;
-                $nickName = '';
-                $avatar = '';
-                $mobile = '';
-            }
             $this->model->where(['id' => $userId])->update($updateData);
             RedisService::set("caches:members:login_{$userId}", $updateData, rand(30, 60));
         }
 
-        // 如果未生成佣金账户则创建
-        if(!$accountId = AccountStatisticsModel::where(['user_id'=>$userId])->value('id')){
-            AccountStatisticsModel::insert(['user_id'=>$userId,'created_at'=>date('Y-m-d H:i:s')]);
-        }
-
         // 获取登录授权token
         $token = JwtService::make()->encode($userId);
 
         // 结果返回
         $result = [
             'access_token' => $token,
-            'info' => ['uid' => $userId, 'openid' => $openid, 'has_info' => $avatar && $nickName ? 1 : 0, 'mobile' => $mobile],
+            'info' => ['uid' => $userId, 'openid' => $openid, 'mobile' => $data['mobile']],
         ];
 
         // 用户缓存信息
@@ -199,71 +246,6 @@ class MemberService extends BaseService
         return $result;
     }
 
-    /**
-     * 完善资料
-     * @param $params
-     * @return array|false
-     */
-    public function setProfile($params)
-    {
-        $id = isset($params['id'])? $params['id'] : 0;
-        $code = isset($params['code'])? $params['code'] : '';
-        $avatar = isset($params['avatar'])? $params['avatar'] : '';
-        $nickname = isset($params['nickname'])? $params['nickname'] : '';
-        if($id<=0){
-            $this->error = '授权参数错误,请刷新重试';
-            return false;
-        }
-
-        if(empty($avatar) || empty($nickname)){
-            $this->error = '请先获取用户授权信息';
-            return false;
-        }
-
-        $userInfo = $this->model->where(['id'=>$id,'mark'=>1])
-            ->select(['id as uid', 'nickname','mobile', 'openid','avatar'])
-            ->first();
-        $phone = isset($userInfo['mobile'])? $userInfo['mobile'] : '';
-        if(empty($userInfo)){
-            $this->error = '授权登录失败,请刷新重试';
-            return false;
-        }
-
-        if(empty($phone) && empty($code)){
-            $this->error = '请先刷新重试,授权获取手机号';
-            return false;
-        }
-
-        // 获取手机号信息
-        if($code){
-            $phoneData = MpService::make()->getPhoneNumber($code);
-            $phoneData = isset($phoneData['phone_info']) ? $phoneData['phone_info'] : [];
-            $phone = isset($phoneData['phoneNumber']) ? $phoneData['phoneNumber'] : '';
-
-            if (empty($phone)) {
-                $this->error = MpService::make()->getError();
-                return false;
-            }
-        }
-
-
-        $avatar = save_base64_image($avatar, 'avatar');
-        if(!$this->model->where(['id'=>$id])->update(['mobile'=>$phone,'nickname'=>$nickname,'avatar'=>$avatar,'update_time'=>time()])){
-            $this->error = '获取授权信息失败';
-            return false;
-        }
-
-        $this->error = '登录成功';
-
-        // 获取登录授权token
-        $token = JwtService::make()->encode($id);
-        RedisService::keyDel("caches:members:teamList*");
-        return [
-            'access_token'=> $token,
-            'info'=> $userInfo
-        ];
-    }
-
 
     /**
      * 重置密码

+ 1 - 1
routes/api.php

@@ -19,7 +19,7 @@ use Illuminate\Support\Facades\Route;
 Route::prefix('v1')->group(function() {
     // 登录
     Route::post('/login', [\App\Http\Controllers\Api\v1\LoginController::class, 'login']);
-    Route::post('/mpAuth', [\App\Http\Controllers\Api\v1\LoginController::class, 'mpAuth']);
+    Route::post('/login/check', [\App\Http\Controllers\Api\v1\LoginController::class, 'check']);
     Route::post('/sms/send', [\App\Http\Controllers\Api\v1\LoginController::class, 'smsSend']);
     Route::post('/user/setProfile', [\App\Http\Controllers\Api\v1\MemberController::class, 'setProfile']);
     Route::post('/user/getPhoneNumber', [\App\Http\Controllers\Api\v1\MemberController::class, 'getPhoneNumber']);