Я работаю над онлайн-системой продажи билетов, где пользователи смогут самостоятельно распечатать его билеты и появиться на мероприятии, где они будут отсканированы (штрих-код), и в идеале человек попадет. Моя проблема в том, как создать «код билета», который отвечает следующим требованиям:
- каждый «код билета» должен быть достаточно отличным друг от друга (т.е. не иметь последовательной нумерации)
- в идеале билет будет проверен в центральной БД для предотвращения повторного использования, но НУЖНО иметь возможность работать и в автономном режиме, и в этом случае система должна проверить «действительный» код билета, и что он не был используется в этом вентиле.
- «код билета» должен быть достаточно маленьким, чтобы при необходимости его можно было набрать
- владельцу билета нужен только билет для входа (т.е. без проверки личности)
Диапазон данных очень мал, в течение 4 дней будет проведено всего около 20 мероприятий с около 5000 билетов на событие (около 100 000 различных кодов билетов)
Теперь у меня есть несколько полей, которые не напечатаны в заявке и не известны пользователю, которые я могу использовать для кодирования части «кода заявки», поэтому я могу использовать EventId, OrderId, EventDate и некоторую соль для создания небольшой «хэш» для части кода (идеи?), но я все еще застрял с идентификатором тикета, который является последовательным или GUID (будет слишком длинным)
Так какие-нибудь идеи или указатели о том, как это сделать?