123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- <?php
- namespace App\Jobs;
- use Aix\Sms\Contracts\Smser;
- use App\Repositories\SmsBatchRepository;
- use App\Repositories\SmsQueueRepository;
- use App\Repositories\SmsRepository;
- use App\Repositories\SmsTemplateRepository;
- use Illuminate\Bus\Queueable;
- use Illuminate\Queue\SerializesModels;
- use Illuminate\Queue\InteractsWithQueue;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Foundation\Bus\Dispatchable;
- class SmsJob implements ShouldQueue
- {
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
- /**
- * @var array
- */
- protected $callback;
- protected $mobile;
- protected $sms_template_alias;
- protected $params;
- protected $isAuthSms;
- protected $utype;
- protected $sender_id;
- protected $batch_id;
- protected $isVariable;//是否是变量短信
- protected $content;
- /**
- * SmsJob constructor.
- * @param $mobile
- * @param $sms_template_alias
- * @param $params
- * @param $isAuthSms
- */
- public function __construct($mobile, $sms_template_alias, $params, $isAuthSms = false, $isVariable = true, $content = '')
- {
- $this->queue="sms";//指定队列
- $this->mobile = $mobile;
- $this->sms_template_alias = $sms_template_alias;
- $this->params = $params;
- $this->isAuthSms = $isAuthSms;
- $this->utype = 0;
- $this->sender_id = 0;
- $this->batch_id = 0;
- $this->isVariable = $isVariable;
- $this->content = $content;
- }
- /**
- * Execute the job.
- *
- * @param SmsRepository $smsRepository
- * @param SmsTemplateRepository $smsTemplateRepository
- * @param SmsQueueRepository $smsQueueRepository
- * @param SmsBatchRepository $smsBatchRepository
- * @return void
- * @throws \Prettus\Validator\Exceptions\ValidatorException
- */
- public function handle(
- SmsRepository $smsRepository,
- SmsTemplateRepository $smsTemplateRepository,
- SmsQueueRepository $smsQueueRepository,
- SmsBatchRepository $smsBatchRepository
- ) {
- $sms=$smsRepository->getUsefulSms();
- $class="Aix\\Sms\\".$sms['alias'];
- /** @var Smser $smsInstance */
- $smsInstance=new $class($sms->app_key, $sms->secret_key, $sms->signature_key);
- if($sms['alias'] == 'ChuanglanSms'){
- $template = $smsTemplateRepository->getTemplateByCL($this->sms_template_alias, $sms['alias']);
- }else{
- $template=$smsTemplateRepository->getTemplate($this->sms_template_alias, $sms['alias'], $this->params);
- }
- $smsQueue=$smsQueueRepository->createRecord($template, $this->mobile, $this->utype, $this->sender_id, $this->batch_id);
- if (!isset($template->role) || $template->role->status == 0) {
- $smsQueueRepository->saveRecord($smsQueue->id, 3, "短信规则不存在或者短信规则没有开启");
- $smsBatchRepository->updateBatch($this->batch_id, false);
- return;
- }
- try {
- if ($this->isAuthSms) {
- $code = $smsInstance->sendAuthSms($this->mobile, $template);
- } else {
- if($this->isVariable){
- $code = $smsInstance->sendSms($this->mobile, $template, $this->params);
- }else{
- $code = $smsInstance->sendSms($this->mobile, $template, $this->params, false, $this->content);
- }
- }
- $smsQueueRepository->saveRecord($smsQueue->id, 1, $code);
- $smsBatchRepository->updateBatch($this->batch_id);
- } catch (\Exception $e) {
- $smsQueueRepository->saveRecord($smsQueue->id, 3, $e->getMessage());
- $smsBatchRepository->updateBatch($this->batch_id, false);
- //throw $e;
- }
- if (!empty($this->callback)) {
- $obj=app($this->callback[0][0]);
- call_user_func_array([$obj, $this->callback[0][1]], $this->callback[1]);
- }
- }
- /**
- * @param $callback
- */
- public function setCallback($callback): void
- {
- $this->callback = $callback;
- }
- /**
- * 设置发送者
- * @param $utype: 0系统,1企业,2用户
- * @param $id: 对应 utype id
- */
- public function setSender($utype, $id)
- {
- $this->utype=$utype;
- $this->sender_id=$id;
- }
- /**
- * @param mixed $batch_id
- */
- public function setBatchId($batch_id): void
- {
- $this->batch_id = $batch_id;
- }
- }
|