@Component
public class OrderNumber implements Serializable {
private static final long serialVersionUID = -8249764603117125748L;
private final ReentrantLock prepareLock = new ReentrantLock();
//最大值
private static final int max = 9999;
//最小值
private static final int min = 1000;
private static volatile OrderNumber instance = null;
public static OrderNumber getInstance() {
if (instance == null) {
synchronized (OrderNumber.class) {
if (instance == null) {
instance = new OrderNumber();
}
}
}
return instance;
}
/**
* 生成訂單號
* 年月日+隨機數
*
* @return 返回編號
*/
public String generateOrderNumber() {
prepareLock.lock();
String orderNo = null;
try {
SimpleDateFormat format = new SimpleDateFormat("yyMMdd");
String time = format.format(new Date());
int number = new Random().nextInt(max) % (max - min + 1) + min;
orderNo = time + number;
} catch (Exception ex) {
ex.printStackTrace();
} finally {
prepareLock.unlock();
}
return orderNo;
}
}