利用redis生成订单号

订单号一般都是生成18位数的,订单号由8为日期、2位平台号、2为支付方式和6为以上的自增id组成。这里的redis主要担任6为自增id的生成。

源码:https://github.com/gl-stars/small-study-case/blob/master/nm-demo/classicsCase-demo/src/main/java/com/classics/controller/OrderGenerateController.java

  • 引入redis依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • 生成订单逻辑
package com.classics.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.text.SimpleDateFormat;
import java.util.Date;/*** 订单单号生成* @author: stars* @data: 2020年 12月 31日 14:54**/
@RestController
@RequestMapping("/order")
public class OrderGenerateController {@Autowiredprivate RedisTemplate redisTemplate ;private String REDIS_DATABASE = "stars";private String REDIS_KEY_ORDER_ID = "order_id" ;/*** 生成18位订单编号:8位日期+2位平台号码+2位支付方式+6位以上自增id* @return 订单号:202012310202000006*/@GetMappingpublic String generateOrderSn() {StringBuilder sb = new StringBuilder();String date = new SimpleDateFormat("yyyyMMdd").format(new Date());// 拼接key值String key = REDIS_DATABASE+":"+ REDIS_KEY_ORDER_ID + date;Long increment = incr(key, 1);sb.append(date);// (动态匹配)添加两个平台号码,这个表示下单路径,例如:0->PC订单;1->APP订单;2->Applets(小程序订单)sb.append(String.format("%02d", 2));// (动态匹配)支付方式 1:支付宝,2:微信,3:空气支付sb.append(String.format("%02d",2));String incrementStr = increment.toString();if (incrementStr.length() <= 6) {sb.append(String.format("%06d", increment));} else {sb.append(incrementStr);}return sb.toString();}/**** 按delta递增* @param key* @param delta* @return*/public Long incr(String key, long delta) {return redisTemplate.opsForValue().increment(key, delta);}
}

利用redis生成订单号相关推荐

  1. redis生成订单号案例

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.redis的相关工具类 二.生成订单号相关方法 前言 项目开发中遇到了对订单号的修改,这里只是实现了利用redis ...

  2. redis 生成订单号学习

    题目是生成明天的订单号,删除昨天的订单号,在redis操作,订单号暂定规则为年月日接五位数.如2018102200001 当一个订单生成的时候, 去redis去取订单号,去玩后删掉.这个取和删除操作是 ...

  3. Redis生成订单号

    基于SSM+Maven单号生成器: 订单号:业务类型+yyyyMMddHHmmss+ 6位流水号. 业务类型为任意2个英文字母,HHmmss为redis服务器的时间,6位流水号从1开始自增. KEY1 ...

  4. 利用redis创建订单号

    该程序订单号有业务类型(飞机票业务是1或者火车票业务是2依次类推)+日期(四位数)+默认数字(100)+六位随机数总共14位的订单号 首先每天第一次都会生成key,并保存订单号,第二次获取订单号,会根 ...

  5. 使用redis 加锁的方式生成订单号

    建一个订单对象 /*** 订单号 对象*/ @Data public class OrderNumberVo implements Serializable {/*** 日期字符串 格式:" ...

  6. php如何生成订单号,php如何生成不重复订单号

    php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...

  7. php根据当天日期生成编号,前台js根据当前时间生成订单号

    *********前台显示框**************** **************js代码***************** function GetDateNow() { var vNow ...

  8. java 订单号 交易锁_(精)订单加锁及生成订单号

    今天看了黎活明老师的 实现订单加锁解锁(也包括生成订单号)功能 的视频,即多人操作(审核等)订单时的如何加锁. 对事务并发又温习了一下.涉及的东西无非是操作系统的多线程引起的并发,这里有个概念就是cp ...

  9. python生成订单号或生成任意序列

    python生成订单号或生成任意序列 示例代码: import time# 生成订单号 def get_order_code():# 年月日时分秒+time.time()的后7位order_no = ...

  10. PHP制作订货,PHP生成订单号的两种方法

    在开发项目的时候经常有生成订单号的需求,这里列出两种生成20位订单号的常用方法. 方法一: 以下代码是14位当前时间加6位随机数,如果增减位数,只需修改末尾的数字6即可.<?php Functi ...

最新文章

  1. ADPRL - 近似动态规划和强化学习 - Note 3 - Stochastic Infinite Horizon Problem
  2. XenDesktop vDisk更新
  3. 深入研究display:inline-block在浏览器中的应用
  4. ubuntu下vi/vim 的基本使用法
  5. jquery ajax设置头部,jQuery Ajax 设置请求头
  6. 基于CefGlue的桌面应用开发
  7. linux将日期和日历信息追加到文件中_Linux任务调度
  8. sklearn-preprocessing预处理数据的方法
  9. 数据结构实验之图论七:驴友计划(最新版)
  10. 在服务器端运行JavaScript文件(二)
  11. 第二次冲刺站立会议10
  12. 如何写好科研论文2021秋期末考答案|研究生网课期末考答案|学堂在线|清华大学高飞飞
  13. 《人性的优点全集》--戴尔·卡耐基
  14. Linux eclipse clean,小编为你细说eclipse如何clean/clean up重新编译项目
  15. win10无法启动修复服务器,win10 bcd损坏无法开机怎样修复_win10系统bcd损坏开机进不了系统解决方法...
  16. CentOS8桌面图标不显示
  17. 喵的Unity游戏开发之路 - 推球:游戏中的物理
  18. 考研英语核心词汇辨析(黑魔方系列2007版之一)
  19. [IOS APP]大唐雷音寺
  20. 30天自制OS学习笔记 (四)C语言与画面显示的练习

热门文章

  1. win10无法访问ubuntu共享文件夹(smbd出错排查)
  2. 国内离线安装 Chrome 扩展程序的方法总结
  3. Hulu推荐:小众又新颖的综艺
  4. wireshark使用Lua解析带有固定头和长度
  5. vue用mand-mobile ui做交易所移动版实战示例
  6. SKU后台管理添加商品
  7. JS async库:parallel, series, waterfall, whilst用法
  8. petalinux-build 报错解决
  9. Python招聘职位大体是两个方向
  10. pdf合并成一个pdf怎么合并