105 lines
3.1 KiB
PHP
105 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Http\Response\ResponseJson;
|
|
use App\Mail\AppointmentMember;
|
|
use App\Models\EmailMessage;
|
|
use App\Models\ErrorLog;
|
|
use App\Models\Message;
|
|
use App\Utils\Str;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Queue\SerializesModels;
|
|
use Illuminate\Queue\InteractsWithQueue;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
|
use App\Mail\ErrorMessage;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use App\Models\ErrorMailUser;
|
|
class SendMail implements ShouldQueue
|
|
{
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
|
use ResponseJson;
|
|
protected $message, $type, $toUser, $trace;
|
|
public $tries = 1;
|
|
/**
|
|
* Create a new job instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct($message, $toUser='', $type='', $trace=null)
|
|
{
|
|
$this->message = $message;
|
|
$this->type = $type;
|
|
$this->toUser = $toUser;
|
|
$this->trace = $trace;
|
|
}
|
|
|
|
/**
|
|
* Execute the job.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function handle()
|
|
{
|
|
try {
|
|
//验证码
|
|
if ($this->type == 'security_code') {
|
|
$this->sendSecurityCode();
|
|
}elseif ($this->type == 'message') {//密码
|
|
$this->sendMail();
|
|
} else {
|
|
$this->sendErrorMessage();
|
|
}
|
|
} catch (\Exception $e) {
|
|
$this->getError($e);
|
|
}
|
|
|
|
}
|
|
|
|
public function sendErrorMessage()
|
|
{
|
|
$error_log = ErrorLog::create(['message'=>$this->message, 'status'=>0, 'trace'=> $this->trace]);
|
|
$email_arr = ErrorMailUser::where('is_ban', 0)->get();
|
|
foreach ($email_arr as $email) {
|
|
if (!$email->official_openid) continue;
|
|
$data['touser'] = $email->official_openid;
|
|
$data['template_id'] = config('wechat.tpls.error_notice');
|
|
$data['url'] = config('app.url').'/error/message/'.$error_log->id;
|
|
$data['data'] = [
|
|
'first' => '服务器系统报错通知',
|
|
'keyword1' => '接口错误',
|
|
'keyword2' => '福恋',
|
|
'keyword3' => date('Y-m-d H:i:s'),
|
|
'remark' => $this->message,
|
|
];
|
|
SendTemplateMsg::dispatch($data)->onQueue('error_email');
|
|
}
|
|
}
|
|
|
|
|
|
public function sendSecurityCode()
|
|
{
|
|
$code = Str::random(6, 1);
|
|
$content = '绑定预约成员验证码:'.$code.',有效期十分钟,请妥善保管';
|
|
$data = [
|
|
'toUser'=>$this->toUser,
|
|
'text'=>$content,
|
|
];
|
|
Mail::send(new AppointmentMember($data));
|
|
EmailMessage::create(['email'=>$this->toUser, 'message'=>$content, 'code'=>$code, 'confirmed'=>0, 'ip'=>'']);
|
|
}
|
|
|
|
public function sendMail()
|
|
{
|
|
$data = [
|
|
'toUser'=>$this->toUser,
|
|
'text'=>$this->message,
|
|
];
|
|
Mail::send(new AppointmentMember($data));
|
|
EmailMessage::create(['email'=>$this->toUser, 'message'=>$this->message, 'code'=>'', 'confirmed'=>1, 'ip'=>'']);
|
|
}
|
|
|
|
}
|