考勤轮换算法

问题描述 投票:0回答:1

我有一个系统,有一些服务可供购买,客户在一天中的任何时间随机购买,在执行服务之前会对注册信息进行预先检查。公司有员工来做这项工作,每个进来的顾客都有一名员工负责检查他们的信息。我需要实现一个服务轮换,例如:如果我有3个员工在线,那么我有[1,2,3],当客户购买时,员工1检查信息,队列变成[2,3,1] ,现在下一个购买的顾客将是服务员 2 得到 [3, 1, 2]。 .. 等等。有人对我如何实现这个有任何想法吗?无论数组大小如何,该算法都需要工作。

我需要数组在不断变化的状态下保持不变,以便在下一个客户端上工作。

php laravel algorithm sorting data-structures
1个回答
0
投票

如果您有权访问 Redis 实例,这可能非常简单。

当员工登录时,将他们添加到队列中

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

当客户购买时,分配员工

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

当员工注销时,您必须过滤列表以删除 ID,或者您可以在购买时检查该员工是否仍然在线,无论哪种方式,这都是一个很好的起点

© www.soinside.com 2019 - 2024. All rights reserved.