JAVA生成订单编号工具类
JAVA根据时间戳和随机数方式生成订单编号工具类
OrderUtils.java
package com.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; /** * * 订单编码码生成器,生成32位数字编码, * * @生成规则 1位单号类型+17位时间戳+14位(用户id加密&随机数) */ public class OrderUtils { /** * 订单类别头 */ private static final String ORDER_CODE = ""; /** * 退货类别头 */ private static final String RETURN_ORDER = ""; /** * 退款类别头 */ private static final String REFUND_ORDER = ""; /** * 随即编码 */ private static final int[] r = new int[]{7, 9, 6, 2, 8, 1, 3, 0, 5, 4}; /** * 用户id和随机数总长度 */ private static final int maxLength = 14; /** * 根据id进行加密+加随机数组成固定长度编码 */ private static String toCode(Integer userId) { String idStr = userId.toString(); StringBuilder idsbs = new StringBuilder(); for (int i = idStr.length() - 1; i >= 0; i--) { idsbs.append(r[idStr.charAt(i) - '0']); } return idsbs.append(getRandom(maxLength - idStr.length())).toString(); } /** * 生成时间戳 */ private static String getDateTime() { DateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); return sdf.format(new Date()); } /** * 生成固定长度随机码 * * @param n 长度 */ private static long getRandom(long n) { long min = 1, max = 9; for (int i = 1; i < n; i++) { min *= 10; max *= 10; } long rangeLong = (((long) (new Random().nextDouble() * (max - min)))) + min; return rangeLong; } /** * 生成不带类别标头的编码 * * @param userId */ private static synchronized String getCode(Integer userId) { userId = userId == null ? 10000 : userId; return getDateTime() + toCode(userId); } /** * 生成订单单号编码(调用方法) * @param userId 网站中该用户唯一ID 防止重复 */ public static String getOrderCode(Integer userId) { return ORDER_CODE + getCode(userId); } /** * 生成退货单号编码(调用方法) * @param userId 网站中该用户唯一ID 防止重复 */ public static String getReturnCode(Integer userId) { return RETURN_ORDER + getCode(userId); } /** * 生成退款单号编码(调用方法) * @param userId 网站中该用户唯一ID 防止重复 */ public static String getRefundCode(Integer userId) { return REFUND_ORDER + getCode(userId); } }
-----------------------有任何问题可以在评论区评论,也可以私信我,我看到的话会进行回复,欢迎大家指教------------------------
(蓝奏云官网有些地址失效了,需要把请求地址lanzous改成lanzoux才可以)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了