建立定长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

相关文章
相关标签/搜索