作者 zhl

u login sms

... ... @@ -9,9 +9,11 @@ use App\Models\AyrShare\AyrRelease as AyrReleaseModel;
use App\Models\AyrShare\AyrShare as AyrShareModel;
use App\Models\Project\Project;
use App\Models\Project\Project as ProjectModel;
use App\Models\SmsLog;
use App\Models\User\ProjectMenu as ProjectMenuModel;
use App\Models\User\ProjectRole as ProjectRoleModel;
use App\Models\User\User as UserModel;
use App\Models\User\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
... ... @@ -176,4 +178,38 @@ class ComController extends BaseController
return $this->error;
}
/**
* 发送登录短信
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function sendLoginSms(Request $request)
{
$this->request->validate([
'mobile'=>['required', 'regex:/^1[3-9]\d{9}$/'],
],[
'mobile.required' => '手机号码不能为空',
'mobile.regex' => '请输入正确的手机号码',
]);
$mobile = $request->input('mobile');
$user = User::where(['mobile' => $mobile])->first();
if (empty($user))
return $this->response('请输入正确的手机号码!', Code::USER_LOGIN_ERROE);
$last_sms = SmsLog::getLastLog($mobile, SmsLog::TYPE_LOGIN);
if ($last_sms && $last_sms->use = SmsLog::USE_USABLE && time() - strtotime($last_sms->created_at) < 60)
return $this->response('请不要重复发送短信!', Code::USER_LOGIN_ERROE);
$template = config('alisms.login_sms_temp');
$code['code'] = rand(100000,999999);
$ali_sms = new AliSms();
$send = $ali_sms->sendSms(strval($mobile), $template, $code);
if (empty($send->Code) && $send->Code != 'OK')
return $this->response('发送失败, 请稍后重试!', Code::USER_LOGIN_ERROE);
SmsLog::createLog($mobile, $code['code'], SmsLog::TYPE_LOGIN);
return $this->response('success', Code::SUCCESS);
}
}
... ...
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2023/6/3
* Time: 17:42
*/
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class SmsLog extends Model
{
//设置关联表名
protected $table = 'gl_sms_log';
const TYPE_REGISTER = 'register';
const TYPE_LOGIN = 'login';
const TYPE_NOTICE = 'notice';
const USE_USABLE = 0;
const USE_DISABLE = 1;
/**
* 创建日志
* @param $mobile
* @param $code
* @param $type
* @param string $content
* @return mixed
*/
public static function createLog($mobile, $code, $type = self::TYPE_LOGIN, $content = '')
{
$created_at = $updated_at = date('Y-m-d H:i:s');
$array = compact('type', 'mobile', 'code', 'content', 'updated_at', 'created_at');
return self::insert($array);
}
/**
* 查询最后一条日志
* @param $mobile
* @param $type
* @return mixed
*/
public static function getLastLog($mobile, $type)
{
return self::where(compact('type', 'mobile'))->orderBy('id', 'desc')->first();
}
}
\ No newline at end of file
... ...
... ... @@ -15,7 +15,8 @@
"laravel/sanctum": "^2.11",
"laravel/tinker": "^2.5",
"mongodb/mongodb": "^1.6",
"phpoffice/phpspreadsheet": "^1.28"
"phpoffice/phpspreadsheet": "^1.28",
"mrgoon/aliyun-sms": "^2.0"
},
"require-dev": {
"facade/ignition": "^2.5",
... ...
<?php
/**
* Created by PhpStorm.
* User: zhl
* Date: 2023/6/3
* Time: 17:39
*/
return [
'access_key' => env('ALIYUN_SMS_AK'), // accessKey
'access_secret' => env('ALIYUN_SMS_AS'), // accessSecret
'sign_name' => env('ALIYUN_SMS_SIGN_NAME'), // 签名
// login
'login_sms_temp' => 'SMS_272545773',
// 注册
'register_sms_temp' => 'SMS_272430790',
];
\ No newline at end of file
... ...