package com.ruoyi.common.core.utils;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
|
/**
|
* @Description 活动订单操作
|
* @Author xiaochen
|
* @Date 2021/7/28 10:26
|
*/
|
public class CodeGenerateUtils {
|
|
/**
|
* @return
|
* @Description 获取商品编码
|
* 商品编码规则:nanoTime(后5位)*5位随机数(10000~99999)
|
* @Author xiaochen
|
*/
|
public static String generateProductCode() {
|
long nanoPart = System.nanoTime() % 100000L;
|
if (nanoPart < 10000L) {
|
nanoPart += 10000L;
|
}
|
long randomPart = (long) (Math.random() * (90000) + 10000);
|
String code = "0" + String.valueOf((new BigDecimal(nanoPart).multiply(new BigDecimal(randomPart))));
|
return code.substring(code.length() - 10);
|
}
|
|
/**
|
* @param id: 用户id
|
* @return
|
* @Description 生成订单编号
|
* 订单编号规则:(10位):(年末尾*月,取后2位)+(用户ID%3.33*日取整后2位)+(timestamp*10000以内随机数,取后6位)
|
* @Author xiaochen
|
*/
|
public static String generateOrderSn(long id) {
|
Calendar calendar = Calendar.getInstance();
|
int year = calendar.get(Calendar.YEAR);
|
year = year % 10;
|
if (year == 0) year = 10;
|
int month = calendar.get(Calendar.MONTH) + 1;
|
int yearMonth = year * month;
|
String yearMonthPart = "0" + yearMonth;
|
yearMonthPart = yearMonthPart.substring(yearMonthPart.length() - 2);
|
|
int day = calendar.get(Calendar.DAY_OF_MONTH);
|
int dayNum = (int) ((id % 3.33) * day);
|
String dayPart = "0" + dayNum;
|
dayPart = dayPart.substring(dayPart.length() - 2);
|
|
String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
|
timestampPart = timestampPart.replace(".", "").replace("E", "");
|
timestampPart = timestampPart.substring(0, 6);
|
return yearMonthPart + dayPart + timestampPart;
|
}
|
|
/**
|
* @return
|
* @Description 生成统一支付单号 规则:年(2)月(2)日(2)时(2)分(2)+timestamp*5位随机整数取后5位
|
* @Author xiaochen
|
*/
|
public static String generateVolumeSn() {
|
Calendar calendar = Calendar.getInstance();
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
|
String dateTime = dateFormat.format(calendar.getTime());
|
dateTime = dateTime.substring(2);
|
String timestampPart = "" + (Math.random() * 10000) * (System.currentTimeMillis() / 10000);
|
timestampPart = timestampPart.replace(".", "").replace("E", "");
|
timestampPart = timestampPart.substring(0, 5);
|
return dateTime + timestampPart;
|
}
|
|
public static void main(String[] args) {
|
for (long i = 0; i < 20; i++) {
|
//String timestampPart = ""+(Math.random() * 10000) * (System.currentTimeMillis()/10000);
|
//System.out.println(timestampPart);
|
//System.out.println(generateOrderSn(i));
|
long l = System.currentTimeMillis() * Long.valueOf(CodeGenerateUtils.generateProductCode().substring(0, 5));
|
System.out.println(String.valueOf(l).substring(0,10));
|
}
|
|
}
|
|
/**
|
* @description id补0生成编号
|
* @author jqs
|
* @date 2024/4/17 14:19
|
* @param totalLength
|
* @param id
|
* @return String
|
*/
|
public static String toFillZeroCode(int totalLength, Long id) {
|
String idStr = id.toString();
|
int length = idStr.length();
|
if(totalLength <= length){
|
return idStr;
|
}
|
int fillLength = totalLength - length;
|
StringBuilder idsbs = new StringBuilder();
|
for (int i = 0; i < fillLength; i++) {
|
idsbs.append("0");
|
}
|
return idsbs.append(idStr).toString();
|
}
|
}
|