登录
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace app\queue\redis;
|
||||
|
||||
use app\common\model\UserSystems;
|
||||
use Webman\RedisQueue\Consumer;
|
||||
|
||||
class WsMsg implements Consumer
|
||||
{
|
||||
// 要消费的队列名
|
||||
public $queue = 'ws-msg';
|
||||
|
||||
// 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
|
||||
public $connection = 'default';
|
||||
|
||||
// 消费
|
||||
public function consume($data)
|
||||
{
|
||||
try {
|
||||
$ly = [
|
||||
1 => 186,
|
||||
3 => 226,
|
||||
];
|
||||
|
||||
if (isset($data['is_first']) && $data['is_first'] === true) {
|
||||
$num = (new \app\common\utils\approval\service\ApprovalFlowService())->getInitTodoCount($data['user_id']);
|
||||
} else {
|
||||
$num = $data['num'];
|
||||
}
|
||||
|
||||
if ($data['event'] === 'approval.todo.counts') {
|
||||
$systemIds = UserSystems::where('user_id', $data['user_id'])->pluck('system_id')->toArray();
|
||||
if (count($systemIds) > 0) {
|
||||
foreach ($systemIds as $systemId) {
|
||||
if (isset($ly[$systemId])) {
|
||||
$chain = \app\common\service\MenuBadgeService::buildBadgeChain(menuId: $ly[$systemId], leafCount: $num);
|
||||
(new \app\common\utils\WsEvents())->pushWebsocket('approval.todo.counts', $data['user_id'], $chain);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
dpr($th);
|
||||
throw $th;
|
||||
}
|
||||
}
|
||||
|
||||
// 消费失败回调
|
||||
/*
|
||||
$package = [
|
||||
'id' => 1357277951, // 消息ID
|
||||
'time' => 1709170510, // 消息时间
|
||||
'delay' => 0, // 延迟时间
|
||||
'attempts' => 2, // 消费次数
|
||||
'queue' => 'send-mail', // 队列名
|
||||
'data' => ['to' => 'tom@gmail.com', 'content' => 'hello'], // 消息内容
|
||||
'max_attempts' => 5, // 最大重试次数
|
||||
'error' => '错误信息' // 错误信息
|
||||
]
|
||||
*/
|
||||
public function onConsumeFailure(\Throwable $e, $package)
|
||||
{
|
||||
echo "consume failure\n";
|
||||
echo $e->getMessage() . "\n";
|
||||
// 无需反序列化
|
||||
var_export($package);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user