zoukankan      html  css  js  c++  java
  • 生成订单编号:站点编号前三位 + [5,12]位自增编号

        /**
         * 生成订单编号:站点编号前三位 + [5,12]位自增编号
         * 
         * @param siteCode
         * @return
         * @author jqlin
         */
        private String getOrderNo(String siteCode) {
            String result = siteCode.length() <= 3 ? siteCode : siteCode.substring(0, 3);
            result = result.toUpperCase();
            try {
                String orderNoIncr = "orderNoIncr";
                if(!RedisUtil.exists(orderNoIncr)) {
                    RedisUtil.set(orderNoIncr, "0");
                }
                
                //根据redis生成自增ID
                Long seq = RedisUtil.incr(orderNoIncr);
                if(seq == null || seq == 0L) {
                    //根据mysql生成自增ID
                    seq = (Long)idDao.save(new IdModel());
                    result = result + "DB" + Util.getSequence(seq);
                } else {
                    result = result + Util.getSequence(seq);
                }
            } catch (Exception e) {
                //根据内存生成自增ID
                result = result + "MM" + String.valueOf(Math.abs(UUID.randomUUID().getMostSignificantBits())).substring(0, 8);
            }
             
            return result;
            
        }
        /**
         * 自增编号范围在[10000,999999999999],不足补0
         * 
         * @param seq
         * @return
         * @author jqlin
         */
        public static String getSequence(long seq) {
            long defaultLength = 9999L;
            long maxLength = 999999999999L;
            
            if(seq >= maxLength) {
                return String.valueOf(maxLength);
            }
            
            if(seq > defaultLength) {
                return String.valueOf(seq);
            }
              
            int len = 5 - String.valueOf(seq).length();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < len; i++) {
                sb.append('0');
            }
            sb.append(seq);
            return sb.toString();
        }

    Spring-boot+分布式下高性能全局对象唯一ID生成器代码+实例演示

  • 相关阅读:
    HDU 1114 Piggy-Bank
    HDU 2955 Robberies
    NTOJ 290 动物统计(加强版)
    POJ 3624 Charm Bracelet
    HDU 2602 Bone Collector
    POJ 1523 SPF(无向图割顶)
    HDU 5311 Hidden String
    HDU 1421 搬寝室
    HDU 1058 Humble Numbers
    POJ 3259 Wormholes(spfa判负环)
  • 原文地址:https://www.cnblogs.com/linjiqin/p/9520527.html
Copyright © 2011-2022 走看看