分享一个非常实用的工具类(判断map里面的值是否存在,不存在这返回null)

package com.aiapp.common.utils;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Random;
import java.util.concurrent.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.apache.commons.lang3.StringUtils;

import com.alibaba.fastjson2.JSON;
import com.google.common.collect.Maps;

/**
 * 自己写的工具服务类,超好用的哦
 * @author Administrator
 */
public class MyUtils {

    private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat("trans-pool-%d").build();
    public static final ExecutorService POOL = new ThreadPoolExecutor(240, 1000, 60L, TimeUnit.SECONDS, new LinkedBlockingQueue<>(1024), THREAD_FACTORY, new ThreadPoolExecutor.AbortPolicy());

    /**
     * @Title: getRequestParamsMap
     * @Description: 获取请求参数信息
     * @param isPage 是否同时包含分页参数信息
     * @return 请求参数与值
     */
    public static Map<String, Object> getRequestParamsMap(boolean isPage, HttpServletRequest request) {
        Map<String, Object> paramsMap = new HashMap<>(8);
        Map<String, String[]> requestParamsMap = request.getParameterMap();
        // 如果有请求参数
        if (requestParamsMap != null && !requestParamsMap.isEmpty()) {
            for (String key : requestParamsMap.keySet()) {
                String[] value = requestParamsMap.get(key);
                String paramValue = value[0];
                paramValue = paramValue == null ? "" : paramValue.trim();
                if (isMessyCode(paramValue)) {
                    paramValue = new String(paramValue.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
                }
                // 判断是否需要加入分页所需参数信息
                if (isPage) {
                    paramsMap.put(key, paramValue);
                } else {
                    if (!"pageNum".equalsIgnoreCase(key) && !"pageSize".equalsIgnoreCase(key)) {
                        paramsMap.put(key, paramValue);
                    }
                }
            }
        }
        return paramsMap;
    }

    /**
     * @Title: isMessyCode
     * @Description: 判断乱码
     * @Date: 2012-11-1
     * @param strName 要判断的字符
     * @return true, 乱码
     */
    public static boolean isMessyCode(String strName) {
        final String str = "\\s*|\t*|\r*|\n*";
        final Pattern p = Pattern.compile(str);
        Matcher m = p.matcher(strName);
        String after = m.replaceAll("");
        String temp = after.replaceAll("\\p{P}", "");
        char[] ch = temp.trim().toCharArray();
        float chLength = ch.length;
        float count = 0;
        for (char c : ch) {
            if (!Character.isLetterOrDigit(c)) {
                if (!MyUtils.isChinese(c)) {
                    count = count + 1;
                    System.out.print(c);
                }
            }
        }
        float result = count / chLength;
        return (result > 0.2);
    }


    /***
     * @Title: string2MD5
     * @Description: MD5加码 生成32位md5码
     * @Date 2017年3月8日_下午4:36:57
     * @param inStr 要加密码的字符串
     * @return 加密后的字符串
     */
    public static String string2Md5(String inStr) {
        byte[] md5Bytes = getMd5Bytes(inStr);
        StringBuilder hexValue = new StringBuilder();
        for (byte md5Byte : md5Bytes) {
            int val = (md5Byte) & 0xff;
            if (val < 16) {
                hexValue.append("0");
            }
            hexValue.append(Integer.toHexString(val));
        }
        return hexValue.toString();
    }

    public static byte[] getMd5Bytes(String inStr){
        MessageDigest md5;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            e.printStackTrace();
            return new byte[0];
        }
        char[] charArray = inStr.toCharArray();
        byte[] byteArray = new byte[charArray.length];
        for (int i = 0; i < charArray.length; i++) {
            byteArray[i] = (byte) charArray[i];
        }
        return md5.digest(byteArray);
    }

