<?php
namespace App\Events\Admin;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class AdminLoginEvent {
use Dispatchable, InteractsWithSockets, SerializesModels;
public $adminId;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($adminId = 0) {
$this->adminId = $adminId;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn() {
return new PrivateChannel('channel-name');
}
}
3、定义监听器
<?php
namespace App\Listeners\Admin;
use App\Events\Admin\AdminLoginEvent;
class AdminLoginListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param AdminLoginEvent $event
* @return Bool
*/
public function handle(AdminLoginEvent $event)
{
$adminId = $event->adminId;
if (!$adminId){
return false;
}
// todo 更新管理员的最后登录时间、IP以及累计登录次数
return true;
}
}
4、触发事件
<?php
namespace App\OpenApi\Controllers\API\Test;
use App\Events\Admin\AdminLoginEvent;
use App\OpenApi\Controllers\BaseController;
use Illuminate\Http\Request;
class TestController extends BaseController {
public function index(Request $request) {
event(new AdminLoginEvent($request->adminId));
}
}