linwu 2 жил өмнө
parent
commit
65283153a7

+ 16 - 0
app/common/model/MessageTemplate.php

@@ -0,0 +1,16 @@
+<?php
+
+namespace app\common\model;
+
+use think\Model;
+
+class MessageTemplate extends Model
+{
+    // 设置字段信息
+    protected $schema = [
+        'id'      => 'int',
+        'code'    => 'string',
+        'content' => 'string',
+        'comment' => 'string',
+    ];
+}

+ 33 - 0
app/common/service/SmsService.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace app\common\service;
+
+
+use app\common\model\MessageTemplate;
+use chuanglan\Chuanglan;
+use think\facade\Log;
+
+class SmsService
+{
+
+    public function send($mobile, $code, $content_param = [])
+    {
+        $message = MessageTemplate::where('code', $code)->find();
+        if (empty($message)) {
+            Log::error('短信模板不存在:' . $code);
+            return ['code' => 1, 'msg' => '模板不存在'];
+        }
+
+        $msg = $message['content'];
+        if (!empty($content_param)) {
+            foreach ($content_param as $k => $v) {
+                $msg = str_replace('{$' . ($k + 1) . '}', $v, $msg);
+            }
+        }
+        $sms = new Chuanglan();
+        $sms->send($mobile, ['message' => $msg]);
+
+        return ['code' => 0];
+    }
+
+}

+ 92 - 111
app/worker/controller/Login.php

@@ -1,76 +1,79 @@
 <?php
+
 namespace app\worker\controller;
 
+use app\common\model\MessageTemplate;
 use app\common\model\Worker as WorkerModel;
 use Aliyun\DySDKLite\Sms\SendSms;
 
+use app\common\service\SmsService;
 use App\Http\Controllers\Sdk\GeetestLib;
 
 use think\facade\Session;
 use think\facade\Db;
 
