From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/util/vip/VipApiUtil.java |  198 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 193 insertions(+), 5 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/vip/VipApiUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/vip/VipApiUtil.java
index f5b610a..7d6ed49 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/vip/VipApiUtil.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/vip/VipApiUtil.java
@@ -1,7 +1,27 @@
 package com.yeshi.fanli.util.vip;
 
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
+import java.util.UUID;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.yeshi.utils.StringUtil;
+
+import com.google.gson.Gson;
+import com.yeshi.fanli.dto.vip.VIPSearchResult;
+import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 
 /**
  * TODO 鏈畬鎴� 鍞搧浼氭帴鍙�
@@ -14,12 +34,28 @@
 	private final static String appKey = "f9e7f22f";
 	private final static String appSecret = "9B2291352497FAF42B2DF44BFCF62316";
 
-	private static String getSign() {
-
-		return null;
+	/**
+	 * 鑾峰彇绛惧悕
+	 * 
+	 * @param params
+	 * @return
+	 */
+	private static String getSign(Map<String, String> systemParams, JSONObject taskParams) {
+		List<String> list = new ArrayList<>();
+		for (Iterator<String> its = systemParams.keySet().iterator(); its.hasNext();) {
+			String key = its.next();
+			String value = systemParams.get(key);
+			list.add(key + value);
+		}
+		Collections.sort(list);
+		String source = "";
+		for (String st : list)
+			source += st;
+		source += taskParams.toString();
+		return StringUtil.MD5Hmac(source, appSecret);
 	}
 
