建立定長code

前言

有的時候咱們須要基於現有的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

相關文章
相關標籤/搜索