-class Login 
+class Login
 {
-	
-	public function index()
-	{
-		return view('login/login',[
-			'domain' => request()->domain()
-		]);
-	}
-
-	public function login()
+
+    public function index()
+    {
+        return view('login/login', [
+            'domain' => request()->domain(),
+        ]);
+    }
+
+    public function login()
     {
         $mobile = trim(input('mobile'));
-        $data = Db::name('worker')
-            ->where('mobile',$mobile)
+        $data   = Db::name('worker')
+            ->where('mobile', $mobile)
             ->find();
         if (empty($data)) {
-            $res['code'] = 1;
+            $res['code']    = 1;
             $res['message'] = '该手机号未注册,请先注册';
         }
 
-        $workeradmin = WorkerModel::where(['mobile'=>$mobile])->findOrEmpty()->toArray();
+        $workeradmin = WorkerModel::where(['mobile' => $mobile])->findOrEmpty()->toArray();
         session('access_worker', $workeradmin);
         $res['code'] = 0;
         return $res;
     }
 
-	//验证手机号
-	public function yz_mobile()
+    //验证手机号
+    public function yz_mobile()
     {
 
         $mobile = trim(input('mobile'));
-        if($mobile){
+        if ($mobile) {
             $data = Db::name('worker')
-                    ->where('mobile',$mobile)
-                    ->find();
+                ->where('mobile', $mobile)
+                ->find();
 
-            if($data['status'] == 2){
+            if ($data['status'] == 2) {
                 $code = 1;
-                $msg = '该账号已经被禁用,请联系管理员';
-            }elseif(empty($data)){
+                $msg  = '该账号已经被禁用,请联系管理员';
+            } elseif (empty($data)) {
                 $code = 1;
-                $msg = '该手机号未注册,请先注册';
-            }else{
+                $msg  = '该手机号未注册,请先注册';
+            } else {
                 $code = 0;
-                $msg = '该手机号正确';
+                $msg  = '该手机号正确';
             }
 
-            exit(json_encode(array(
-                'code' 	=> $code,
-                'msg'	=> $msg
-            )));
+            exit(json_encode([
+                'code' => $code,
+                'msg'  => $msg,
+            ]));
 
-        }else{
+        } else {
             $msg = '请填写正确的手机号';
         }
 
 
-        exit(json_encode(array(
-            'code' 	=> 1,
-            'msg'	=> $msg
-        )));
+        exit(json_encode([
+            'code' => 1,
+            'msg'  => $msg,
+        ]));
     }
 
     public function jy()
@@ -81,22 +84,22 @@ class Login
         $GtSdk = new \App\Http\Controllers\Sdk\GeetestLib(GEETEST_ID, GEETEST_KEY);
 
 
-        $get_ip = get_client_ip();
-        $user_id = 'login';
+        $get_ip    = get_client_ip();
+        $user_id   = 'login';
         $digestmod = "md5";
-        $params = array(
-            "digestmod" => $digestmod,
-            "user_id" => $user_id, # 网站用户id
+        $params    = [
+            "digestmod"   => $digestmod,
+            "user_id"     => $user_id, # 网站用户id
             "client_type" => "web", #web:电脑上的浏览器;h5:手机上的浏览器,包括移动应用内完全内置的web_view;native:通过原生SDK植入APP应用的方式
-            "ip_address" => $get_ip, # 请在此处传输用户请求验证时所携带的IP
-        );
+            "ip_address"  => $get_ip, # 请在此处传输用户请求验证时所携带的IP
+        ];
 //        $status = $GtSdk->pre_process($data, 1);
         $result = $GtSdk->register($digestmod, $params);
         session(GeetestLib::GEETEST_SERVER_STATUS_SESSION_KEY, $result->getStatus());
         session("userId", $user_id);
 
 
-       return $result->getData();
+        return $result->getData();
 
     }
 
@@ -104,92 +107,71 @@ class Login
     public function yzm()
     {
 
-            Session::delete('yzm_code');
-
-            $rand = rand(000001,999999);
-
-            $mobile = trim(input('post.mobile'));
-
-            $con['rand'] = $rand;
-            $con['tel'] = $mobile;
-
-            $preg_phone='/^1[34578]\d{9}$/ims';
-
-            $rtn = [];
-
-            if(!$mobile)
-            {
-
-                $rtn['code'] = 1;
-                $rtn['message'] = '手机号为空';
-
-            }else{
-
-                if(preg_match($preg_phone,$mobile)){
-
-                    require_once('../extend/alidy/demo/SendSms.php');
+        Session::delete('yzm_code');
 
-                    $alisms = Db::name('alisms')
-                             ->field('accesskeyid,accesskeysecret,signname,mobilelogin')
-                             ->find(1);
-                    $sendSms = new \Aliyun\DySDKLite\Sms\SendSms();
-                    $res = get_object_vars($sendSms -> sendSms_yzm($con,$alisms));
-                    
-                    if($res['Message'] == 'OK')
-                    {
-                        $rtn['code'] = 0;
+        $rand       = rand(000001, 999999);
+        $mobile     = trim(input('post.mobile'));
+        $preg_phone = '/^1[34578]\d{9}$/ims';
 
-                        Session::set('yzm_code',$rand);
+        $rtn = [];
 
-                    }
-
-                }else{
-
-                    $rtn['code'] = 1;
-                    $rtn['message'] = '手机号格式不正确';
+        if (!$mobile) {
+            $rtn['code']    = 1;
+            $rtn['message'] = '手机号为空';
+        } else {
+            if (preg_match($preg_phone, $mobile)) {
+                $sms = new SmsService();
+                $res = $sms->send($mobile,'verification',[$rand]);
 
+                if ($res['code'] == 0) {
+                    $rtn['code'] = 0;
+                    Session::set('yzm_code', $rand);
+                } else {
+                    $rtn['code']    = 1;
+                    $rtn['message'] = '网络故障,请重试';
                 }
-
+            } else {
+                $rtn['code']    = 1;
+                $rtn['message'] = '手机号格式不正确';
             }
-
+        }
 
         return $rtn;
-
     }
 
 
     //验证码 验证
     public function yzm_verify()
     {
-    	
-    	
-        $mobile = trim(input('mobile'));
-        $data = Db::name('worker')
-            ->where('mobile',$mobile)
+
+
+        $mobile   = trim(input('mobile'));
+        $data     = Db::name('worker')
+            ->where('mobile', $mobile)
             ->find();
-        $yzm = (int)trim(input('yzm'));
+        $yzm      = (int)trim(input('yzm'));
         $yzm_code = Session::get('yzm_code');
-        
-     
+
+
         $res = [];
-        if($data['status'] == 2){
-            $res['code'] = 1;
+        if ($data['status'] == 2) {
+            $res['code']    = 1;
             $res['message'] = '该账号已经被禁用,请联系管理员';
-        }elseif(empty($data)){
-            $res['code'] = 1;
+        } elseif (empty($data)) {
+            $res['code']    = 1;
             $res['message'] = '该手机号未注册,请先注册';
-        }else{
+        } else {
 
-            if($yzm == $yzm_code){
-                $workeradmin = WorkerModel::where(['mobile'=>$mobile])->findOrEmpty()->toArray();
+            if ($yzm == $yzm_code) {
+                $workeradmin = WorkerModel::where(['mobile' => $mobile])->findOrEmpty()->toArray();
                 session('access_worker', $workeradmin);
                 $res['code'] = 0;
-                echo  json_encode($res);
-            }else{
+                echo json_encode($res);
+            } else {
 
-                $res['code'] = 1;
+                $res['code']    = 1;
                 $res['message'] = '验证码不正确';
-                echo  json_encode($res);
+                echo json_encode($res);
 
             }
 
@@ -197,13 +179,12 @@ class Login
 
     }
 
-	
-	
-	public function logout()
-	{
 
-		session(null); 
-		return redirect(url('/login/index'));
-	}
+    public function logout()
+    {
+
+        session(null);
+        return redirect(url('/login/index'));
+    }
 
 }

+ 6 - 6
app/worker/view/login/login.html

@@ -9,15 +9,15 @@
 				<label class="layadmin-user-login-icon layui-icon layui-icon-username" for="mobile"></label>
 				<input type="text" name="mobile" id="mobile" lay-verify="required" placeholder="手机号" class="layui-input">
 			</div>
-			<div class="layui-form-item">
+			<!--<div class="layui-form-item">
 				<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="password"></label>
 				<input type="password" name="password" id="password" lay-verify="required" placeholder="密码" class="layui-input">
+			</div>-->
+			<div class="layui-form-item">
+				<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="sendOutCode"></label>
+				<input type="text" id="yzm" name="yzm"  lay-verify="required" class="layui-input" placeholder="请输入动态码">
+				<input type="button" id="sendOutCode" onclick="sendOutCode()" value="获取动态码" lay-verify="required" placeholder="请输入动态码" class="layui-input">
 			</div>
-			<!--<div class="layui-form-item">-->
-				<!--<label class="layadmin-user-login-icon layui-icon layui-icon-password" for="sendOutCode"></label>-->
-				<!--<input type="text" id="yzm" name="yzm"  lay-verify="required" class="layui-input" placeholder="请输入动态码">-->
-				<!--<input type="button" id="sendOutCode" onclick="sendOutCode()" value="获取动态码" lay-verify="required" placeholder="请输入动态码" class="layui-input">-->
-			<!--</div>-->
 			<div class="layui-form-item">
 				<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="LAY-login-login-submit">登 入</button>
 			</div>