| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- <?php
 
- namespace App\Listeners;
 
- use Illuminate\Auth\Events\Authenticated;
 
- use Illuminate\Bus\Queueable;
 
- use Illuminate\Queue\InteractsWithQueue;
 
- use Illuminate\Contracts\Queue\ShouldQueue;
 
- use Illuminate\Support\Facades\Log;
 
- use App\Services\Common\PmsService;
 
- /**
 
-  * Class SendSysMessage
 
-  * 用户登录后补发系统消息
 
-  * @package App\Listeners
 
-  * Auth Zhong
 
-  * Date 2018/12/24
 
-  */
 
- class SendSysMessage implements ShouldQueue
 
- {
 
-     use InteractsWithQueue,Queueable;
 
-     protected $pmsService;
 
-     /**
 
-      * Create the event listener.
 
-      *
 
-      * @return void
 
-      */
 
-     public function __construct(PmsService $pmsService)
 
-     {
 
-         $this->queue = "sys_message";
 
-         $this->pmsService = $pmsService;
 
-     }
 
-     /**
 
-      * Handle the event.
 
-      *
 
-      * @param  Authenticated  $event
 
-      * @return void
 
-      */
 
-     public function handle(Authenticated $event)
 
-     {
 
-         //Log::info("用户认证成功", $event->user->toArray());
 
-         //获取系统消息表sys_message中
 
-         $user = $event->user;
 
-         if (array_has($user, 'utype')) {
 
-             $user_cratetime = $user->created_at;
 
-             $subsite_id = $user->subsite_id;
 
-             $where = '(user_type = 0 OR user_type = '.$user->utype.') and ((news_type = 1 and created_at >= "'.$user_cratetime.'") or (news_type = 2 and ended_at >= '.strtotime($user_cratetime).'))';
 
-             $new_sys = $this->pmsService->getNewestSysMessage($where, $subsite_id);
 
-             if ($new_sys) {
 
-                 //添加系统站内信/添加弹窗消息(老用户和在显示时间范围内的新用户)
 
-                 $sys_time = strtotime($new_sys->created_at);
 
-                 //获取pms表中最新添加的消息
 
-                 $pms_where = array(
 
-                     'utype'     => $user->utype,
 
-                     'msgtouid'  => $user->id,
 
-                     'msgfromuid'=> 0
 
-                 );
 
-                 $pms = $this->pmsService->getNewestPms($pms_where);
 
-                 $origin_time = 0;
 
-                 $time = 0;
 
-                 $time1 = 0;
 
-                 if ($pms) {
 
-                     $time = strtotime($pms->created_at);
 
-                     $time1 = $pms->created_at;
 
-                     $origin_time = $time1;
 
-                 }
 
-                 if ($time< strtotime($user_cratetime)) {
 
-                     $time = strtotime($user_cratetime);
 
-                     $time1 = $user_cratetime;
 
-                 }
 
-                 if ((($time < $sys_time) && ($new_sys->news_type == 1))|| ($new_sys->news_type == 2) && ($time < $sys_time || $time1<$new_sys->ended_at)) {
 
-                     //获取符合条件的系统消息并添加到pms表中
 
-                     /*$sys_where = array(
 
-                         array('created_at','>', $time1)
 
-                     );
 
-                     $whereIn['user_type'] = [0,$user->utype];
 
-                     $sys_lists = $this->pmsService->getSysMessages($sys_where, $whereIn, $subsite_id);*/
 
-                     $filter_sys = 'user_type in (0,'.$user->utype.') and ((news_type =1 and created_at > "'.$time1.'") or (news_type = 2 and (created_at > "'.$origin_time.'" and ended_at> '.$time.')))';
 
-                     $sys_lists = $this->pmsService->getFilterMessages($filter_sys, $subsite_id);
 
-                     if ($sys_lists->toArray()) {
 
-                         //处理数据
 
-                         $insert_data = array();
 
-                         $time = date('Y-m-d H:i:s', time());
 
-                         foreach ($sys_lists as $key => $val) {
 
-                             $insert_data[$key] = array(
 
-                                 'utype'      => $user->utype,
 
-                                 'msgtype'    => $val->news_type,
 
-                                 'msgfromuid' => 0,
 
-                                 'msgfrom'     => 'admin',
 
-                                 'msgtoname'   => $user->username,
 
-                                 'msgtouid'    => $user->id,
 
-                                 'message'     => $val->content,
 
-                                 'started_at'  => strtotime($val->started_at)>0?strtotime($val->started_at):0,
 
-                                 'ended_at'    => strtotime($val->ended_at)>0?strtotime($val->ended_at):0,
 
-                                 'new'          => 1,
 
-                                 'created_at'  => $val->created_at,
 
-                                 'updated_at'  => date('Y-m-d H:i:s', time())
 
-                             );
 
-                         }
 
-                         $rst = $this->pmsService->addBatchPms($insert_data);
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |