1、采用交易流水号TradeNo 20 位,14位日期+6位序列
//获取交易流水号TradeNo 20 位,14位日期+6位序列
public static String getTradeNo(){
String dateFull = new Date().getDateShort8();
String timeFull = new Date().getOnlyTimeShort();
String key="trade_seq:"+dateFull + timeFull;
Long seq = JedisClientPool.getInstance().incr(key);
if(seq==0){
JedisClientPool.getInstance().expire(key, Date.SECOND_HOUR);//redis保存一个小时,避免出现时间差,生成的key会有重复
}
return dateFull + Utility.toString(encodeHash(Utility.toObject(timeFull + Utility.toString(seq, 6), Long.class)), 12);
}
//获取交易流水号TradeNo 20 位,14位日期+6位序列
public static String getTradeNo(){
String dateFull = new Date().getDateShort8();
String timeFull = new Date().getOnlyTimeShort();
String key="trade_seq:"+dateFull + timeFull;
Long seq = JedisClientPool.getInstance().incr(key);
if(seq==0){
JedisClientPool.getInstance().expire(key, Date.SECOND_HOUR);//redis保存一个小时,避免出现时间差,生成的key会有重复
}
return dateFull + Utility.toString(encodeHash(Utility.toObject(timeFull + Utility.toString(seq, 6), Long.class)), 12);
}
2、8位日期+11位序列
public static String getCouNo(){
String date = new Date().getDateShort8();
String key="cou_no_seq:"+date;
Long seq = JedisClientPool.getInstance().incr(key);
if(seq==0){
JedisClientPool.getInstance().expire(key, Date.SECOND_YEAR);//redis保存一个小时,避免出现时间差,生成的key会有重复
}
return date+Utility.toString(switchHashCode(HASH_MOD_11, HASH_CODE_11,HASH_SALT_11, seq), 11);
}
public static String getCouNo(){
String date = new Date().getDateShort8();
String key="cou_no_seq:"+date;
Long seq = JedisClientPool.getInstance().incr(key);
if(seq==0){
JedisClientPool.getInstance().expire(key, Date.SECOND_YEAR);//redis保存一个小时,避免出现时间差,生成的key会有重复
}
return date+Utility.toString(switchHashCode(HASH_MOD_11, HASH_CODE_11,HASH_SALT_11, seq), 11);
}