1. 程式人生 > >訂單號的唯一性

訂單號的唯一性

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("-", "");

至於其他的,你們有什麼好的方法嗎?歡迎留言