订单编号如何实现
背景
- 常见的
订单编号
是带有一些信息的,比如说创建日期
- 例如:本案例中的订单=日期 + 自增编号
- 日期可以使用格式化字符串,自增则可以使用redis来实现
代码实现
redis就有
自增
的方法
- 每天的key都是不一样的,且
过期时间设置为1天
// 生成并获取当天的工单编号private String generateTaskNo(){// 获取当天的日期 20241211String dateStr = DateUtils.getDate().replaceAll("-","");// 使用redis 每日生成递增的数字String key = "dkd.task.code."+dateStr;// 判断当前key是否存在String redisTaskNo ;if (!redisTemplate.hasKey(key)){// 如果不存在,设置初始值为1 过期时间为1天redisTemplate.opsForValue().set(key,1, Duration.ofDays(1));redisTaskNo = "0001";}else {// 如果存在,递增1redisTemplate.opsForValue().increment(key);// 格式化为4位数redisTaskNo = CharSequenceUtil.padPre(redisTemplate.opsForValue().get(key).toString(),4,'0');}return dateStr+redisTaskNo;}