1. 程式人生 > 其它 >生成訂單號、編碼工具類隨筆

生成訂單號、編碼工具類隨筆



/**
*生成訂單號、編碼工具類
*/
@Component("GenerateNum")
public class GenerateNum {
// 使用單例模式,不允許直接建立例項
private GenerateNum() {
}

// 建立一個空例項物件,類需要用的時候才賦值
private static GenerateNum g = null;

// 單例模式--懶漢模式
public static synchronized GenerateNum getInstance() {
if (g == null) {
g = new GenerateNum();
}
return g;
}

// 全域性自增數
private static int count = 0;

// 每毫秒秒最多生成多少訂單(最好是像9999這種準備進位的值)
private static final int total = 9999;

// 格式化的時間字串
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

// 獲取當前時間年月日時分秒毫秒字串
private static String getNowDateStr() {
return sdf.format(new Date());
}

// 記錄上一次的時間,用來判斷是否需要遞增全域性數
private static String now = null;

/**
* 設定起始值
* (定時任務:每天凌晨將訂單編號歸零)
*
* @param num
*/
public synchronized void reset(Integer num) {
count = num;
}

/**
* 生成一個訂單號
*/
public synchronized String GenerateOrder() {
String datastr = getNowDateStr();
if (datastr.equals(now)) {
count++;// 自增
} else {
count = 1;
now = datastr;
}
int countInteger = String.valueOf(total).length() - String.valueOf(count).length();// 算補位
String bu = "";// 補字串
for (int i = 0; i < countInteger; i++) {
bu += "0";
}
bu += String.valueOf(count);
if (count >= total) {
count = 0;
}
return datastr + bu;
}


/**
* 將電話加星號處理
*/
public static String phoneMask(String phone) {
String res = "";
if (!StringUtils.isEmpty(phone)) {
StringBuilder stringBuilder = new StringBuilder(phone);
res = stringBuilder.replace(0, Math.abs(phone.length() - 5), "******").toString();
}
return res;
}


/**
* 將電話加星號處理
*/
public static String nameMask(String name) {
String res = "";
String Str = "";

if (!StringUtils.isEmpty(name)) {
StringBuilder stringBuilder = new StringBuilder(name);
int num = Math.abs(name.length() - 1);//顯示1位
for (int i = 0; i < num; i++) {
Str += "*";
}
res = stringBuilder.replace(0, num, Str).toString();
}
return res;
}


/**
* 將字串前面加星號
*/
public static String starMask(String name, int num) {
String res = "";
String Str = "";

if (!StringUtils.isEmpty(name)) {
StringBuilder stringBuilder = new StringBuilder(name);

for (int i = 0; i < num; i++) {
Str += "*";
}
res = stringBuilder.replace(0, num, Str).toString();
}
return res;
}

/**
* 將字串後面加星號
*/
public static String endMask(String name, int num) {
String res = "";
String Str = "";

if (!StringUtils.isEmpty(name)) {
StringBuilder stringBuilder = new StringBuilder(name);

for (int i = 0; i < num + 1; i++) {
Str += "*";
}
res = stringBuilder.replace(num, name.length(), Str).toString();
}
return res;
}


}