package com.consum.base.core.utils; // @formatter:off import cn.hutool.core.util.ReflectUtil; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.ServletInputStream;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import org.springframework.beans.BeanUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.lang.reflect.Field; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * .-~~~~~~~~~-._ _.-~~~~~~~~~-. * __.' @Author ~. .~ 代码无Bug `.__ * .'// liu.q \./ (秘籍) \\`. * .'// [916000612@qq.com] | 欲练神功 引刀自宫 \\`. * .'// .-~"""""""~~~~-._ | _,-~~~~"""""""~-. \\`. * .'//.-" 2019-04-09 `-. | .-' 10:48 "-.\\`. * .'//______.============-.. \ | / ..-============.______\\`. * .'______________________________\|/______________________________`. * * @Description : */ // @formatter:on public class CommonUtil { /** * @Author : liuq * @Date : Create in 2018/7/1 上午1:20 * @Description : 驼峰转下划线 */ public static String camel2Underline(String line) { if (line == null || "".equals(line)) { return ""; } line = String.valueOf(line.charAt(0)).toUpperCase().concat(line.substring(1)); StringBuffer sb = new StringBuffer(512); Pattern pattern = Pattern.compile("[A-Z]([a-z\\d]+)?"); Matcher matcher = pattern.matcher(line); while (matcher.find()) { String word = matcher.group(); sb.append(word.toUpperCase()); sb.append(matcher.end() == line.length() ? "" : "_"); } return sb.toString(); } /* * @Author : liu.q [916000612@qq.com] * * @Date : 2019-04-29 16:45 * * @Description : 下划线转驼峰 */ public static String Underline2camel(String para) { StringBuilder result = new StringBuilder(); String[] a = para.split("_"); for (String s : a) { if (!para.contains("_")) { result.append(s); continue; } if (result.length() == 0) { result.append(s.toLowerCase()); } else { result.append(s.substring(0, 1).toUpperCase()); result.append(s.substring(1).toLowerCase()); } } return result.toString(); } /** * @Author : liu.q * @Date : 2019-03-01 09:49 * @Description : 获取request */ public static HttpServletRequest getRequest() { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); return request; } /** * @Author : liu.q * @Date : 2019-03-01 09:49 * @Description : response */ public static HttpServletResponse getResponse() { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletResponse response = requestAttributes.getResponse(); return response; } // /** // * 获取请求参数 // * // * @return // */ public static Map getParameterMap() { // 参数Map Map properties = CommonUtil.getRequest().getParameterMap(); // 返回值Map Map returnMap = new HashMap(); Iterator entries = properties.entrySet().iterator(); Map.Entry entry; String name = ""; String value = ""; while (entries.hasNext()) { entry = (Map.Entry) entries.next(); name = (String) entry.getKey(); Object valueObj = entry.getValue(); if (null == valueObj) { continue; } else if (valueObj instanceof String[]) { String[] values = (String[]) valueObj; for (int i = 0; i < values.length; i++) { value = values[i] + ","; } value = value.substring(0, value.length() - 1); } else { value = valueObj.toString(); } if ("".equals(value)) { continue; } returnMap.put(name, value); } // 判断排序asc和desc if (returnMap.containsKey("sortOrder") && returnMap.get("sortOrder") != null && returnMap.get("sortOrder") != "") { if (!"DESC".equals(convert2Str(returnMap.get("sortOrder")).toUpperCase()) && !"ASC".equals(convert2Str(returnMap.get("sortOrder")).toUpperCase())) { returnMap.put("sortOrder", ""); } } return returnMap; } private static String convert2Str(Object object) { if (object == null) { return ""; } if (object instanceof String) { return (String) object; } else { return object.toString(); } } private static ObjectMapper mapper = null; static { mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } public static T getObjFromReq(Class clazz) { T t = null; try { Map parameterMap = getParameterMap(); String jsonStr = mapper.writeValueAsString(parameterMap); t = mapper.readValue(jsonStr, clazz); if (t == null) { t = clazz.newInstance(); } } catch (Exception e) { e.printStackTrace(); } return t; } public static T getObjFromReqBody(Class clazz) { T t = null; try { String jsonStr = getRequestBody(); t = mapper.readValue(jsonStr, clazz); if (t == null) { return clazz.newInstance(); } } catch (Exception e) { e.printStackTrace(); } return t; } public static String getStringFromInputStream(ServletInputStream stream) throws IOException { StringBuilder sb = new StringBuilder(); BufferedReader reader = null; try { reader = new BufferedReader(new InputStreamReader(stream, "UTF-8")); char[] ch = new char[1024]; int bytesRead; while ((bytesRead = reader.read(ch)) != -1) { sb.append(ch, 0, bytesRead); } } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return sb.toString(); } /** * 获取request body值 * * @param * @return */ private static String getRequestBody() { HttpServletRequest request = getRequest(); try { return getStringFromInputStream(request.getInputStream()); } catch (IOException e) { e.printStackTrace(); } return null; } public static void copyProperties(Object source, Object target) { BeanUtils.copyProperties(source, target); Class sourceClass = source.getClass(); // 获取当前类以及所有父类的字段 while (sourceClass != null) { Field[] fields = sourceClass.getDeclaredFields(); for (Field field : fields) { String fieldName = field.getName(); if (!fieldName.startsWith("isset_")) { continue; } try { Object fieldValue = ReflectUtil.getFieldValue(source, field); ReflectUtil.setFieldValue(target, field, fieldValue); } catch (Exception e) { System.out.println(e.getMessage()); } } sourceClass = sourceClass.getSuperclass(); } } }