|
@@ -1,13 +1,17 @@
|
|
|
package com.redxun.search.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.nacos.common.utils.MD5Utils;
|
|
|
import com.redxun.search.service.SearchService;
|
|
|
import com.redxun.search.utils.HttpRequestHelper;
|
|
|
+import com.redxun.search.utils.MD5;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* 文件名: SearchServiceImpl
|
|
@@ -18,6 +22,7 @@ import java.util.Map;
|
|
|
* 修改时间:
|
|
|
* 修改内容:
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@Service
|
|
|
public class SearchServiceImpl implements SearchService {
|
|
|
|
|
@@ -33,7 +38,11 @@ public class SearchServiceImpl implements SearchService {
|
|
|
paramMap.put("pageSize",pageSize);
|
|
|
paramMap.put("range",range);
|
|
|
paramMap.put("secretType",secretType);
|
|
|
- headerMap.put("signature", httpServletRequest.getHeader("signature"));
|
|
|
+ // 对signature进行加密
|
|
|
+ Map<String, String> params = getParams(httpServletRequest);
|
|
|
+ String sign = makeSign(params, "uyjg4h61j5y3t59t");
|
|
|
+ // String sign = "uyjg4h61j5y3t59t";
|
|
|
+ headerMap.put("signature", sign);
|
|
|
headerMap.put("businessKey", httpServletRequest.getHeader("businessKey"));
|
|
|
JSONObject respone = HttpRequestHelper.sendRequest(headerMap,paramMap,URL+"/api-kmsearch/search/search");
|
|
|
if(null != respone && 200 == respone.getIntValue("code")) {
|
|
@@ -48,4 +57,51 @@ public class SearchServiceImpl implements SearchService {
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取请求参数
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, String> getParams(HttpServletRequest request) {// 未考虑数组排序之后逗号连接
|
|
|
+ Map<String, String[]> map = request.getParameterMap();
|
|
|
+ SortedMap<String, String> result = new TreeMap<>();
|
|
|
+ for (Map.Entry<String, String[]> entry : map.entrySet()) {
|
|
|
+ if (entry.getKey().equalsIgnoreCase("file")) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String[] value = entry.getValue();
|
|
|
+ if (value != null && value.length > 0) {
|
|
|
+ result.put(entry.getKey(), Stream.of(value).sorted().collect(Collectors.joining(",")));
|
|
|
+ } else {
|
|
|
+ result.put(entry.getKey(), null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 制作签名
|
|
|
+ * @param params
|
|
|
+ * @param secret
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String makeSign(Map<String, String> params, String secret) {
|
|
|
+ List<String> keys = new ArrayList<>(params.keySet());
|
|
|
+ Collections.sort(keys);
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ for (int i = 0; i < keys.size(); i++) {
|
|
|
+ String key = keys.get(i);
|
|
|
+ sb.append(key);
|
|
|
+ // sb.append("=");
|
|
|
+ sb.append(params.get(key));
|
|
|
+ // sb.append("&");
|
|
|
+ }
|
|
|
+ // if(sb.length()>0) {
|
|
|
+ // sb.deleteCharAt(sb.length()-1);
|
|
|
+ // }
|
|
|
+ sb.append(secret);
|
|
|
+ log.info("加密后的secret -> {}",MD5.encrypt(sb.toString()).toLowerCase());
|
|
|
+ return MD5.encrypt(sb.toString()).toLowerCase();
|
|
|
+ }
|
|
|
}
|