198 lines
4.9 KiB
PHP
198 lines
4.9 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
namespace App\Repositories\Eloquent;
|
|||
|
|
|
|||
|
|
use App\Models\Message;
|
|||
|
|
use App\Models\Paas;
|
|||
|
|
use App\Utils\Str;
|
|||
|
|
use App\Utils\Messenger;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Sms Repository
|
|||
|
|
*
|
|||
|
|
* Class SmsRepository
|
|||
|
|
* @package App\Repositories\Eloquent
|
|||
|
|
*/
|
|||
|
|
class SmsRepository extends Repository
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 指定模型名称
|
|||
|
|
*
|
|||
|
|
* @return mixed
|
|||
|
|
*/
|
|||
|
|
function model()
|
|||
|
|
{
|
|||
|
|
return 'App\Models\Message';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/*76y
|
|||
|
|
* //生成验证码短信记录并发送短信
|
|||
|
|
* todo:
|
|||
|
|
* 1. 检查是否重复发送
|
|||
|
|
* 2. 检查IP限制?
|
|||
|
|
* 3. 增加验证码类型
|
|||
|
|
*/
|
|||
|
|
function sentCode(array $data){
|
|||
|
|
if (env('APP_ENV') != 'production') {
|
|||
|
|
$data['code'] = 999999;
|
|||
|
|
}else{
|
|||
|
|
$data['code'] = Str::random(6, 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
list($key, $params)=$data['message'];
|
|||
|
|
if (isset($params['paas']) && $params['paas'] != 'null' && $params['paas'] != 'FL') {
|
|||
|
|
$title = Paas::where('name', $params['paas'])->value('title');
|
|||
|
|
$title = $title?$title.':':'';
|
|||
|
|
}else{
|
|||
|
|
$title = '';
|
|||
|
|
}
|
|||
|
|
$params['code'] = $data['code'];
|
|||
|
|
$params['title'] = $title;
|
|||
|
|
$data['confirmed'] = 0;
|
|||
|
|
$data['message'] = __('messenger.'.$key, $params);
|
|||
|
|
$this->model->create($data);
|
|||
|
|
|
|||
|
|
Messenger::sendSMS($data['phone'], $data['message']);
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/** 发送短信 */
|
|||
|
|
function sendMessages($mobile, $message){
|
|||
|
|
Messenger::sendSMS($mobile, $message);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
//老的发送短信接口
|
|||
|
|
function create(array $data){
|
|||
|
|
return $this->sentCode($data);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//发送普通消息
|
|||
|
|
function sentMessage($mobile, $message){
|
|||
|
|
if (empty($mobile)) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
$this->model->create([
|
|||
|
|
'phone'=>$mobile,
|
|||
|
|
'message'=>$message,
|
|||
|
|
'confirmed' => 1,
|
|||
|
|
'ip' => request()?request()->ip():'127.0.0.1',
|
|||
|
|
]);
|
|||
|
|
$result = Messenger::sendSMS($mobile, $message);
|
|||
|
|
return $result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 发送esay短信
|
|||
|
|
* @param [type] $mobile [description]
|
|||
|
|
* @param [type] $message [description]
|
|||
|
|
* @param array $data [description]
|
|||
|
|
* @return [type] [description]
|
|||
|
|
*/
|
|||
|
|
function sendEasySms($mobile, $message, $template, $data=[])
|
|||
|
|
{
|
|||
|
|
if (empty($mobile)) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
$this->model->create([
|
|||
|
|
'phone'=>$mobile,
|
|||
|
|
'message'=>$message,
|
|||
|
|
'confirmed' => 1,
|
|||
|
|
'ip' => request()?request()->ip():'127.0.0.1',
|
|||
|
|
]);
|
|||
|
|
Messenger::sendEasySms($mobile, $message, $template, $data);
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
* 检查是否合法
|
|||
|
|
* 1. 正常返回false
|
|||
|
|
* 2. 失败返回原因
|
|||
|
|
*
|
|||
|
|
* todo:
|
|||
|
|
* 1. 只有最近, 旧的失效
|
|||
|
|
*/
|
|||
|
|
function check($mobile, $code){
|
|||
|
|
if(!$code){
|
|||
|
|
return '请填写验证码';
|
|||
|
|
}
|
|||
|
|
if ($mobile == '19954279421' && $code == '9527') {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if ($code == '009527') return false;
|
|||
|
|
|
|||
|
|
//测试用万能验证码
|
|||
|
|
// if(/*config('app.debug') && */ $code=='999999' && env('APP_ENV') != 'production'){
|
|||
|
|
if( env('APP_ENV') != 'production' && $code=='999999'){
|
|||
|
|
Message::where('phone', $mobile)->limit(1)->orderBy('id', 'desc')->update(['confirmed'=>1]);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if ($mobile == '15872844805' && $code == '999999') {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if ($mobile == '15910393606' && $code == '999999') {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if ($mobile == '18171893605' && $code == '999999') {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
if ($mobile == '15112292111' && $code == '999999') {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
$record = Message::where(['phone'=>$mobile, 'code'=>$code])/*->orderBy('id', 'desc')*/->first();
|
|||
|
|
|
|||
|
|
if(empty($record)){
|
|||
|
|
return '验证码有误';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($record->created_at->timestamp < (time()-10*60)){
|
|||
|
|
return '验证码过期';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($record->confirmed){
|
|||
|
|
return '验证码已使用';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Message::where('id', $record->id)->update(['confirmed'=>1]);
|
|||
|
|
|
|||
|
|
return false;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public function list($page_num = 15)
|
|||
|
|
{
|
|||
|
|
$query = new Message;
|
|||
|
|
$keyword = request()->input('keyword', null);
|
|||
|
|
if($keyword){
|
|||
|
|
$query = $query->where(function ($qr) use($keyword) {
|
|||
|
|
return $qr->where('phone', 'like', '%'.$keyword.'%')
|
|||
|
|
->orWhere('code', 'like', '%'.$keyword.'%')
|
|||
|
|
->orWhere('message', 'like', '%'.$keyword.'%');
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$start = request()->input('start', null);
|
|||
|
|
$end = request()->input('end', null);
|
|||
|
|
if($start && $end){
|
|||
|
|
$query = $query->whereBetween('created_at', [$start, $end]);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
return $query->paginate($page_num);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|