当客户在网站上提交订单时......员工可以在管理员后端查看挂单(从mysql中提取数据),但我希望挂单分成两个团队。
示例
我们收到了21份挂单。
有11名员工。
第1队:5名员工
第2队:6名员工
第1组可以查看11个订单,第2组可以查看10个
有时我可能每小时收到100个订单 - PHP应该决定将一半挂单拆分成两个团队(动态)...
team_id应该在订单表上设置吗?例如:用户提交订单时tbl_orders.team_id = 2
? ..但如果没有足够的员工登录团队1或2
答案 0 :(得分:1)
你有两种方式。
首先,你要计算所有的颜色:
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等待放置在几乎相同的istant可能与同一个团队相关联,但我相信这根本不会受到伤害)
要计算最近做过某事的团队,你有两种方法:
teams
,您可以在其中存储员工的最后登录数据。此时,可以轻松选择最近活动的团队数量 使用表格团队,您只需要执行:
$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);
在我的第一个解决方案中使用此偏移量