将待处理订单拆分为两个团队

时间:2011-05-22 11:10:15

标签: php mysql database e-commerce

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

示例

我们收到了21份挂单。

有11名员工。

第1队:5名员工

第2队:6名员工

第1组可以查看11个订单,第2组可以查看10个

有时我可能每小时收到100个订单 - PHP应该决定将一半挂单拆分成两个团队(动态)...

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

,该怎么办?

1 个答案:

答案 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可能与同一个团队相关联,但我相信这根本不会受到伤害)

Addedum

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

  • 您需要一个表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);

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