利用redis创建订单号

该程序订单号有业务类型(飞机票业务是1或者火车票业务是2依次类推)+日期(四位数)+默认数字(100)+六位随机数总共14位的订单号
首先每天第一次都会生成key,并保存订单号,第二次获取订单号,会根据第一次生成的key获取订单号,并且加1,成为第二个订单号并保存,有序性。
@Override
public Long createSerialNumber(String biz,String type) {
   try {
      if (StringUtils.isBlank(biz))
         return null;
      return kvClient.lockForProcess2(
            biz, System.currentTimeMillis() + "",
            PayDistributeLockPrefix.LOCK_ORDER_TIME,
            new DistributeLockProcessor<Long>() {
               @Override
               public Long process()  {
                  String date = DateUtils.DateToString(null,
                        DateStyle.MMDD);
                  String key = type + biz
                        + date;// key
                  String start = biz + date;
                  String v = kvClient.read(key, String.class);
                  String s = null;// value
                  if (null == v) {// 每天第一次生成
                     s = start + "100" + RandomStringUtils.random(6, false, true);
                     kvClient.save(key, s, Integer.MAX_VALUE);
                     return Long.valueOf(s);
                  } else {
                     v = v.substring(
                           v.length() - 7,
                           v.length());
                     Integer returnInt = Integer.valueOf(v);
                     returnInt++;
                     v = start + returnInt;
                     kvClient.save(key, v, Integer.MAX_VALUE);
                     return Long.valueOf(v);
                  }
               }
            });

   } catch (Exception e) {
      LOGGER.info("获取订单编号失败", e);
      Ensure.that(e).isNotNull("09000001");
   }
   return null;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值