| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- <?php
 
- namespace App\Jobs;
 
- use App\Models\Company;
 
- use App\Models\Member;
 
- use App\Models\SmsBatch;
 
- use App\Models\SmsRule;
 
- use App\Validators\Rules\MobileRule;
 
- use Illuminate\Bus\Queueable;
 
- use Illuminate\Queue\SerializesModels;
 
- use Illuminate\Queue\InteractsWithQueue;
 
- use Illuminate\Contracts\Queue\ShouldQueue;
 
- use Illuminate\Foundation\Bus\Dispatchable;
 
- class SmsBatchJob implements ShouldQueue
 
- {
 
-     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
-     /**
 
-      * @var SmsBatch
 
-      */
 
-     private $smsBatch;
 
-     /**
 
-      * Create a new job instance.
 
-      *
 
-      * @param SmsBatch $smsBatch
 
-      */
 
-     public function __construct(SmsBatch $smsBatch)
 
-     {
 
-         $this->smsBatch = $smsBatch;
 
-     }
 
-     /**
 
-      * Execute the job.
 
-      *
 
-      * @return void
 
-      */
 
-     public function handle()
 
-     {
 
-         $status = $this->getRuleStatus($this->smsBatch->template->alias);
 
-         if ($status) {
 
-             if ($this->smsBatch->mobiles) {
 
-                 $mobiles=explode(",", $this->smsBatch->mobiles);
 
-                 foreach ($mobiles as $mobile) {
 
-                     if (validator_check($mobile, new MobileRule())) {
 
-                         $this->dispatchSms($mobile);
 
-                         $this->smsBatch->target_num++;
 
-                     }
 
-                     $this->smsBatch->save();
 
-                 }
 
-             } else {
 
-                 $mobiles=$this->getMobiles($this->smsBatch->accept_member, $this->smsBatch->accept_type, $this->smsBatch->accept_time);
 
-                 if (!empty($mobiles)) {
 
-                     foreach ($mobiles as $mobile) {
 
-                         if (validator_check($mobile, new MobileRule())) {
 
-                             $this->dispatchSms($mobile);
 
-                             $this->smsBatch->target_num++;
 
-                         }
 
-                         $this->smsBatch->save();
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         if ($this->smsBatch->target_num == 0) {
 
-             $this->smsBatch->status=1;
 
-             $this->smsBatch->save();
 
-         }
 
-     }
 
-     protected function getMobiles($accept_member, $accept_type, $accetp_time)
 
-     {
 
-         $where=[];
 
-         if ($accept_type) {
 
-             $where[]=[$accept_type>2?"mobile_audit":"email_audit",$accept_type%2];
 
-         }
 
-         if ($accetp_time) {
 
-             $where[]=["last_login_time",'<',time()-($accetp_time==1?7:30)*24*60*60];
 
-         }
 
-         $memberMobiles=Member::where($where)->pluck('mobile');
 
-         $companyMobiles=Company::where($where)->pluck('mobile');
 
-         if ($accept_member == 0) {
 
-             return $memberMobiles->concat($companyMobiles);
 
-         } else {
 
-             return $accept_member==1?$companyMobiles:$memberMobiles;
 
-         }
 
-     }
 
-     protected function dispatchSms($mobile)
 
-     {
 
-         $smsJob=new SmsJob($mobile, $this->smsBatch->template->alias, []);
 
-         $smsJob->setBatchId($this->smsBatch->id);
 
-         dispatch($smsJob);
 
-     }
 
-     protected function getRuleStatus($alias)
 
-     {
 
-         $result = SmsRule::where(['alias'=>$alias])->first();
 
-         if ($result) {
 
-             if ($result->status) {
 
-                 return true;
 
-             }
 
-             return false;
 
-         } else {
 
-             return false;
 
-         }
 
-     }
 
- }
 
 
  |