根據redis自增生成全局唯一訂單id


package com.example.springbootshardingjdbc.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class MyUtil {
    public static String currentDateTime(){
        LocalDateTime localDateTime=LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
        String now = dateTimeFormatter.format(localDateTime);
        return now;
    }

    /**
     * 根據自增id生成唯一訂單號
     * @param incrKey 自增id
     * @return
     */
    public static String renderOrderId(Long incrKey){
        /**
         * 日期+00001 后邊是5位數 補零
         */
        String orderId = currentDateTime() + String.format("%1$05d", incrKey);
        return orderId;
    }

    public static void main(String[] args) {
        String result = renderOrderId(2L);
        System.out.println(result);
    }

}



調用:

可根據項目實際情況確定訂單號的位數,一般日期到秒足以支撐絕大部分系統

   @RequestMapping("/generateOrderId")
    public Object generateOrderId(String userName){
        Long result = redisTemplate.opsForValue().increment(userName);
        String orderId = MyUtil.renderOrderId(result);
        System.out.println(userName+":"+orderId);
        return orderId;
    }


結果:
lisi:2020022416433100214
lisi:2020022416433100215
lisi:2020022416433100216
lisi:2020022416433100217
lisi:2020022416433100218
lisi:2020022416433200219
lisi:2020022416433200220
lisi:2020022416433200221
lisi:2020022416433200222
lisi:2020022416433200223
lisi:2020022416433200224
lisi:2020022416433300225
lisi:2020022416433300226
lisi:2020022416433300227
lisi:2020022416433300228
lisi:2020022416433300229
lisi:2020022416433300230
lisi:2020022416433400231
lisi:2020022416433400232
lisi:2020022416433400233
lisi:2020022416433400234
lisi:2020022416433400235
lisi:2020022416433400236
wangwu:2020022416435300001
wangwu:2020022416435400002
wangwu:2020022416435500003
wangwu:2020022416435500004
wangwu:2020022416435500005
wangwu:2020022416435500006
wangwu:2020022416435500007
wangwu:2020022416435500008
wangwu:2020022416435600009
wangwu:2020022416435600010

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM