美文网首页
2019-01-16

2019-01-16

作者: 早安丶全世界 | 来源:发表于2019-01-16 14:23 被阅读0次

    利用redis创建自增订单号

    需求:编码+日期+订单号数量 生成订单号

    /**
         * 获取当前日期
         * @return
         */
        public static String getNowDate()  {
            String res;
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            try {
                res = format.format(new Date());
            } catch (Exception e) {
                e.printStackTrace();
                throw new OrganizationServiceException("","时间装换错误");
            }
            return res;
        }
    
    
    /**
         * 获取今天结束时间
         * @return
         */
        public static Date getTodayEndTime() {
            Calendar todayEnd = Calendar.getInstance();
            todayEnd.set(Calendar.HOUR_OF_DAY, 23);
            todayEnd.set(Calendar.MINUTE, 59);
            todayEnd.set(Calendar.SECOND, 59);
            todayEnd.set(Calendar.MILLISECOND, 999);
            return todayEnd.getTime();
        }
    
    /**
         * 获取调整号 格式为 201812050001
         * @return 返回组装好的调整号
         */
        private String getAdjustNo(){
            //获取当前日期
            String code = DateUtil.getNowDate().replace("-","");
            RedisAtomicLong entityIdCounter = new RedisAtomicLong(GOLD_ADJUST_RECORD_KEY, redisTemplate.getConnectionFactory());
            //自增id
            Long increment = entityIdCounter.incrementAndGet();
            //设置过期时间为当天23:59:59:999
            entityIdCounter.expireAt(DateUtil.getTodayEndTime());
    
            if (increment < 10){
                return code + "000" + increment;
            } else if (increment < 100){
                return code + "00" + increment;
            }else if (increment < 1000){
                return code + "0" + increment;
            }else {
                return code + increment;
            }
        }
    

    简单方便实现带日期的自增单号 测试过没有并发问题

    相关文章

      网友评论

          本文标题:2019-01-16

          本文链接:https://www.haomeiwen.com/subject/trlmdqtx.html