12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Models;
- use Illuminate\Database\Eloquent\Model;
- use App\Libs\YPSMS;
- class Securecode extends Model
- {
- protected $table = 'securecode';
- public $timestamps = false;
- protected static $tplId = '5883552';# 发送验证码
- public static function sendPhoneVerify($user) {
- $operation='verify';
- $timeout = 180; //验证码3分钟过期
- $phone=$user->mobile;
- $data = self::getLastSms($user->id, $operation);
- $cur_time = time();
- if(!$data || $data->timeout_time < $cur_time) {
- //创建验证码
- $code = mt_rand(1000, 9999);
- self::insertSms($user->id, $operation, $code, $timeout, $phone);
- } else {
- $code = $data->code;
- }
- //验证码是否在60s
- if( $data && ($data->create_time + 60 - $cur_time)>0 ){
- return ['success' => false, 'wait_time' => (60 + $data->create_time - $cur_time)];
- }
- $params = ('#code#').'='.urlencode($code);
- YPSMS::sendMsgWithParams($phone, $params, self::$tplId);
- return ['success' => true, 'wait_time' => 60];
- }
- public static function insertSms($userid, $operation, $code, $timeout, $phone) {
- $cur_time = time();
- $id = self::query()->insertGetId(
- ['user_id' => $userid,
- 'operation' => $operation,
- 'code' => $code,
- 'create_time' => $cur_time,
- 'timeout_time'=> $cur_time + $timeout,
- 'phone' => $phone]
- );
- return $id;
- }
- public static function getLastSms($userid, $operation) {
- $securecode = self::query()->where('user_id', $userid)->where('operation', $operation)->orderBy('id', 'desc')->first();
- return $securecode;
- }
- public static function receivePhoneVerify($phone, $code, $operation='verify') {
- $securecode = self::query()->where('phone', $phone)->where('operation', $operation)->orderBy('id', 'desc')->first();
- if (!$securecode || $securecode->code != $code || $securecode->timeout_time < time()) {
- return false;
- }
- return true;
- }
- }
|