Лучший способ генерировать номера заказа для интернет-магазина?

Есть несколько способов сделать это:

  1. Использование & nbsp;

    display: table-cell;
    vertical-align: middle;
    

    и CSS контейнера для

    display: table;
    
  2. Используйте заполнение вместе с медиа-экраном для изменения заполнения относительно размера экрана. Google @media, чтобы узнать больше.

  3. Использовать относительное заполнение

    Т.е., указать заполнение в терминах%

14
задан Tom Lehman 24 July 2009 в 18:44
поделиться

12 ответов

Как клиент я был бы доволен:

year-month-day/short_uid

например:

2009-07-27/KT1E

Это дает место примерно для 33 ^ 4 ~ 1 млн заказов в день.

14
ответ дан 1 December 2019 в 12:53
поделиться

Вот реализация системы, которую я предложил в предыдущем вопросе :

MAGIC = [];
29.downto(0) {|i| MAGIC << 839712541[i]}

def convert(num)
  order = 0
  0.upto(MAGIC.length - 1)  {|i| order = order << 1 | (num[i] ^ MAGIC[i]) }
  order
end

Это всего лишь дешевая хеш-функция, но она усложняет задачу среднему пользователю определить, сколько заказов было обработано, или количество для другого заказа. На нем не кончится место, пока вы не выполните 2 30 приказов, которые вы не исполните в ближайшее время.

Вот результаты convert (x) ] от 1 до 10:

1:  302841629
2:  571277085
3:   34406173
4:  973930269
5:  437059357
6:  705494813
7:  168623901
8:  906821405
9:  369950493
10: 638385949
3
ответ дан 1 December 2019 в 12:53
поделиться

Вместо генерации и сохранения числа вы можете попробовать создать зашифрованную версию это не раскрыло бы количество заказов в системе. Вот статья именно об этом.

2
ответ дан 1 December 2019 в 12:53
поделиться

На моем старом месте это было следующее:

Идентификатор клиента (начинающийся с 1001), последовательность сделанного заказа, затем уникальный идентификатор из таблицы «Заказы». Это дало нам красивое длинное число, по крайней мере, из 6 цифр, и оно было уникальным из-за двух первичных ключей.

Я полагаю, если вы поставите дефисы или пробелы, вы даже сможете немного понять покупательские привычки клиентов. Это не ошеломляюще безопасно, и я предполагаю, что идентификатор заказа можно было бы угадать, но я не уверен, есть ли в этом риск для безопасности.

2
ответ дан 1 December 2019 в 12:53
поделиться

Я бы предпочел ввести номер 347 и получить отличное обслуживание клиентов на небольшом красивом веб-сайте, чем: G-84e38wRD-45OM на мегасайте, и меня игнорируют в течение недели.

Вы не хотели бы использовать его как системный идентификатор или часть ссылки, но как удобный номер он работает.

1
ответ дан 1 December 2019 в 12:53
поделиться

Хорошо, а как насчет этого?

Последовательно, начиная с некоторого числа (2468) и добавляя к нему другое число, скажем, день месяца, в который был размещен заказ.

Число всегда увеличивается (пока вы не превысите емкость целочисленного типа, но к тому времени вам, вероятно, все равно, так как вы добьетесь невероятного успеха и будете потягивать маргариту на каком-нибудь далеком райском острове). Его достаточно просто реализовать, и он достаточно смешивает, чтобы отбросить любые предположения о том, сколько у вас заказов.

0
ответ дан 1 December 2019 в 12:53
поделиться

Последовательно, начиная с 1? Что в этом плохого?

(Примечание: этот ответ был дан до того, как ОП отредактировал вопрос.)

0
ответ дан 1 December 2019 в 12:53
поделиться

