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); } } } } } }