gpt4 book ai didi

php - 将挂单分成两组

转载 作者:行者123 更新时间:2023-11-29 00:56:02 25 4
gpt4 key购买 nike

当客户在网站上提交订单时.. 员工可以在管理后端查看挂起的订单(从 m​​ysql 中提取数据),但我希望将挂起的订单分成两个团队。

示例

我们收到了 21 个挂单。

有11名员工。

团队 1:5 名员工

团队 2:6 名员工

团队 1 可以查看 11 个订单,团队 2 可以查看 10 个

有时我每小时可能会收到 100 个订单 - PHP 应该决定将一半的待处理订单分成两部分(动态地)...

team_id 是否应该设置在订单表上?例如:tbl_orders.team_id = 2 当用户提交订单时? ..但是如果没有足够的员工登录团队 1 或 2 怎么办

最佳答案

你有两种方法。

首先(动态)

首先,您计算所有待处理的数:

SELECT COUNT(*) FROM pending;

然后你向第 1 队展示上半场:

$half = round($count/2);
SELECT * FROM pending ORDER BY id DESC LIMIT $half;

第 2 队获得:

SELECT * FROM pending ORDER BY id DESC LIMIT $half,$half;

如果您有更多的团队,您只需将已安装的团队总数除以 2。

第二个选项(固定)

插入挂起时,您将它们与一个团队相关联。但是您必须向表中添加另一个字段。

假设您有一个字段 team TINYINT(1) UNSIGNED

当放置下一个待定项时,您检查最后插入的团队:

 SELECT team FROM pending ORDER BY id DESC LIMIT 1;

假设您有一个配置,其中存储了您的团队数量:

 $totalTeamsAvailable = 2;

使用您在查询中选择的值:

 $nextTeam = (++$teamFromSql % $TotalTeamsAvailable) + 1;

现在您拥有可以与此待定关联的团队。当然你添加它

 INSERT INTO pending (data,team) VALUES (,$nextTeam);

第二个解决方案可能会遇到竞争条件。 (IE: 2 pending placed placed in nearly same istant may be associated with the same team, but I believe this won't about all up at all)

附录

要计算最近做了某事的团队,您有两种方法:

  • 您需要一个表teams,用于存储员工的最后登录数据。
  • 用数据存储每个团队完成的每个操作(例如团队 1 批准并发送订单待处理 #2)(也许您已经有此表)

此时很容易选择有最近事件的团队数量。
使用表格团队,您只需要执行以下操作:

$teamWithRecentlyActivity = SELECT COUNT(*) FROM teams WHERE lastLogin > (time() - (60*60*24));   
//> This select all teams within 1 day from last login

有了这个数字,您就可以拆分所有需要的待定事项:

$pendingPerTeam = round($totalPendings / $teamWithRecentlyActivity);

并在我的第一个解决方案中使用这个偏移量

关于php - 将挂单分成两组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6087517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com