订单号的唯一性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_23145857/article/details/82967364

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

至于其他的,你们有什么好的方法吗?欢迎留言

猜你喜欢

转载自blog.csdn.net/qq_23145857/article/details/82967364