工具类--GeneralUtil

工具类–GeneralUtil

package com.core.config;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;

import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.yaml.snakeyaml.Yaml;

import com.core.config.dataEncryption.dataEncryption;
import com.core.config.resultStatusInfo.ResultMessage;
import com.core.config.resultStatusInfo.ResultStatus;

public class GeneralUtil {

private static final String WX_AGENT = "micromessenger";
private static final String ALI_AGENT = "alipay";
/**
 * 获取ip地址 getRemoteHost
 * 
 * @author sqq
 * @param request
 * @return
 * @since JDK 1.8
 */
public static String getRemoteHost(javax.servlet.http.HttpServletRequest request) {
	String ip = request.getHeader("x-forwarded-for");
	if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
		ip = request.getHeader("Proxy-Client-IP");
	}
	if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
		ip = request.getHeader("WL-Proxy-Client-IP");
	}
	if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
		ip = request.getRemoteAddr();
	}
	if (ip != null) {
		String[] ws = ip.split(",");
		ip = ws[0];
	}

	return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;
}

/**
 * 主键生成
 * 
 * @param args
 */
public static String uniqueId(String str) {
	Date date = new Date();
	int length = 32 - str.length() - 14;
	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	str = str + sdf.format(date) + createCode(false, length);
	return str.trim();

}

/**
 * 获取当前时间<无格式>
 * 
 * @param args
 */
public static String nowTimeNoFormat() {
	Date day = new Date();

	SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");

	System.out.println(df.format(day));
	return df.format(day);
}
/**
 * 主键生成
 * 
 * @param args
 */
public static String uniqueId(String str, String userId) {
	Date date = new Date();
	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
	str = str + sdf.format(date) + userId + createCode(false, 6);
	return str.trim();

}

/**
 * 随机数生成,根据numberFlag确认生成的随机数类型
 * 
 * @param numberFlag
 * @param length
 * @return
 */
public static String createCode(boolean numberFlag, int length) {
	String retStr = "";
	String strTable = (numberFlag) ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz";
	int len = strTable.length();
	for (int i = 0; i < length; i++) {
		double dblR = Math.random() * len;
		int intR = (int) Math.floor(dblR);
		retStr = retStr + strTable.charAt(intR);
	}
	return retStr;
}
/**
 * 随机数生成,根据numberFlag确认生成的随机数类型
 * 
 * @param numberFlag
 * @param length
 * @return
 */
public static String createCodes(boolean numberFlag, int length) {
	String retStr = "";
	String strTable = (numberFlag) ? "01234" : "1234567890abcdefghijkmnpqrstuvwxyz";
	int len = strTable.length();
	for (int i = 0; i < length; i++) {
		double dblR = Math.random() * len;
		int intR = (int) Math.floor(dblR);
		retStr = retStr + strTable.charAt(intR);
	}
	return retStr;
}

/**
 * 获取request对象数据里的参数
 * 
 * @param request
 * @return
 */
public static Map mapListInputStream(HttpServletRequest request) {
	String inputStr = null;
	InputStream inputStream = null;
	BufferedReader streamReader;
	StringBuilder responseStrBuilder = new StringBuilder();
	Map map = new HashMap();
	try {

		inputStream = cloneInputStream(request.getInputStream());

		streamReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));

		while ((inputStr = streamReader.readLine()) != null)
			responseStrBuilder.append(inputStr);

		map = JsonUtil.parseJSON2Map(responseStrBuilder.toString());

	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	System.err.println("########mapListInputStream##########" + map.toString());

	return map;
}

/**
 * 获取request对象数据里的参数
 * 
 * @param request
 * @return
 */
public static Map mapList(HttpServletRequest request) {

	Map mapList = new TreeMap(new Comparator() {
		public int compare(String obj1, String obj2) {
			// 降序排序
			return obj2.compareTo(obj1);
		}
	});

	// Map mapList = new HashMap();
	Map map = request.getParameterMap();
	Set> keSet = map.entrySet();
	for (Iterator> itr = keSet.iterator(); itr.hasNext();) {
		Entry me = itr.next();
		String ok = me.getKey();
		Object ov = me.getValue();
		String[] value = new String[1];
		if (ov instanceof String[]) {
			value = (String[]) ov;
		} else {
			value[0] = ov.toString();
		}
		for (int k = 0; k < value.length; k++) {
			mapList.put(ok, value[k]);
		}

		/*
		 * if(value[0].toString()==null||value[0].toString().equals("")){
		 * mapList=JsonUtil.parseJSON2Map("{"+ok+"}"); }else{ for (int k =
		 * 0; k < value.length; k++) { mapList.put(ok, value[k]); }}
		 */
	}
	return mapList;
}

/**
 * 获取当前时间
 * 
 * @param args
 */
public static String nowTime() {
	Date day = new Date();

	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	return df.format(day);
}
/**
 * 获取当前时间
 * 
 * @param args
 */
public static String nowTimes() {
	Date day = new Date();

	SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");

	System.out.println(df.format(day));
	return df.format(day);
}
/**
 * 获取当前时间
 * 
 * @param fmt
 * @return
 */
public static String nowTime(String fmt) {
	Date day = new Date();

	SimpleDateFormat df = new SimpleDateFormat(fmt);

	System.out.println(df.format(day));
	return df.format(day);
}

/**
 * 参数校验错误格式化
 */

public static String parameter(BindingResult bindingResult) {
	List ls = bindingResult.getAllErrors();
	Map map = new HashMap();
	for (int i = 0; i < ls.size(); i++) {
		int errorNum = i + 1;
		map.put("错误" + errorNum, ls.get(i).getDefaultMessage());
	}
	String erroRtInfo = JsonUtil.toJson(map, ResultStatus.PARAMETERERROR, ResultMessage.PARAMETERERROR);
	return erroRtInfo;
}

/**
 * 判断浏览器
 */

public static String getBrowser(HttpServletRequest request) {
	String agent = request.getHeader("User-Agent").toLowerCase();
	if (agent != null) {
		if (agent.toLowerCase().contains(WX_AGENT)) {
			// 微信
			return "5";
		} else if (agent.toLowerCase().contains(ALI_AGENT)) {
			// 支付宝
			return "4";
		}
	}
	// 未知
	return "99";
}

/**
 * 读取yml配置文件
 */
@SuppressWarnings("unchecked")
public static String getYmlValue(String key) {

	String value = "";

	Yaml yaml = new Yaml();
	InputStream inputStream = GeneralUtil.class.getClassLoader().getResourceAsStream("application.yml");
	Map map = (Map) yaml.load(inputStream);
	// 通过map我们取值就可以了.
	value = map.get(key).toString();

	return value;

}

/**
 * 将json经过md5和base64进行加密
 * 
 * @param args
 */
public static String dataEncryptions(String info) {
	// 将数据进行base64加密
	String base64Info = dataEncryption.Base64encode(info);
	String base64Infon = base64Info.trim().replaceAll("\n", "");
	String base64Infor = base64Infon.replaceAll("\r", "");
	System.err.println("base64Info<<<" + base64Infor);
	// 将base64数据进行md5加密
	String md5Info = dataEncryption.Md5encode(base64Infor);
	System.err.println("md5Info<<<" + md5Info);
	return md5Info;

}

/**
 * obj转String
 * 
 * @param obj
 * @return
 */
public static String valueOf(Object obj) {

	return (obj == null) ? null : obj.toString();
}


/**
 * 获取请求Body
 *
 * @param request
 * @return
 */
public static String getBodyString(final ServletRequest request) {
	StringBuilder sb = new StringBuilder();
	InputStream inputStream = null;
	BufferedReader reader = null;
	try {
		inputStream = cloneInputStream(request.getInputStream());
		reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
		String line = "";
		while ((line = reader.readLine()) != null) {
			sb.append(line);
		}
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		if (inputStream != null) {
			try {
				inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		if (reader != null) {
			try {
				reader.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	return sb.toString();
}

/**
 * Description: 复制输入流
* * @param inputStream * @return
*/ public static InputStream cloneInputStream(ServletInputStream inputStream) { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; try { while ((len = inputStream.read(buffer)) > -1) { byteArrayOutputStream.write(buffer, 0, len); } byteArrayOutputStream.flush(); } catch (IOException e) { e.printStackTrace(); } InputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); return byteArrayInputStream; } /** * 参数校验结果集解析 * * @param verifyDeviceId * @return */ public static Boolean isflag(String verifyDeviceId) { Map map = JsonUtil.parseJSON2Map(verifyDeviceId); String rtCode = GeneralUtil.valueOf(map.get("rtCode")); if ("200".equals(rtCode)) { return true; } else { return false; } } public static String getOperateDate(Object orderId) { if (orderId != null) { return valueOf(orderId).substring(4, 12); } else { return ""; } } // map判空 public static Map mapvalueNotNull(Map map) { for (Entry entry : map.entrySet()) { if (entry.getValue() == null) { entry.setValue("-"); } } return map; } }

你可能感兴趣的:(工具类)