redis生产流水号


    /**
     * redis 生成单号
     * 前缀+自定义时间格式+流水号
     *
     * @param prefix     单号前缀
     * @param dateFormat 单号中间自定义时间格式
     * @param hashKey    hashKey
     * @param snLength   流水号长度
     * @return 单号
     */
    public String createOutboundOrderSn(String prefix, String dateFormat, String hashKey, int snLength) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
        SimpleDateFormat keyDateFormat = new SimpleDateFormat(DatePattern.PURE_DATE_PATTERN);
        String format = simpleDateFormat.format(new Date());
        String keyFormat = keyDateFormat.format(new Date());
        prefix += format;
        String redisKey = RedisConstant.REDIS_GENERATE_OUTBOUND_KEY + keyFormat;
        Long sn = redisTemplate.opsForHash().increment(redisKey, hashKey, 1);
        // 设置过期时间为下一天的0时
        LocalDate localDate = LocalDate.now().minusDays(-1);
        Date timout = getDateBeginTime(localDate);
        redisTemplate.expireAt(redisKey, timout);
        StringBuilder fix = new StringBuilder();
        for (int length = snLength; length > 0; length--) {
            fix.append(0);
        }
        fix.append(sn);
        return prefix + fix.substring(sn.toString().length(), fix.length());
    }

    /**
     * 获取localDate日期的开始时间 {@link LocalTime}
     * eg. 2018-06-11 13:31:31 return 2018-06-11 00:00:00
     *
     * @param localDate 当前日期
     * @return 日期
     */
    public static Date getDateBeginTime(LocalDate localDate) {
        LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.MIN);
        ZonedDateTime zonedDateTime = localDateTime.atZone(ZoneId.systemDefault());
        return Date.from(zonedDateTime.toInstant());
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值