Алгоритм ротации посещаемости в laravel

У меня есть система на laravel, в которой есть некоторые услуги, которые можно купить, клиенты покупают случайным образом в любое время суток, перед выполнением услуги происходит предварительная проверка зарегистрированной информации. В компании есть сотрудники для выполнения этой работы, у каждого пришедшего клиента есть сотрудник, ответственный за проверку его информации. Мне нужно реализовать ротацию услуг, например: Если у меня 3 сотрудника онлайн, то у меня есть [1,2,3], когда клиент покупает, сотрудник 1 проверяет информацию и очередь становится [2,3,1] , теперь следующим клиентом, который купит, будет сопровождающий 2, получающий [3, 1, 2]. .. и так далее. Есть ли у кого-нибудь идеи о том, как я могу это реализовать?? Алгоритм должен работать независимо от размера массива.

Мне нужно, чтобы массив сохранялся при изменении состояний для работы со следующим клиентом. В настоящее время я получаю это случайно с помощью eloquent.

$users = Usuario::where('ativo', 'sim')->inRandomOrder()->get()

Привет ! Можете ли вы поделиться своим реальным кодом?

ZbobModel.php 12.04.2024 16:19

в настоящее время я получаю его случайным образом с помощью красноречивого $users = Usuario::where('ativo', 'sim')->inRandomOrder()->get(); $responsible_id = $users[0]->id; вернуть $responsible_id; Вот почему мне нужен алгоритм: случайным образом некоторые участники проводят больше конференций, чем другие, что в конечном итоге оказывается несправедливым.

Gabriel Fucci 12.04.2024 16:34
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если у вас есть доступ к экземпляру Redis, это может быть очень просто.

Когда сотрудники войдут в систему, добавьте их в очередь с помощью

Redis::rpush('queueName', $employeeId);

Когда клиент покупает, назначьте сотрудника с

$assignedEmployeee = Redis::lpop('queueName');
// also immediately readd them to the back of the queue
Redis::rpush('queueName', $assignedEmployeee);

Когда сотрудник выходит из системы, вам придется отфильтровать список, чтобы удалить идентификатор, или вы можете проверить его во время покупки, чтобы узнать, находится ли этот сотрудник еще в сети, в любом случае это будет хорошей отправной точкой.

Другие вопросы по теме