package com.cmos.ngoccore.util; import java.util.Date; import java.util.Random; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.util.StringUtils; import com.cmos.cache.redis.JedisClusterFactory; import com.cmos.core.logger.Logger; import com.cmos.core.logger.LoggerFactory; import redis.clients.jedis.JedisCluster; public class SequenceUtils { private static final Logger LOGGER = LoggerFactory.getUtilLog(SequenceUtils.class); /** * 鏍規嵁redis閿�鑾峯彇搴忓垪鍞竴鏍囪瘑 * @param key 緙撳瓨閿� * @return 搴忓垪鍞竴鏍囪瘑 */ public static String getSequence(String key) throws CustomerException { int length=30; if (StringUtils.isEmpty(key)) { LOGGER.error("REDIS KEY IS NOT EXIST"); return null; } String datePattern="yyyyMMddHHmmssSSS"; int randomLength=length-datePattern.length(); String id = null; try { LOGGER.info("寮�鑾峯彇涓婚敭 "+ "key=" + key); JedisCluster jedisCluster=JedisClusterFactory.getJedisCluster(); String redisValue=jedisCluster.incr(key).toString(); id = DateFormatUtils.format(new Date(), datePattern) +redisValue; LOGGER.info("鑾峯彇涓婚敭鎴愬姛"+"id=" + id); } catch (Exception e) { id = DateFormatUtils.format(new Date(), datePattern)+getRandomStringByLength(randomLength); LOGGER.error("NOT ERROR! 涓婚敭鑾峯彇鎴愬姛"+"key=" + key + ",id=" + id,e); } return id; } /** * 鎸囧畾闀垮害錛岄�榪囧綋鍓嶆椂闂�闅忔満鏁拌幏鍙栧敮涓�簭鍒楁爣璇� * @param length 鎸囧畾瀛楃涓查暱搴� * @return 鍞竴搴忓垪鏍囪瘑 */ public static String getSequence(int length) throws CustomerException { String datePattern="yyyyMMddHHmmssSSS"; int randomLength=length-datePattern.length(); if (randomLength<=0) { LOGGER.error("獲取流水號失敗!"); return null; } String id = DateFormatUtils.format(new Date(), datePattern)+getRandomStringByLength(randomLength); return id; } /** * 鑾峯彇涓�畾闀垮害鐨勯殢鏈哄瓧絎︿覆 * @param length 鎸囧畾瀛楃涓查暱搴� * @return 涓�畾闀垮害鐨勫瓧絎︿覆 */ public static String getRandomStringByLength(int length) { String base = "0123456789"; Random random = new Random(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { int number = random.nextInt(base.length()); sb.append(base.charAt(number)); } return sb.toString(); } }