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