/**
* 生成订单编号
* @return 返回类型 订单号
* @throws Exception
* @Description: 订单编号:tq + 时间戳(17位) + 四位计数器(4) 一共23位
*/
public String makeOrderNo(){
// 最终生成的订单号
StringBuffer finOrderNum = new StringBuffer("TD");
String nowTime = YyDateUtils.formatLocalDateTime(LocalDateTime.now(), "yyyyMMddHHmmssSSS");
String setTime = YyDateUtils.formatLocalDateTime(LocalDateTime.now(), "yyyyMMdd");
if(!redisCache.isExist("orderNum:"+setTime)){
redisCache.set("orderNum:"+setTime,0,1,TimeUnit.DAYS);
//设置过期时间
redisCache.expireKeyAt("orderNum"+setTime,loadLong());
}
double num = redisCache.incrNum("orderNum:"+setTime,1);
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMinimumIntegerDigits(4);
formatter.setGroupingUsed(false);
//补位
String covering = formatter.format(num);
// 组装订单号
finOrderNum.append(nowTime).append(covering);
return finOrderNum.toString();
}
//计数器每天凌晨00:00:00 清除
public static Date loadLong(){
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, 1) ;
return YyDateUtils.parseDate(YyDateUtils.format(cal.getTime(),"yyyy-MM-dd 00:00:00"));
}