工具类--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<String, Object> mapListInputStream(HttpServletRequest request) {
	String inputStr = null;
	InputStream inputStream = null;
	BufferedReader streamReader;
	StringBuilder responseStrBuilder = new StringBuilder();
	Map<String, Object> map = new HashMap<String, Object>();
	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<String, Object> mapList(HttpServletRequest request) {

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

	// Map<String, Object> mapList = new HashMap<String, Object>();
	Map<String, String[]> map = request.getParameterMap();
	Set<Entry<String, String[]>> keSet = map.entrySet();
	for (Iterator<Entry<String, String[]>> itr = keSet.iterator(); itr.hasNext();) {
		Entry<String, String[]> 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<ObjectError> ls = bindingResult.getAllErrors();
	Map<String, Object> map = new HashMap<String, Object>();
	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<String, Object> map = (Map<String, Object>) 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: 复制输入流</br>
 *
 * @param inputStream
 * @return</br>
 */
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<String, Object> 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<String, Object> mapvalueNotNull(Map<String, Object> map) {
	for (Entry<String, Object> entry : map.entrySet()) {
		if (entry.getValue() == null) {
			entry.setValue("-");
		}
	}
	return map;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值