如何计算谁先接受订单?

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

有一些用户。他们可以执行订单。订单可以为所有用户发送。

当用户收到订单时,他可以在1分钟内接受或拒绝这个订单。

如果用户接受订单,我将信息存储在MySQL中。

id | order_id | user_id | timestamp
1    1          1         12345679
2    1          2         59589333

当剩下1分钟时,没有人可以接受订单。

之后,我的服务处理所有存储的数据,并计算谁先接受订单。

问题是,用户可以比其他人更快地接受订单,但由于网络连接或其他原因,日期会被扭曲。

有两种方法。

一(在客户端计算接受订单的时间)。

  1. 用户接受订单
  2. 获取当前时间戳
  3. 发送当前时间戳到服务器
  4. 在Db中存储当前时间戳

秒(计算服务器上在Db中存储数据的瞬间时间)。

  1. 用户接受订单
  2. 发送数据到服务器
  3. 获取当前时间戳
  4. 在Db中存储当前时间戳

所以,不能保证按创建时间戳对用户进行排序。而且我也不能把顺序先分配给用户,因为我对时间没有信心。

c# mysql algorithm rabbitmq
1个回答
0
投票

网络连接缓慢或其他原因是用户的问题。您只需要关心订单是否能更快地到达您的服务器。你可以用这个来发送订单到你的数据库。

INSERT INTO orders (order_id , user_id, reached_time) VALUES(1, 1, NOW());

然后像这样选择他们。

SELECT id, order_id, user_id FROM orders WHERE reached_time < '2020-01-01 01-00-00' ORDER BY reached_time ASC;

日期'2020-01-01 01-00-00'是截止日期,超过这个日期的订单将不会被选中。

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