Przeglądaj źródła

Merge branch 'master' of http://git.9026.com/richod/dcj

zhjx 6 lat temu
rodzic
commit
5a4db579a3

+ 106 - 2
app/Http/Controllers/Web/OrderController.php

xqd xqd xqd xqd
@@ -16,9 +16,20 @@ use App\Models\MedicalSingleProjectModel;
 use Illuminate\Support\Facades\Cache;
 use App\Models\MedicalSmsConfModel;
 use Illuminate\Http\Request;
+use Carbon\Carbon;
+use GuzzleHttp\Client as GuzzleHttpClient;
+use GuzzleHttp\Exception\RequestException;
 
 class OrderController extends Controller
 {
+    public $keySmsCodeExist = 'keySmsCodeExist';
+
+    public $expireTimeExist = '';
+
+    public $keySmsCode = 'keySmsCode';
+
+    public $expireTime = '';
+
     public function index(Request $request){
 
         $conf['nationality'] = '民族';
@@ -33,7 +44,8 @@ class OrderController extends Controller
 
         if($request->method() == 'POST') {
             $data = $request->input();
-            $code = Cache::get($data['mobile'].'post');
+            $key = $this->keySmsCode . $data['mobile'];
+            $code = Cache::store('file')->get($key);
             foreach ($data as $key=>$val){
                 if(empty($val)&&$key!='sample_type'&&$key!='sex'){
                     $res['state'] = 0;
@@ -41,7 +53,7 @@ class OrderController extends Controller
                     return $this->api($res);
                 }
             }
-            /*if($code !== $data['verify']){
+          /*  if($code !== $data['verify']){
                 $res['state'] = 0;
                 $res['err'] = '验证码错误!';
                 return $this->api($res);
@@ -175,6 +187,98 @@ class OrderController extends Controller
         return $this->api($res);
     }
 
+    /*
+         * 获取验证码
+         */
+    public function getCode(Request $request)
+    {
+        //对手机号码进行验证
+        $validator = Validator::make($request->all(),
+            [
+                'phone' => 'required|regex:/^1[34578]\d{9}$/',
+            ],
+            [
+                'phone.required' => '手机号码必填',
+                'phone.regex' => '手机号码格式不正确',
+            ]
+        );
+
+
+        if ($validator->fails()) {
+            $msgs = $validator->errors()->first();
+            return json_encode(['code' => 0, 'msg' => $msgs]);
+        }
+        $phone = $request->get('mobile');
+
+        $ipkeyexist = $this->keySmsCodeExist . $_SERVER["REMOTE_ADDR"] . Carbon::now()->toDateString();
+
+        $times = Cache::store('file')->get($ipkeyexist);
+        if($times>10) {
+            return json_encode(['code' => 0, 'msg' => '一天内一个ip最多发送十次验证码']);
+        }else{
+            $times++;
+            Cache::store('file')->put($ipkeyexist, $times, 60 * 24);
+        }
+
+        $keyexist = $this->keySmsCodeExist . $phone . Carbon::now()->toDateString();;
+        $times = Cache::store('file')->get($keyexist);
+        if($times>8) {
+            return json_encode(['code' => 0, 'msg' => '一天内最多发送八次验证码']);
+        }else{
+            $times++;
+            Cache::store('file')->put($keyexist, $times, 60 * 24);
+        }
+
+        $verify_code = (string)mt_rand(1000, 9999);
+        $key = $this->keySmsCode . $phone;
+        Cache::store('file')->put($key, $verify_code, 60);
+        $msg = '【凡云小程序】您的验证码是:' . $verify_code;
+
+        $result = $this->sendSms($msg, $phone);
+//        \Log::info($msg . " res:" . $result);
+        if (!$result) return json_encode(['code' => 0, 'msg' => '短信发送失败']);
+
+        return json_encode(['code' => 200, 'msg' => '短信发送成功']);
+    }
+
+    /*
+         * 发送短信
+         */
+    public function sendSms($msg, $mobile) {
+        $url = "http://api.106txt.com/smsGBK.aspx?";
+        $account = "swufecredit2017";
+        $password = "mask751002";
+        $password = strtoupper(md5($password));
+        $gwid = 53;
+        $message = iconv("UTF-8", "GB2312", $msg);
+
+        try {
+            $client = new GuzzleHttpClient();
+            $data = [
+                'action'      => 'Send',
+                'username'        => $account,
+                'password'       => $password,
+                'gwid'      => $gwid,
+                'mobile'    => $mobile,
+                'message'       => $message,
+            ];
+            $apiRequest = $client->post($url, [
+                'form_params'      => $data,
+            ]);
+            $resp = $apiRequest->getBody()->getContents();
+            $res = iconv("GB2312", "UTF-8", $resp);
+            $re = json_decode($res, true);
+            \Log::info("发送短信 到手机:$mobile 内容:$msg RESULT:".$re['RESULT']);
+            if (trim($re['CODE']) == '1') {
+                return true;
+            }
+        } catch (RequestException $re) {
+            \Log::info("发送短信错误:".$re->getMessage());
+            return false;
+        }
+        return false;
+    }
+
     /**
      * 请求接口返回内容
      * @param  string $url [请求的URL地址]

+ 1 - 1
resources/views/web/order/index.blade.php

xqd
@@ -243,7 +243,7 @@
                 data:{
                     mobile:mobile
                 },
-                url:"{{ url('/web/Index/smsJuHe') }}",
+                url:"{{ url('/web/Index/getCode') }}",
                 success:function (msg) {
                     if(msg.state ==1){
                         alert('发送成功');