有的時候咱們須要基於現有的code進行改造,可是改造的一個前提多是對於code長度有必定的要求,好比咱們作分庫分表,準備在code上作文章。 因爲歷史緣由不一樣的渠道產生的code有幾種不一樣的表現形式,結果就是code長度不同。 因此咱們在改造以前須要將這些code統一爲19位長度,空格位置用0代替。app
public static String getDbCode(String original, Long userId) { if (StringUtils.isBlank(original) || original.length() == FINAL_CODE_LENGTH) { return original; } //0.獲取code StringBuffer dbCode = new StringBuffer(""); dbCode.append(VERSION); //1.校驗code保證code必須19位 int len = original.length(); if (len > LEAF_CODE_LENGTH) { dbCode.append(original.substring(0, LEAF_CODE_LENGTH)); } else if (len < LEAF_CODE_LENGTH) { dbCode.append(original).append("0000000000000000000".substring(0, LEAF_CODE_LENGTH - len)); } else { dbCode.append(original); } //2.對userId值進行取模 long userDelevery = userId % TABLE_COUNT; //3.拼接最終code if (userDelevery < 10) { dbCode.append("00").append(userDelevery + ""); } else if (userDelevery < 100) { dbCode.append("0").append(userDelevery + ""); } else { dbCode.append(userDelevery + ""); } return dbCode.toString(); }
這樣確保不一樣渠道產生的code長度統一爲19位了。code