All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.hothub.module.common.utils.CommonUtils Maven / Gradle / Ivy

The newest version!
package org.hothub.module.common.utils;

import org.hothub.module.common.base.Platform;
import org.hothub.module.common.uuid.SnowFlake;
import org.hothub.module.common.uuid.SnowFlakeLite;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.Random;
import java.util.UUID;

/**
 * 通用工具类
 */
public class CommonUtils {


    /**
     * 获取UUID - 32位字符串
     *
     * @return String
     **/
    public static String getUUID() {
        return UUID.randomUUID().toString().replaceAll("-", "");
    }



    /**
     * 获取UUID - 18位整数
     *
     * @return Long
     **/
    public static Long getSFID() {
        return SnowFlake.getInstance().nextId();
    }



    /**
     * 获取短的SFID - 16位整数
     *
     * @return 53bit长度
     **/
    public static Long getLiteSFID() {
        return SnowFlakeLite.nextId();
    }



    /**
     * 生成短信验证码
     *
     * @return Integer
     **/
    public static Integer createSmsCode() {
        return new Random().nextInt(8999) + 1000;
    }



    /**
     * 生成密码盐
     *
     * @return String
     **/
    public static String createSalt() {
        Random RANDOM = new SecureRandom();
        byte[] salt = new byte[6];
        RANDOM.nextBytes(salt);

        Base64.Encoder encoder = Base64.getEncoder();

        return encoder.encodeToString(salt);
    }




    /**
     * MD5加密
     *
     * @param text 字符串
     * @return String
     **/
    public static String toMd5(String text) {
        String result = null;
        //首先判断是否为空
        if(StringUtils.isEmpty(text)) {
            return "";
        }

        try{
            //首先进行实例化和初始化
            MessageDigest md = MessageDigest.getInstance("MD5");
            //得到一个操作系统默认的字节编码格式的字节数组
            byte[] btInput = text.getBytes();
            //对得到的字节数组进行处理
            md.update(btInput);
            //进行哈希计算并返回结果
            byte[] btResult = md.digest();
            //进行哈希计算后得到的数据的长度
            StringBuffer sb = new StringBuffer();

            for(byte b : btResult){
                int bt = b&0xff;
                if(bt < 16) {
                    sb.append(0);
                }
                sb.append(Integer.toHexString(bt));
            }

            result = sb.toString();
        } catch(NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        return result;
    }



    /**
     * 将TinyInt转为Byte
     *
     * @param tinyInt byte值
     * @return Byte
     **/
    public static Byte intToByte(Integer tinyInt) {
        return tinyInt.byteValue();
    }



    public static String byteToString(Byte bytes) {
        return bytes.toString();
    }



    /**
     * 获取平台
     *
     * @param userAgent 请示Agent
     * @return Platform
     */
    public static Platform getPlatform(String userAgent) {
        if (StringUtils.isEmpty(userAgent)) {
            return Platform.UNKNOWN;
        }

        userAgent = userAgent.toLowerCase();

        if (userAgent.indexOf("micromessenger") > 0){
            return Platform.WEIXIN_CLIENT;
        } else if (userAgent.contains("iphone") || userAgent.contains("ipod") || userAgent.contains("ipad")){
            if (userAgent.contains("mozilla")
                    || userAgent.contains("mqqbrowser")
                    || userAgent.contains("opera")
                    || userAgent.contains("ucweb")
                    || userAgent.contains("quark")) {
                return Platform.IOS_BROWSER;
            }

            return Platform.IOS_CLIENT;
        } else if (userAgent.contains("android")) {
            if (userAgent.contains("mozilla")
                    || userAgent.contains("mqqbrowser")
                    || userAgent.contains("opera")
                    || userAgent.contains("ucweb")
                    || userAgent.contains("quark")) {
                return Platform.ANDROID_BROWSER;
            }

            return Platform.ANDROID_CLIENT;
        } else {
            return Platform.PC;
        }
    }



    //ESCAPE编码字符串
    public static String escape(String src) {
        int i;
        char j;
        StringBuilder tmp = new StringBuilder();
        tmp.ensureCapacity(src.length() * 6);
        for (i = 0; i < src.length(); i++) {
            j = src.charAt(i);
            if (Character.isDigit(j) || Character.isLowerCase(j)
                    || Character.isUpperCase(j))
                tmp.append(j);
            else if (j < 256) {
                tmp.append("%");
                if (j < 16)
                    tmp.append("0");
                tmp.append(Integer.toString(j, 16));
            } else {
                tmp.append("%u");
                tmp.append(Integer.toString(j, 16));
            }
        }
        return tmp.toString();
    }



    //解码ESCAPE字符串
    public static String unescape(String src) {
        StringBuilder tmp = new StringBuilder();
        tmp.ensureCapacity(src.length());
        int lastPos = 0, pos = 0;
        char ch;
        while (lastPos < src.length()) {
            pos = src.indexOf("%", lastPos);
            if (pos == lastPos) {
                if (src.charAt(pos + 1) == 'u') {
                    ch = (char) Integer.parseInt(src
                            .substring(pos + 2, pos + 6), 16);
                    tmp.append(ch);
                    lastPos = pos + 6;
                } else {
                    ch = (char) Integer.parseInt(src
                            .substring(pos + 1, pos + 3), 16);
                    tmp.append(ch);
                    lastPos = pos + 3;
                }
            } else {
                if (pos == -1) {
                    tmp.append(src.substring(lastPos));
                    lastPos = src.length();
                } else {
                    tmp.append(src.substring(lastPos, pos));
                    lastPos = pos;
                }
            }
        }
        return tmp.toString();
    }




    public static String hideMobile(String mobile) {
        if (StringUtils.isEmpty(mobile)) {
            return "";
        }

        return mobile.replaceAll("(\\d{3})\\d{0,4}(\\d{0,4})", "$1****$2");
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy