Есть несколько пользователей. Они могут выполнять заказы. Заказы могут быть отправлены для всех пользователей.
Когда пользователь получает заказ, он может принять или отклонить его в течение 1 минуты.
Если пользователь принимает заказ, я сохраняю информацию в MySQL.
id | order_id | user_id | timestamp
1 1 1 12345679
2 1 2 59589333
Когда осталась одна минута, никто не может принять заказ.
После этого моя служба обрабатывает все сохраненные данные и вычисляет, кто первым принял заказ.
Проблема в том, что пользователь может принять заказ быстрее, чем другой, но из-за rnet связи или даты по другим причинам будет искажено.
Есть два способа:
Один (рассчитать время на стороне клиента в момент принятия):
- Пользователь принимает заказ
- Получить текущую метку времени
- Отправить текущую метку времени на сервер
- Сохранить текущую метку времени в Db
Секунда (вычислить время на сервере в момент сохранения данных в Db)
- Пользователь принимает заказ
- Отправить данные на сервер
- Получить текущую метку времени
- Сохранить текущую метку времени в Db
Итак , это не гарантирует сортировку пользователей по созданной метке времени. И я не могу назначить заказ первого пользователя, потому что не уверен во времени.