-	private static Map<String, String> getBaseParams(String service, String method) {
+	private static Map<String, String> getSystemParams(String service, String method) {
 		Map<String, String> params = new HashMap<String, String>();
 		params.put("service", service);
 		params.put("method", method);
@@ -27,7 +63,159 @@
 		params.put("timestamp", System.currentTimeMillis() / 1000 + "");
 		params.put("format", "json");
 		params.put("appKey", appKey);
-		params.put("sign", null);
 		return params;
 	}
+
+	/**
+	 * 鍩虹璇锋眰
+	 * 
+	 * @param service
+	 * @param method
+	 * @param taskParams
+	 * @return
+	 */
+	private static String baseRequest(String service, String method, JSONObject taskParams) {
+		Map<String, String> systemParams = getSystemParams(service, method);
+		String sign = getSign(systemParams, taskParams);
+		systemParams.put("sign", sign);
+		String baseUrl = "https://gw.vipapis.com";
+		baseUrl += "?";
+		for (Iterator<String> its = systemParams.keySet().iterator(); its.hasNext();) {
+			String key = its.next();
+			String value = "";
+			try {
+				value = URLEncoder.encode(systemParams.get(key), "UTF-8");
+			} catch (UnsupportedEncodingException e) {
+				e.printStackTrace();
+			}
+			baseUrl += key + "=" + value + "&";
+		}
+		baseUrl = baseUrl.endsWith("&") ? baseUrl.substring(0, baseUrl.length() - 1) : baseUrl;
+		String result = post(baseUrl, taskParams.toString());
+		return result;
+	}
+
+	@SuppressWarnings("deprecation")
+	private static String post(String url, String body) {
+		HttpClient client = new HttpClient();
+		PostMethod method = new PostMethod(url);
+		method.addRequestHeader("Content-Type", "application/json;charset=UTF-8");
+		method.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
+		method.setRequestBody(body);
+		try {
+			client.executeMethod(method);
+			return method.getResponseBodyAsString();
+		} catch (HttpException e) {
+			e.printStackTrace();
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+
+	public static VIPSearchResult search() {
+		Map<String, String> taskParams = new HashMap<>();
+		taskParams.put("keyword", "澶瑰厠 鐢峰+ 甯﹀附");
+		taskParams.put("page", "1");
+		taskParams.put("pageSize", "20");
+		taskParams.put("requestId", UUID.randomUUID() + "");
+		// taskParams.put("priceStart", "");
+		// taskParams.put("priceEnd", "");
+		JSONObject root = new JSONObject();
+		root.put("request", JSONObject.fromObject(taskParams));
+		String result = baseRequest("com.vip.adp.api.open.service.UnionGoodsService", "query", root);
+		System.out.println(result);
+		List<VIPGoodsInfo> goodsList = new ArrayList<>();
+		JSONObject resultJson = JSONObject.fromObject(result);
+		Gson gson = new Gson();
+		if (resultJson.optInt("returnCode") == 0) {
+			resultJson = resultJson.optJSONObject("result");
+			int count = resultJson.optInt("total");
+			JSONArray array = resultJson.optJSONArray("goodsInfoList");
+			for (int i = 0; i < array.size(); i++) {
+				VIPGoodsInfo info = gson.fromJson(array.optJSONObject(i).toString(), VIPGoodsInfo.class);
+				if (info != null)
+					goodsList.add(info);
+			}
+			return new VIPSearchResult(goodsList, count);
+		}
+		return null;
+	}
+
+	/**
+	 * 鍟嗗搧ID杞摼
+	 * 
+	 * @param goodsId
+	 */
+	public static void convertLink(String goodsId, String tag) {
+		JSONObject taskParams = new JSONObject();
+		JSONArray goodsIdArray = new JSONArray();
+		goodsIdArray.add(goodsId);
+		taskParams.put("goodsIdList", goodsIdArray);
+		taskParams.put("chanTag", tag);
+		taskParams.put("requestId", UUID.randomUUID() + "");
+		String result = baseRequest("com.vip.adp.api.open.service.UnionUrlService", "genByGoodsId",
+				JSONObject.fromObject(taskParams));
+		System.out.println(result);
+	}
+
+	/**
+	 * 鏍规嵁鍟嗗搧ID鑾峰彇鍟嗗搧璇︽儏
+	 * 
+	 * @param goodsIdList
+	 * @return
+	 */
+	public static List<VIPGoodsInfo> getGoodsDetail(List<String> goodsIdList) {
+		JSONObject params = new JSONObject();
+		params.put("goodsIdList", goodsIdList);
+		params.put("requestId", UUID.randomUUID());
+		String result = baseRequest("com.vip.adp.api.open.service.UnionGoodsService", "getByGoodsIds",
+				JSONObject.fromObject(params));
+		System.out.println(result);
+		JSONObject resultJson = JSONObject.fromObject(result);
+		Gson gson = new Gson();
+		List<VIPGoodsInfo> goodsList = new ArrayList<>();
+		if (resultJson.optInt("returnCode") == 0) {
+			JSONArray array = resultJson.optJSONArray("result");
+			for (int i = 0; i < array.size(); i++) {
+				VIPGoodsInfo info = gson.fromJson(array.optJSONObject(i).toString(), VIPGoodsInfo.class);
+				if (info != null)
+					goodsList.add(info);
+			}
+			return goodsList;
+		}
+		return null;
+	}
+
+	/**
+	 * 鑾峰彇鍟嗗搧璇︽儏
+	 * 
+	 * @param goodsId
+	 * @return
+	 */
+	public static VIPGoodsInfo getGoodsDetail(String goodsId) {
+		List<String> goodsIdList = new ArrayList<>();
+		goodsIdList.add(goodsId);
+		List<VIPGoodsInfo> goodsList = getGoodsDetail(goodsIdList);
+		if (goodsList == null || goodsList.size() == 0)
+			return null;
+		return goodsList.get(0);
+	}
+
+	public static void getOrderList() {
+		JSONObject params = new JSONObject();
+		// params.put("status", 1);
+		params.put("orderTimeStart", System.currentTimeMillis() - 1000 * 60 * 60L);
+		params.put("orderTimeEnd", System.currentTimeMillis());
+		params.put("page", 1);
+		// params.put("pageSize", );
+		// params.put("updateTimeStart", );
+		// params.put("updateTimeEnd", );
+		params.put("requestId", UUID.randomUUID());
+		JSONObject root = new JSONObject();
+		root.put("queryModel", params);
+		String result = baseRequest("com.vip.adp.api.open.service.UnionOrderService", "orderList", root);
+		System.out.println(result);
+	}
+
 }

--
Gitblit v1.8.0