欢迎投稿

今日深度:

利用redis创建订单号,redis创建订单号

利用redis创建订单号,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;
}

www.htsjk.Com true http://www.htsjk.com/redis/36365.html NewsArticle 利用redis创建订单号,redis创建订单号 该程序订单号有业务类型(飞机票业务是1或者火车票业务是2依次类推)+日期(四位数)+默认数字( 100 )+六位随机数总共14位的订单号 首先每天第一次...
相关文章
    暂无相关文章
评论暂时关闭