package com.nova.sankuai.domain.api.yinsheng;
|
|
import com.alibaba.fastjson.JSONObject;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
|
import java.lang.reflect.Field;
|
import java.util.*;
|
|
@Slf4j
|
public class CommonUtil {
|
|
/**
|
* map 转成 string
|
*
|
* @param map
|
* @return
|
*/
|
public static String mapToString(Map<String, String> map) {
|
SortedMap<String, String> sortedMap = new TreeMap<>(map);
|
|
StringBuilder sb = new StringBuilder();
|
|
for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
|
if (StringUtils.isBlank(entry.getValue())) {
|
continue;
|
}
|
sb.append(entry.getKey()).append('=').append(entry.getValue()).append('&');
|
}
|
sb.deleteCharAt(sb.length() - 1);
|
|
return sb.length() == 0 ? "" : sb.toString();
|
}
|
|
/**
|
* 除去数组中的空值和签名参数
|
*
|
* @param sArray 签名参数组
|
* @return 去掉空值与签名参数后的新签名参数组
|
*/
|
public static Map<String, String> paraFilter(Map<String, String> sArray) {
|
|
Map<String, String> result = new HashMap<>();
|
|
if (sArray == null || sArray.size() <= 0) {
|
return result;
|
}
|
|
for (String key : sArray.keySet()) {
|
String value = sArray.get(key);
|
if (value == null || StringUtils.isEmpty(value) || key.equalsIgnoreCase("sign")) {
|
continue;
|
}
|
result.put(key, value);
|
}
|
|
return result;
|
}
|
|
/**
|
* 遍历以及根据重新排序
|
*
|
* @param sortedParams
|
* @return
|
*/
|
public static String getSignContent(Map<String, String> sortedParams) {
|
StringBuffer content = new StringBuffer();
|
List<String> keys = new ArrayList<>(sortedParams.keySet());
|
Collections.sort(keys);
|
log.info("排序结果:" + keys.toString());
|
int index = 0;
|
for (String key : keys) {
|
String value = sortedParams.get(key);
|
if (StringUtil.areNotEmpty(key, value)) {
|
content.append((index == 0 ? "" : "&") + key + "=" + value);
|
index++;
|
}
|
}
|
return content.toString();
|
}
|
|
public static Map<String, String> objToMap(Object obj) {
|
Map<String, String> map = new HashMap<>();
|
Class<?> clazz = obj.getClass();
|
System.out.println(clazz);
|
for (Field field : clazz.getDeclaredFields()) {
|
field.setAccessible(true);
|
String fieldName = field.getName();
|
try {
|
Object value = field.get(obj);
|
if (value == null) {
|
} else if (value instanceof String) {
|
String valueStr = (String) value;
|
if (StringUtil.isBlank(valueStr)) {
|
continue;
|
}
|
map.put(fieldName, valueStr);
|
} else {
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(value);
|
Iterator<String> iterator = jsonObject.keySet().iterator();
|
while (iterator.hasNext()) {
|
String keyStr = iterator.next().toString();
|
if (StringUtil.isBlank(jsonObject.getString(keyStr))) {
|
iterator.remove();
|
}
|
}
|
if (jsonObject.isEmpty()) {
|
continue;
|
}
|
map.put(fieldName, jsonObject.toString());
|
}
|
} catch (Exception e) {
|
log.info("对象转map异常:" + e.getMessage());
|
}
|
}
|
return map;
|
}
|
|
public static Map<String, String> SFFClassCToMap(Class<?> clazz) {
|
Map<String, String> map = new HashMap<>();
|
System.out.println(clazz);
|
for (Field field : clazz.getDeclaredFields()) {
|
field.setAccessible(true);
|
String fieldName = field.getName();
|
try {
|
Object value = field.get(null);
|
if (value == null) {
|
} else if (value instanceof String) {
|
String valueStr = (String) value;
|
if (StringUtil.isBlank(valueStr)) {
|
continue;
|
}
|
map.put(fieldName, valueStr);
|
} else {
|
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(value);
|
Iterator<String> iterator = jsonObject.keySet().iterator();
|
while (iterator.hasNext()) {
|
String keyStr = iterator.next().toString();
|
if (StringUtil.isBlank(jsonObject.getString(keyStr))) {
|
iterator.remove();
|
}
|
}
|
if (jsonObject.isEmpty()) {
|
continue;
|
}
|
map.put(fieldName, jsonObject.toString());
|
}
|
} catch (Exception e) {
|
log.info("对象转map异常:" + e.getMessage());
|
}
|
}
|
return map;
|
}
|
}
|