Примерно так:

  1. Получить порядковый номер заказа. Или, может быть, временная метка UNIX плюс две или три случайные цифры (когда два заказа размещаются одновременно) тоже подойдет.
  2. Побитовое ИЛИ с некоторым полусекретным значением, чтобы число выглядело «псевдослучайным». . Это примитивно и не остановит тех, кто действительно хочет исследовать, сколько у вас заказов, но для истинной «случайности» вам необходимо сохранить (большую) таблицу перестановок. Или вам потребуется больших случайных чисел, чтобы вас не поразил парадокс дня рождения.
  3. Добавьте контрольную цифру, используя алгоритм Верхоффа (я не уверен, что это будет иметь такие хорошие свойства для base33, но это не должно быть плохо).
  4. Преобразуйте число, например, в base 33 ("0-9A-Z", кроме "O", "
-3
ответ дан 1 December 2019 в 12:53
поделиться

Всего одна идея в стиле Руба Голдберга:

Вы можете создать таблицу со случайным набором чисел, привязанных к случайному периоду времени:

Time Period          Interleaver
next 2 weeks:        442
following 8 days:    142
following 3 weeks:   580

и так далее .. .. Это дает вам неограниченное количество перемежителей и не позволяет никому знать вашу скорость заказов, потому что ваши временные периоды могут составлять порядка дней, а ваш перемежитель выполняет за вас много низкотехнологичных «заторов». 1217] Вы можете создать эту таблицу один раз и просто убедиться, что все перемежители уникальны. Вы можете убедиться, что у вас не закончились перемежители, просто добавив больше символов в набор или начав с определения более длинных перемежителей.

Таким образом, вы генерируете идентификатор заказа, получая последовательный номер и используя сегодняшнее значение перемежителя, чередуя его цифры (отсюда и имя) между цифрами каждого последовательного номера. Гарантированно уникальное - гарантированно запутанное.

Пример :

Today I have a sequential number 1, so I will generate the order ID:  4412
The next order will be 4422
The next order will be 4432
The 10th order will be 41402

In two weeks my interleaver will change to 142, 
The 200th order will be 210402
The 201th order will be 210412

Eight days later, my interleaver changes to 580:
The 292th order will be 259820

Это будет совершенно запутанным, но полностью детерминированным. Вы можете просто удалить все остальные цифры, начиная с единицы. (кроме случаев, когда ваш идентификатор заказа всего на одну цифру длиннее, чем ваш перемежитель)

Я не сказал, что это лучший способ - просто пятничная идея.

0
ответ дан 1 December 2019 в 12:53
поделиться

Это можно сделать как почтовый индекс: 2b2 b2b

Таким образом, у него есть какая-то контрольная сумма (не совсем, но, по крайней мере, вы знаете, что это неправильно, если есть 2 последовательных числа или буквы). Его легко прочитать по телефону, и он не дает представления о том, сколько заказов находится в системе.

0
ответ дан 1 December 2019 в 12:53
поделиться
0
ответ дан 1 December 2019 в 12:53
поделиться

Примерно так:

  1. Получить порядковый номер заказа. Или, может быть, временная метка UNIX плюс две или три случайных цифры (когда два заказа размещаются одновременно) тоже подойдет.
  2. Побитовое ИЛИ с некоторым полусекретным значением, чтобы число выглядело "псевдослучайным" . Это примитивно и не остановит тех, кто действительно хочет выяснить, сколько у вас заказов, но для истинной "случайности" вам нужно вести (большую) таблицу перестановок. Или вам понадобится больших случайных чисел, чтобы вас не поразил парадокс дня рождения.
  3. Добавьте контрольную цифру, используя алгоритм Верхоффа (я не уверен, что это будет иметь такие хорошие свойства для base33, но это не должно быть плохо).
  4. Преобразуйте число, например, в base 33 ("0-9A-Z", кроме "O", "Q" и "L", которое можно спутать с "0" и "1") или что-то в этом роде. Простота произношения означает исключение большего количества букв.
  5. Сгруппируйте результат в некоторый визуально читаемый шаблон, например XXX-XXX-XX, чтобы пользователям не приходилось отслеживать положение пальцами или указателями мыши.
1
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: