Просмотр исходного кода

小程序登录增加短信验证码登录

kevin 1 год назад
Родитель
Сommit
58a8c74aed
2 измененных файлов с 65 добавлено и 0 удалено
  1. 30 0
      app/api/controller/user/Useropen.php
  2. 35 0
      app/api/model/user/UserOpen.php

+ 30 - 0
app/api/controller/user/Useropen.php

@@ -171,4 +171,34 @@ class Useropen extends Controller
         }
         return $this->renderError($model->getError() ?: '发送失败');
     }
+
+    /**
+     * 发送短信
+     */
+    public function sendCodeWx($mobile, $type)
+    {
+        $model = new SmsModel();
+        if ($model->sendCodeWx($mobile, $type)) {
+            return $this->renderSuccess();
+        }
+        return $this->renderError($model->getError() ?: '发送失败');
+    }
+
+    /**
+     * 短信登录
+     */
+    public function smsloginWx()
+    {
+        $data = $this->request->post();
+        $model = new UserOpenModel;
+        $user_id = $model->smsloginWx($data);
+        if ($user_id) {
+            return $this->renderSuccess('', [
+                'user_id' => $user_id,
+                'token' => $model->getToken()
+            ]);
+        }
+
+        return $this->renderError($model->getError() ?: '登录失败');
+    }
 }

+ 35 - 0
app/api/model/user/UserOpen.php

@@ -374,4 +374,39 @@ class UserOpen extends UserModel
         return true;
     }
 
+    /**
+     * 手机号验证码登录
+     */
+    public function smsloginWx($data)
+    {
+        if (!$this->check($data)) {
+            return false;
+        }
+
+        $user = $this->where('user_no', $data['user_no'])->find();
+        if (empty($user)) {
+            $vall = [
+                'mobile'     => $data['mobile'],
+                'user_no'    => $data['mobile'],
+                'reg_source' => 'app',
+                'grade_id'   => GradeModel::getDefaultGradeId(),
+                'app_id'     => self::$app_id,
+                'password'   => md5('123456'),
+                'nickName'   => $data['mobile'],
+                'mpopen_id'  => authcode($data['openid'], 'DECODE'),
+            ];
+            if (!$this->save($vall)) {
+                $this->error = '登录失败';
+                return false;
+            }
+
+            $user = $this->where('user_no', $data['user_no'])->find();
+        }
+
+        // 生成token (session3rd)
+        $this->token = $this->token($user['user_no']);
+        // 记录缓存, 30天
+        Cache::tag('cache')->set($this->token, $user['user_id'], 86400 * 30);
+        return $user['user_id'];
+    }
 }