訂單號的唯一性
1.使用者編號加大隨機數
public enum OrderNo {
SERVICE("YY"), //預約服務
SELFISH_REPAIR("JJ"), //居家維修
PUBLIC_REPAIR("GG"), //公共維修
COMPLAIN("TS"), //投訴
QUERY("GX"), //公共詢問
PRAISE("BY"), //表揚
SUGGEST("JY"), //建議
ORDER_RECORDS("JL"), //工作記錄
PAYMENT_ENQUIRY("JF"), //繳費
PINGAN("PINGAN"),//平安支付測試
READY_FEE("YJ"); //預交費
private String prefix;
OrderNo(String value) {
this.prefix = value;
}
public String generate() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
long Temp; //不能設定為int,必須設定為long
//產生10000000到20000000的隨機數
Temp=Math.round(Math.random()*10000000+20000000);
return prefix + dateFormat.format(new Date())+Temp;
}
}
//同一批支付的專案交易號一致
String tranIdNo = OrderNo.PAYMENT_ENQUIRY.generate()+userId;
這種訂單號,字首+年月日時分秒+隨機數+使用者Id
可解決訂單重複問題。(隨機數足夠大)
2.就是JAVA類庫中可以使用UUID方法,來生成唯一的數字的一串數字編號,也就是訂單號。然後再加上一些字首什麼的也可以作為訂單號來用。
String token=UUID.randomUUID().toString().replace("-", "");
至於其他的,你們有什麼好的方法嗎?歡迎留言