| | |
| | | package com.ruoyi.common.utils; |
| | | |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.Random; |
| | | import java.util.concurrent.atomic.AtomicInteger; |
| | | |
| | | public class RandomUtil { |
| | | /** |
| | | * 字符串池 |
| | | */ |
| | | private static String[] STR_ARR = new String[] { "a", "b", "c", "d", "e", |
| | | private static String[] STR_ARR = new String[]{"a", "b", "c", "d", "e", |
| | | "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", |
| | | "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", |
| | | "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", |
| | | "S", "T", "U", "V", "W", "X", "Y", "Z", "1", "2", "3", "4", "5", |
| | | "6", "7", "8", "9", "0" }; |
| | | "6", "7", "8", "9", "0"}; |
| | | |
| | | /** |
| | | * |
| | | * 根据指定的长度生成的含有大小写字母及数字的字符串 |
| | | * |
| | | * @param length |
| | | * 指定的长度 |
| | | * @param length 指定的长度 |
| | | * @return 按照指定的长度生成的含有大小写字母及数字的字符串 |
| | | */ |
| | | public static String generateRandomString(int length) { |
| | |
| | | public static void main(String[] args) { |
| | | String s = generateRandomString(26); |
| | | System.out.println(s); |
| | | System.out.println(generateOrderNumber()); |
| | | |
| | | } |
| | | |
| | | private static final AtomicInteger SEQUENCE = new AtomicInteger(0); |
| | | private static final int MAX_SEQUENCE = 99999;// 5位数的序列号 |
| | | private static final String ORDER_PER = "SN"; |
| | | |
| | | public static synchronized String generateOrderNumber() { |
| | | String datePart = new SimpleDateFormat("yyyyMMddhhmm").format(new Date()); |
| | | int sequencePart = SEQUENCE.getAndIncrement() % MAX_SEQUENCE; |
| | | String sequenceStr = String.format("%05d", sequencePart); // 保证序列号是5位数,不足的前面补0 |
| | | |
| | | return ORDER_PER + datePart + sequenceStr; |
| | | } |
| | | |
| | | } |