導航:首頁 > 源碼編譯 > js訂單號生成演算法

js訂單號生成演算法

發布時間:2022-07-14 05:29:08

javaScript 中 var s=「訂單號:12345」如何取 到123456

方法很多種,如用split(":"),得到的就是一個以:分割的結果數組

Ⅱ 如何生成訂單號比較好


由於我在工作中遇到這個問題,藉此與大家分享一下各大電子商務網站訂單號的生成方式。



訂單號概念

它是您在購物網站購物後獲得的訂單號,記錄的是購物訂單信息。


作用

在您需要與購物網站進行訂單查詢等操作時,需要給購物網站提供商家訂單號。


幾種下單途徑?

  1. web網站下單
  2. 打電話到呼叫中心(CallCenter)下單
  3. 手機wap下單

如果採用單資料庫來存儲的話,隨著訂單量的增加,單庫的寫壓力增大,造成資料庫伺服器性能下降。一般會採用分庫來緩解資料庫伺服器的壓力。



那麼怎麼來進行分庫呢?



web來源訂單,存入web訂單庫。
CallCenter來源訂單,存入CallCenter訂單庫。
wap來源訂單,存入wap訂單庫。
最終,將這三種類型的資料庫同步到訂單主庫中。



問題來了,怎麼把不同的訂單同步到訂單主庫呢?



電商網站一般利用訂單號來作為訂單表的主鍵。因此,我們必須保證訂單號不重復,才能將訂單安全的同步到訂單主庫中。


訂單命名規定唯一性

這個大家都明白,主要保證訂單號不重復。


安全性

訂單編號不能透露你公司的真實運營信息,比如你的訂單就是流水號的話,那麼別人就可以從訂單號推測出你公司的整體運營概括了。所以訂單編碼必須是除了你們公司少部分人外,其他人基本看不懂的。可以參考京東和淘寶的編碼規則。


不能使用大規模隨機碼

因為大規模的隨機碼隨機生成,因為本身就沒有意義所以無所謂泄密了。但是事實上這種編碼規則在實現上會有很大問題的。隨機碼滿足第二點安全性要求,為了滿足唯一性,那就得在生成隨機碼的時候對比歷史數據是否有重復,如果你的訂單數量到達了十萬次,你每次生成訂單編碼時就得對比十萬條歷史數據。


隨機碼就不能在編碼中使用了嗎?小規模的隨機碼是可以使用的,比如2~3位,這種隨機碼一般都是和流水號等結合使用,主要作用是為了隱藏流水號的真實數據而進行使用的。


防止並發

主要針對編碼中有時間的設定。


控制位數

訂單號的作用就是便於查詢。一般正常使用場景應該是訂單出異狀或者退貨的時候,用戶將訂單號報給客服,由客服進行查詢。所以一般在10~15位為好。目前京東11位,淘寶16位。


怎麼保證訂單號的唯一性訂單號命名規則來生成

比如「業務編碼 + 時間戳 + 機器編號[前4位] + 隨機4位數 + 毫秒數」。



說明:業務編碼(OrderType: Web=1 CallCenter=2 Wap=3) 機器編號(用來表示由那台伺服器生成的訂單)



偽代碼如下:


總結

訂單號的生成方案,需要根據目前的訂單量而定;因為各種方案都有各自的使用場景。

Ⅲ 淘寶的訂單號是怎麼生成和設計的呢知道的來討論下

淘寶的訂單號是自然生成的。只要有客戶下單後就會自動生成一個訂單號。

查看訂單號的方法:

1、首先先打開一個瀏覽器,然後在網路中輸入「淘寶網」,然後點擊「網路一下」按鈕。

Ⅳ 生成訂單號,要求是唯一的,如何實現

guid

Globally Unique Identifier(全球唯一標識符) 也稱作 UUID(Universally Unique IDentifier)

GUID/UUID是通過特定演算法產生的一個二進制長度為128位的數字,

在空間上和時間上具有唯一性,保證同一時間不同地方產生的數字不同,

在公元3400年以前產生的UUID/GUID與任何其他產生過的UUIDs/GUIDs都不相同。

在需要GUID的時候,可以完全由演算法自動生成,不需要一個權威機構來管理。

GUID的長度固定,並且相對而言較短小,非常適合於排序、標識和存儲。

