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 implements ShouldQueue
- {
- use InteractsWithQueue,Queueable;
- protected $pmsService;
-
- public function __construct(PmsService $pmsService)
- {
- $this->queue = "sys_message";
- $this->pmsService = $pmsService;
- }
-
- public function handle(Authenticated $event)
- {
-
-
- $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_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)) {
-
-
- $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);
- }
- }
- }
- }
- }
- }
|