c# - 如何计算谁先接受订单?
问题描述
有一些用户。他们可以执行命令。可以为所有用户发送订单。
当用户收到订单时,他可以在 1 分钟内接受或拒绝订单。
如果用户接受订单,我将信息存储在 MySQL 中。
id | order_id | user_id | timestamp
1 1 1 12345679
2 1 2 59589333
剩下一分钟,没有人可以接受订单。
之后,我的服务会处理所有存储的数据并计算谁先被接受订单。
问题是用户可以更快地接受订单,但是由于互联网连接或其他原因,日期会被扭曲。
有两种方法:
一(在接受时刻计算客户端的时间):
- 用户接受订单
- 获取当前时间戳
- 将当前时间戳发送到服务器
- 将当前时间戳存储在 Db 中
二(在将数据存储在 Db 中的时刻计算服务器上的时间)
- 用户接受订单
- 向服务器发送数据
- 获取当前时间戳
- 将当前时间戳存储在 Db 中
因此,不能保证按创建的时间戳对用户进行排序。而且我不能分配订单第一个用户,因为我对时间没有信心。
解决方案
互联网连接速度慢或其他原因是用户问题。您应该只关心女巫命令更快地到达您的服务器。您可以使用它来将订单发送到您的数据库。
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;
Datetime '2020-01-01 01-00-00' 是截止日期,在此之后的任何订单都不会被选中。
推荐阅读
- javascript - 如何从 JavaScript 获取数据到 Angular2+ 组件?
- python-2.7 - 当我在窗口中的 python2.7 中安装 pip 时出错
- c# - 如何使用 c# 绘制不规则形状的轮廓(边缘)
- r - 散点图/火山图作为 t.test 的输出
- java - Corda Flow 库 -CashIssueFlow 错误 - java.lang.NoClassDefFoundError: net/corda/finance/flows/CashIssueFlow
- spring-boot - Prometheus,如何获取实际的 Java Garbage Collector 内存使用情况?
- python - 使用正则表达式从 pandas 列中提取子字符串
- azure - “在 Azure 中没有为 '/ZipDeployUI' 注册路由
- json - 如何将图像数组从 json 格式解析为 tabelview
- javascript - 如何在javascript中根据当前日期使月份、日期和日期动态化?