Ⅳ 用JSP如何產生連續的訂單號,NO.00001 NO.00002

使用Java+資料庫實現

由於確定NO.00001裡面有不規則的字母+特殊字元+數字

所有查詢出資料庫中最後一行數據,並獲取編號例如:NO.00099

已知有2個字元一個特殊字元,那麼我們把字元串截取掉,把字元、特殊字元和數字分開

Stringstr="NO.00099";
StringtmpW=str.substring(0,2);//NO.
StringtmpN=str.substring(3,str.length());//00099
intnum=Integer.valueOf(tmpN)+1;
Stringtmp_num=num+"";
for(inti=5-tmp_num.length();i>0;i--){
tmp_num="0"+tmp_num;
}
//最終要的結果NO.00100
Stringresult=tmpW+tmp_num;

查詢最後一個id的語句

selecttop1idfrom表orderbyiddesc

Ⅵ 如何生成一個這種形式的訂單號

DateTime dttime=DateTime.Now;
string str=dttime.Year.ToString()+dttime.Month+dttime.Day;

string sql="select top 1 訂單號 from 訂單表 order by 訂單號 desc";
執行該語句,返回現在資料庫中最近一次生成的訂單號.

然後對其進行操作:(比如最近一次生成訂單號為 str2 )

int ii=Convert.ToInt32(str2.SubString(str2.Lenght-4))+1;
int len=ii.ToString().Length;
string str3="";
switch (len){
case 1:
str3="000"+ii.ToString();
break;
case 2:
str3="00"+ii.ToString();
break;
case 3:
str3="0"+ii.ToString();
break;
}

最後.你當前的訂單號就是:
str+=str3;

---------------------

rebinglunlun - 高級魔法師 六級
願聽其詳~~

Ⅶ 給個絕對不重復的生成訂單號的思路或者邏輯!

多用戶的話,簡單一點的,可以由用戶ID(數字)、時間、隨機數組合生成,因為用戶ID是唯一的,生成的訂單號也就絕對不會重復了。

Ⅷ 怎麼用JS或php實現自動生成單據編號(以10+當天日期的格式)

php:
$number
=
"10".date("Ymd",time());
可以得到10開頭緊接年月日及時間(到秒)如1020120603
$number
=
"10".date("YmdHis",time());
可以得到10開頭緊接年月日及時間(到秒)如1020120603231120
如果怕有重復可以在接一些隨機數
$number
.=
rand(1000,9999);

Ⅸ 如何生成唯一訂單號

首先,訂單號有3個性質:1.唯一性 2.不可推測性 3.效率性

唯一性和不可推測性不用說了,效率性是指不能頻繁的去資料庫查詢以避免重復。
況且滿足這些條件的同時訂單號還要足夠的短。
我在java下定製的訂單號生成方式如下:
int r1=(int)(Math.random()*(10));//產生2個0-9的隨機數
int r2=(int)(Math.random()*(10));
long now = System.currentTimeMillis();//一個13位的時間戳
String paymentID =String.valueOf(r1)+String.valueOf(r2)+String.valueOf(now);// 訂單ID

目前規則來看,兩個人在同一微秒提交訂單重復的概率為1%
訂單效果:251393292999921

望採納!

閱讀全文

與js訂單號生成演算法相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:577
python員工信息登記表 瀏覽:375
高中美術pdf 瀏覽:159
java實現排列 瀏覽:511
javavector的用法 瀏覽:980
osi實現加密的三層 瀏覽:230
大眾寶來原廠中控如何安裝app 瀏覽:912
linux內核根文件系統 瀏覽:241
3d的命令面板不見了 瀏覽:524
武漢理工大學伺服器ip地址 瀏覽:147
亞馬遜雲伺服器登錄 瀏覽:523
安卓手機如何進行文件處理 瀏覽:70
mysql執行系統命令 瀏覽:929
php支持curlhttps 瀏覽:142
新預演算法責任 瀏覽:443
伺服器如何處理5萬人同時在線 瀏覽:249
哈夫曼編碼數據壓縮 瀏覽:424
鎖定伺服器是什麼意思 瀏覽:383
場景檢測演算法 瀏覽:616
解壓手機軟體觸屏 瀏覽:348