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






Если у вас есть доступ к экземпляру Redis, это может быть очень просто.
Когда сотрудники войдут в систему, добавьте их в очередь с помощью
Redis::rpush('queueName', $employeeId);
Когда клиент покупает, назначьте сотрудника с
$assignedEmployeee = Redis::lpop('queueName');
// also immediately readd them to the back of the queue
Redis::rpush('queueName', $assignedEmployeee);
Когда сотрудник выходит из системы, вам придется отфильтровать список, чтобы удалить идентификатор, или вы можете проверить его во время покупки, чтобы узнать, находится ли этот сотрудник еще в сети, в любом случае это будет хорошей отправной точкой.
Привет ! Можете ли вы поделиться своим реальным кодом?