利用redis生成订单号
利用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生成订单号相关推荐
- redis生成订单号案例
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.redis的相关工具类 二.生成订单号相关方法 前言 项目开发中遇到了对订单号的修改,这里只是实现了利用redis ...
- redis 生成订单号学习
题目是生成明天的订单号,删除昨天的订单号,在redis操作,订单号暂定规则为年月日接五位数.如2018102200001 当一个订单生成的时候, 去redis去取订单号,去玩后删掉.这个取和删除操作是 ...
- Redis生成订单号
基于SSM+Maven单号生成器: 订单号:业务类型+yyyyMMddHHmmss+ 6位流水号. 业务类型为任意2个英文字母,HHmmss为redis服务器的时间,6位流水号从1开始自增. KEY1 ...
- 利用redis创建订单号
该程序订单号有业务类型(飞机票业务是1或者火车票业务是2依次类推)+日期(四位数)+默认数字(100)+六位随机数总共14位的订单号 首先每天第一次都会生成key,并保存订单号,第二次获取订单号,会根 ...
- 使用redis 加锁的方式生成订单号
建一个订单对象 /*** 订单号 对象*/ @Data public class OrderNumberVo implements Serializable {/*** 日期字符串 格式:" ...
- php如何生成订单号,php如何生成不重复订单号
php生成不重复订单号的方法:首先可以预先生成订单号:然后进行去重存起来:最后用的时候取一个出来用就行,代码为[$orderNo = date('YmdHis').substr(microtime() ...
- php根据当天日期生成编号,前台js根据当前时间生成订单号
*********前台显示框**************** **************js代码***************** function GetDateNow() { var vNow ...
- java 订单号 交易锁_(精)订单加锁及生成订单号
今天看了黎活明老师的 实现订单加锁解锁(也包括生成订单号)功能 的视频,即多人操作(审核等)订单时的如何加锁. 对事务并发又温习了一下.涉及的东西无非是操作系统的多线程引起的并发,这里有个概念就是cp ...
- python生成订单号或生成任意序列
python生成订单号或生成任意序列 示例代码: import time# 生成订单号 def get_order_code():# 年月日时分秒+time.time()的后7位order_no = ...
- PHP制作订货,PHP生成订单号的两种方法
在开发项目的时候经常有生成订单号的需求,这里列出两种生成20位订单号的常用方法. 方法一: 以下代码是14位当前时间加6位随机数,如果增减位数,只需修改末尾的数字6即可.<?php Functi ...
最新文章
- ADPRL - 近似动态规划和强化学习 - Note 3 - Stochastic Infinite Horizon Problem
- XenDesktop vDisk更新
- 深入研究display:inline-block在浏览器中的应用
- ubuntu下vi/vim 的基本使用法
- jquery ajax设置头部,jQuery Ajax 设置请求头
- 基于CefGlue的桌面应用开发
- linux将日期和日历信息追加到文件中_Linux任务调度
- sklearn-preprocessing预处理数据的方法
- 数据结构实验之图论七:驴友计划(最新版)
- 在服务器端运行JavaScript文件(二)
- 第二次冲刺站立会议10
- 如何写好科研论文2021秋期末考答案|研究生网课期末考答案|学堂在线|清华大学高飞飞
- 《人性的优点全集》--戴尔·卡耐基
- Linux eclipse clean,小编为你细说eclipse如何clean/clean up重新编译项目
- win10无法启动修复服务器,win10 bcd损坏无法开机怎样修复_win10系统bcd损坏开机进不了系统解决方法...
- CentOS8桌面图标不显示
- 喵的Unity游戏开发之路 - 推球:游戏中的物理
- 考研英语核心词汇辨析(黑魔方系列2007版之一)
- [IOS APP]大唐雷音寺
- 30天自制OS学习笔记 (四)C语言与画面显示的练习