    /**
     * @Title: getRequestParamsString
     * @Description: 获取请求参数(不打印请求信息)
     * @Date 2018年5月17日_上午2:59:23
     * @param request 请求
     * @return 请求参数
     */
    public static String getRequestParamsString(HttpServletRequest request) throws RuntimeException {
        if (!"post".equalsIgnoreCase(request.getMethod())) {
            return JSON.toJSONString(getRequestParamsMap(true, request));
        }
        StringBuilder responseStrBuilder = new StringBuilder();
        try (InputStream is = request.getInputStream(); BufferedReader streamReader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8))) {
            String inputStr;
            while ((inputStr = streamReader.readLine()) != null) {
                responseStrBuilder.append(inputStr);
            }
        } catch (Exception e) {
            return JSON.toJSONString(getRequestParamsMap(true, request));
        }
        return responseStrBuilder.toString();
    }

    public static String getStringValue(Object object) {
        if (object != null) {
            String tempStr = object.toString();
            if (StringUtils.isNotBlank(tempStr)) {
                tempStr = tempStr.trim();
            }
            return tempStr;
        }
        return null;
    }

    public static String getStringValue(Map<?, ?> mp, String key) {
        if (mp != null) {
            Object obj = mp.get(key);
            if (obj != null) {
                String tempStr = obj.toString();
                if (StringUtils.isNotBlank(tempStr)) {
                    tempStr = tempStr.trim();
                }
                return tempStr;
            }
        }
        return null;
    }

    public static Long getLongValue(Map<?, ?> mp, String key) {
        try {
            if (mp != null) {
                Object obj = mp.get(key);
                if (obj != null) {
                    long value = 0L;
                    String tempStr = obj.toString();
                    if (StringUtils.isNotBlank(tempStr)) {
                        value = Long.parseLong(tempStr.trim());
                    }
                    return value;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0L;
    }

    public static Long getLongValue(Object object) {
        try {
            if (object != null) {
                long value = 0L;
                String tempStr = object.toString();
                if (StringUtils.isNotBlank(tempStr)) {
                    value = Long.parseLong(tempStr.trim());
                }
                return value;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0L;
    }

    public static boolean isBlank(Long value) {
        return (value == null || value == 0L);
    }

    public static int getIntValue(Map<?, ?> mp, String key) {
        if (mp != null) {
            Object obj = mp.get(key);
            if (obj != null) {
                int value = 0;
                String tempStr = obj.toString();
                if (StringUtils.isNotBlank(tempStr)) {
                    value = Integer.parseInt(tempStr.trim());
                }
                return value;
            }
        }
        return 0;
    }

    public static int getIntValue(Object object) {
        if (object != null) {
            String tempStr = object.toString();
            if (StringUtils.isNotBlank(tempStr)) {
                tempStr = tempStr.trim();
            }
            return Integer.parseInt(tempStr);
        }
        return 0;
    }

    /**
     * @Description: 验证是否空或者0
     * @Title: validate
     * @Author ZouBin
     * @Date 2020年5月9日
     * @param value 整型参数
     * @return true 空的
     */
    public static boolean isBlank(Integer value) {
        if (StringUtils.isEmpty(getStringValue(value))) {
            return true;
        }
        return getIntValue(value) == 0;
    }

    public static boolean equals(Integer value1, Integer value2) {
        if (value1 == null && value2 == null) {
            return true;
        }
        if (value1 == null || value2 == null) {
            return false;
        }
        return value1.compareTo(value2) == 0;
    }

    public static double getDoubleValue(Map<?, ?> mp, String key) {
        if (mp != null) {
            Object obj = mp.get(key);
            if (obj != null) {
                return getDoubleValue(obj);
            }
        }
        return 0d;
    }

    public static double getDoubleValue(Object object) {
        if (object != null) {
            if (object instanceof String) {
                String tempStr = object.toString();
                if (StringUtils.isNotBlank(tempStr)) {
                    tempStr = tempStr.trim();
                }
                return Double.parseDouble(tempStr);
            } else if (object instanceof Double) {
                return (Double) object;
            } else {
                return Double.parseDouble(object.toString());
            }
        }
        return 0d;
    }

    /**
     * @Description: 验证是否空或者0
     * @Title: isBlank
     * @Author ZouBin
     * @Date 2020年5月9日
     * @param value 浮点参数
     * @return true 空的
     */
    public static boolean isBlank(Double value) {
        if (value == null) {
            return true;
        } else {
            if (StringUtils.isEmpty(getStringValue(value))) {
                return true;
            }
            return getDoubleValue(value) == 0d;
        }
    }

    public static Date getDateValue(Map<?, ?> mp, String key) {
        return getDateValue(mp, key, null);
    }

    public static Date getDateValue(Map<?, ?> mp, String key, String fmt) {
        Date date = null;
        if (mp != null) {
            Object obj = mp.get(key);
            if (obj != null && StringUtils.isNotBlank(obj.toString())) {
                try {
                    if (String.valueOf(obj).split(" ").length == 1) {
                        if (StringUtils.isEmpty(fmt)) {
                            fmt = "yyyy-MM-dd";
                        }
                        date = new SimpleDateFormat(fmt).parse(String.valueOf(obj));
                    } else if (String.valueOf(obj).split(" ").length == 2) {
                        if (StringUtils.isEmpty(fmt)) {
                            fmt = "yyyy-MM-dd HH:mm:ss";
                        }
                        date = new SimpleDateFormat(fmt).parse(String.valueOf(obj));
                    } else {
                        return null;
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                    return null;
                }
            }
        }
        return date;
    }

    public static Date getTimestampValue(Object object) {
        if (object != null) {
            return (Date) object;
        }
        return null;
    }

    public static int getRandom() {
        Random rand = new Random();
        return rand.nextInt(32) + 40;
    }

    /**
     * @Description: 计算分佣金额
     * @Title: getPercentage
     * @Author ZouBin
     * @Date 2020年5月9日
     * @param divideAgent 金额
     * @param scale       比例
     * @return 计算后的金额
     */
    public static BigDecimal getPercentage(BigDecimal divideAgent, BigDecimal scale) {
        BigDecimal xiaoshu = new BigDecimal(100);
        scale = scale.divide(xiaoshu, RoundingMode.UP);
        return divideAgent.multiply(scale);
    }

    /**
     * @Description: bean2map
     * @Title: convertBean
     * @Author ZouBin
     * @Date 2018年6月4日_上午3:49:32
     * @param bean 实体对象
     * @return 转换后的结果
     */
    public static Map<String, Object> convertBean(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException {
        Class<?> type = bean.getClass();
        Map<String, Object> returnMap = Maps.newHashMap();
        BeanInfo beanInfo = Introspector.getBeanInfo(type);
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor descriptor : propertyDescriptors) {
            String propertyName = descriptor.getName();
            if (!"class".equals(propertyName)) {
                Method readMethod = descriptor.getReadMethod();
                Object result = readMethod.invoke(bean);
                returnMap.put(propertyName, Objects.requireNonNullElse(result, ""));
            }
        }
        return returnMap;
    }

    public static String getRandomCode(int length) {
        // 加上一些字母,就可以生成pc站的验证码了
        String sources = "0123456789";
        Random rand = new Random();
        StringBuilder flag = new StringBuilder();
        for (int j = 0; j < length; j++) {
            flag.append(sources.charAt(rand.nextInt(9)));
        }
        return flag.toString();
    }

    public static String getFileType(String fileExt) {
        String fileType = "other";
        if (!StringUtils.isNotBlank(fileExt)) {
            return fileType;
        }
        String files = ".7z.aiff.asf.avi.csv.doc.docx.fla.gz.gzip.mid.mov.amr.mp3.mp4.mpc.mpeg.mpg.ods.odt.pdf.ppt.pptx.pxd.qt.ram.rar.rm.rmi.rmvb.rtf.sdc.sitd.swf.sxc.sxw.tar.tgz.tif.tiff.txt.vsd.wav.wma.wmv.xls.xlsx.zip";
        String images = ".bmp.gif.jpeg.jpg.pngbmp.gif.jpeg.jpg.png";
        String flash = ".swf.flv";
        if (files.contains(fileExt)) {
            fileType = "files";
        } else if (images.contains(fileExt)) {
            fileType = "images";
        } else if (flash.contains(fileExt)) {
            fileType = "flash";
        }
        return fileType;
    }

    public static String getAttachmentType(String fileName) {
        if (!StringUtils.isNotBlank(fileName)) {
            return null;
        }
        if (".mov.mp3.mp4".contains(fileName)) {
            return "mp4";
        } else if (".bmp.gif.jpeg.jpg.png".contains(fileName)) {
            return "images";
        }
        return null;
    }

    /**
     * @Description: 判断字符串是否是中文
     * @Title: isChinese
     * @Author ZouBin
     * @Date 2018年6月30日_下午11:14:27
     * @param param 字符串
     * @return true 是
     */
    public static boolean isChinese(String param) {
        if (StringUtils.isBlank(param)) {
            return false;
        }
        char[] ch = param.trim().toCharArray();
        if (ch.length >= 2 && (isChinese(ch[0]) || isChinese(ch[1]))) {
            return true;
        }
        return ch.length >= 1 && isChinese(ch[0]);
    }

    /**
     * @Title: isChinese
     * @Description: 判断中文
     * @param c 字符
     * @return true 是
     */
    public static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        return (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS);
    }

    /**
     * @Description: 判断字符串是否是英文
     * @Title: isEnglish
     * @Author ZouBin
     * @Date 2018年7月1日_上午12:42:59
     * @param str 字符串
     * @return true 是
     */
    public static boolean isEnglish(String str) {
        if (StringUtils.isNotBlank(str)) {
            final String rex = "^[a-zA-Z]*";
            Pattern pattern = Pattern.compile(rex);
            return pattern.matcher(str.substring(0, 2)).matches();
        }
        return false;
    }

    /**
     * @Description: 判断是否为整数
     * @Title: isInteger
     * @Author ZouBin
     * @Date 2018年7月1日_上午12:42:59
     * @param str 传入的字符串
     * @return 是整数返回true, 否则返回false
     */
    public static boolean isInteger(String str) {
        if (StringUtils.isNotBlank(str)) {
            final String reg = "^[-\\+]?[\\d]*$";
            Pattern pattern = Pattern.compile(reg);
            return pattern.matcher(str.substring(0, 2)).matches();
        }
        return false;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值