作者 zhl

u login sms

@@ -9,9 +9,11 @@ use App\Models\AyrShare\AyrRelease as AyrReleaseModel; @@ -9,9 +9,11 @@ use App\Models\AyrShare\AyrRelease as AyrReleaseModel;
9 use App\Models\AyrShare\AyrShare as AyrShareModel; 9 use App\Models\AyrShare\AyrShare as AyrShareModel;
10 use App\Models\Project\Project; 10 use App\Models\Project\Project;
11 use App\Models\Project\Project as ProjectModel; 11 use App\Models\Project\Project as ProjectModel;
  12 +use App\Models\SmsLog;
12 use App\Models\User\ProjectMenu as ProjectMenuModel; 13 use App\Models\User\ProjectMenu as ProjectMenuModel;
13 use App\Models\User\ProjectRole as ProjectRoleModel; 14 use App\Models\User\ProjectRole as ProjectRoleModel;
14 use App\Models\User\User as UserModel; 15 use App\Models\User\User as UserModel;
  16 +use App\Models\User\User;
15 use Carbon\Carbon; 17 use Carbon\Carbon;
16 use Illuminate\Http\Request; 18 use Illuminate\Http\Request;
17 use Illuminate\Support\Facades\Cache; 19 use Illuminate\Support\Facades\Cache;
@@ -176,4 +178,38 @@ class ComController extends BaseController @@ -176,4 +178,38 @@ class ComController extends BaseController
176 return $this->error; 178 return $this->error;
177 } 179 }
178 180
  181 + /**
  182 + * 发送登录短信
  183 + * @param Request $request
  184 + * @return \Illuminate\Http\JsonResponse
  185 + */
  186 + public function sendLoginSms(Request $request)
  187 + {
  188 + $this->request->validate([
  189 + 'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
  190 + ],[
  191 + 'mobile.required' => '手机号码不能为空',
  192 + 'mobile.regex' => '请输入正确的手机号码',
  193 + ]);
  194 +
  195 + $mobile = $request->input('mobile');
  196 + $user = User::where(['mobile' => $mobile])->first();
  197 + if (empty($user))
  198 + return $this->response('请输入正确的手机号码!', Code::USER_LOGIN_ERROE);
  199 +
  200 + $last_sms = SmsLog::getLastLog($mobile, SmsLog::TYPE_LOGIN);
  201 + if ($last_sms && $last_sms->use = SmsLog::USE_USABLE && time() - strtotime($last_sms->created_at) < 60)
  202 + return $this->response('请不要重复发送短信!', Code::USER_LOGIN_ERROE);
  203 +
  204 + $template = config('alisms.login_sms_temp');
  205 + $code['code'] = rand(100000,999999);
  206 + $ali_sms = new AliSms();
  207 + $send = $ali_sms->sendSms(strval($mobile), $template, $code);
  208 + if (empty($send->Code) && $send->Code != 'OK')
  209 + return $this->response('发送失败, 请稍后重试!', Code::USER_LOGIN_ERROE);
  210 +
  211 + SmsLog::createLog($mobile, $code['code'], SmsLog::TYPE_LOGIN);
  212 + return $this->response('success', Code::SUCCESS);
  213 + }
  214 +
179 } 215 }
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: zhl
  5 + * Date: 2023/6/3
  6 + * Time: 17:42
  7 + */
  8 +namespace App\Models;
  9 +
  10 +use Illuminate\Database\Eloquent\Model;
  11 +
  12 +class SmsLog extends Model
  13 +{
  14 + //设置关联表名
  15 + protected $table = 'gl_sms_log';
  16 +
  17 + const TYPE_REGISTER = 'register';
  18 + const TYPE_LOGIN = 'login';
  19 + const TYPE_NOTICE = 'notice';
  20 +
  21 + const USE_USABLE = 0;
  22 + const USE_DISABLE = 1;
  23 +
  24 + /**
  25 + * 创建日志
  26 + * @param $mobile
  27 + * @param $code
  28 + * @param $type
  29 + * @param string $content
  30 + * @return mixed
  31 + */
  32 + public static function createLog($mobile, $code, $type = self::TYPE_LOGIN, $content = '')
  33 + {
  34 + $created_at = $updated_at = date('Y-m-d H:i:s');
  35 + $array = compact('type', 'mobile', 'code', 'content', 'updated_at', 'created_at');
  36 + return self::insert($array);
  37 + }
  38 +
  39 + /**
  40 + * 查询最后一条日志
  41 + * @param $mobile
  42 + * @param $type
  43 + * @return mixed
  44 + */
  45 + public static function getLastLog($mobile, $type)
  46 + {
  47 + return self::where(compact('type', 'mobile'))->orderBy('id', 'desc')->first();
  48 + }
  49 +}
@@ -15,7 +15,8 @@ @@ -15,7 +15,8 @@
15 "laravel/sanctum": "^2.11", 15 "laravel/sanctum": "^2.11",
16 "laravel/tinker": "^2.5", 16 "laravel/tinker": "^2.5",
17 "mongodb/mongodb": "^1.6", 17 "mongodb/mongodb": "^1.6",
18 - "phpoffice/phpspreadsheet": "^1.28" 18 + "phpoffice/phpspreadsheet": "^1.28",
  19 + "mrgoon/aliyun-sms": "^2.0"
19 }, 20 },
20 "require-dev": { 21 "require-dev": {
21 "facade/ignition": "^2.5", 22 "facade/ignition": "^2.5",
  1 +<?php
  2 +/**
  3 + * Created by PhpStorm.
  4 + * User: zhl
  5 + * Date: 2023/6/3
  6 + * Time: 17:39
  7 + */
  8 +
  9 +return [
  10 + 'access_key' => env('ALIYUN_SMS_AK'), // accessKey
  11 + 'access_secret' => env('ALIYUN_SMS_AS'), // accessSecret
  12 + 'sign_name' => env('ALIYUN_SMS_SIGN_NAME'), // 签名
  13 + // login
  14 + 'login_sms_temp' => 'SMS_272545773',
  15 + // 注册
  16 + 'register_sms_temp' => 'SMS_272430790',
  17 +];