From d0c1f24b2be8e4a547d939710a12888d4f6714c6 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 06 六月 2019 15:53:46 +0800 Subject: [PATCH] 新版大淘客数据添加 --- fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java | 244 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 244 insertions(+), 0 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java b/fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java index 915fd06..b0cadc7 100644 --- a/fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java +++ b/fanli/src/main/java/com/yeshi/fanli/util/dataoke/DaTaoKeApiUtil.java @@ -1,10 +1,16 @@ package com.yeshi.fanli.util.dataoke; import java.io.IOException; +import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -13,11 +19,16 @@ import org.yeshi.utils.HttpUtil; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.dto.dataoke.DaTaoKeApiResult; +import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult; import com.yeshi.fanli.dto.taobao.TaoBaoShopDTO; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail; +import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -25,6 +36,28 @@ public class DaTaoKeApiUtil { final static String API_KEY = "a083abb893"; final static String API_KEY_2 = "b7a5ea2cd9"; + + final static String APP_KEY = "5cf764636d373"; + final static String APP_KEY_SECRET = "5ea3c24900743f3aa531fb264f9824f2"; + + final static String APP_KEY_2 = "5cf75b0f2c0e4"; + final static String APP_KEY_SECRET_2 = "b14f1fa115129a447937ca998b311d1e"; + + // 鎺掑簭鍊� + + final public static int SORT_DEFAULT = 0; + final public static int SORT_CREATETIME = 1; + final public static int SORT_SALES = 2; + final public static int SORT_COUPON_NUM = 3; + final public static int SORT_COMMISSION = 4; + final public static int SORT_PRICE_HIGH_TO_LOW = 5; + final public static int SORT_PRICE_LOW_TO_HIGH = 6; + + final static TaoKeAppInfo[] APP_KEYS = new TaoKeAppInfo[] { new TaoKeAppInfo(APP_KEY, APP_KEY_SECRET), + new TaoKeAppInfo(APP_KEY_2, APP_KEY_SECRET_2) }; + + final static String[] APP_SECRETS = new String[] { APP_KEY_SECRET, APP_KEY_SECRET_2 }; + static Gson gson = new Gson(); public static DaTaoKeApiResult goodsList(int page) { @@ -97,7 +130,218 @@ e.printStackTrace(); } return taoBaoShopDTO; + } + private static TaoKeAppInfo getRandomApp() { + int pos = (int) (Math.random() * APP_KEYS.length); + return APP_KEYS[pos]; + } + + public static DaTaoKeGoodsResult listAll(String pageId) { + TaoKeAppInfo app = getRandomApp(); + DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult(); + Map<String, String> params = new TreeMap<>(); + params.put("version", "v1.0.0"); + params.put("appKey", app.getAppKey()); + params.put("pageSize", 200 + ""); + if (!StringUtil.isNullOrEmpty(pageId)) { + params.put("pageId", pageId); + } + params.put("sign", getSign(params, app.getAppSecret())); + String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-goods-list", params, new HashMap<>()); + JSONObject json = JSONObject.fromObject(result); + JSONObject dataJson = json.optJSONObject("data"); + if (dataJson != null) { + JSONArray array = dataJson.optJSONArray("list"); + if (array != null) { + String data = array.toString(); + Type type = new TypeToken<List<DaTaoKeDetailV2>>() { + }.getType(); + + List<DaTaoKeDetailV2> list = gson.fromJson(data, type); + daTaoKeGoodsResult.setGoodsList(list); + } + daTaoKeGoodsResult.setPageId(dataJson.optString("pageId")); + daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum")); + } + return daTaoKeGoodsResult; + } + + /** + * 澶辨晥鍟嗗搧 + * + * @param pageId + * @return + */ + public static DaTaoKeGoodsResult getInvalidGoodsList(String pageId, String startTime, String endTime) { + TaoKeAppInfo app = getRandomApp(); + DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult(); + Map<String, String> params = new TreeMap<>(); + params.put("version", "v1.0.0"); + params.put("appKey", app.getAppKey()); + params.put("pageSize", 200 + ""); + if (!StringUtil.isNullOrEmpty(startTime)) + params.put("startTime", startTime); + + if (!StringUtil.isNullOrEmpty(endTime)) + params.put("endTime", endTime); + + if (!StringUtil.isNullOrEmpty(pageId)) + params.put("pageId", pageId); + + params.put("sign", getSign(params, app.getAppSecret())); + String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-stale-goods-by-time", params, + new HashMap<>()); + JSONObject json = JSONObject.fromObject(result); + JSONObject dataJson = json.optJSONObject("data"); + if (dataJson != null) { + JSONArray array = dataJson.optJSONArray("list"); + if (array != null) { + String data = array.toString(); + Type type = new TypeToken<List<DaTaoKeDetailV2>>() { + }.getType(); + + List<DaTaoKeDetailV2> list = gson.fromJson(data, type); + daTaoKeGoodsResult.setGoodsList(list); + } + daTaoKeGoodsResult.setPageId(dataJson.optString("pageId")); + daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum")); + } + return daTaoKeGoodsResult; + } + + public static DaTaoKeGoodsResult getNewGoodsList(String pageId, String startTime, String endTime) { + TaoKeAppInfo app = getRandomApp(); + DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult(); + Map<String, String> params = new TreeMap<>(); + params.put("version", "v1.0.0"); + params.put("appKey", app.getAppKey()); + params.put("pageSize", 200 + ""); + if (!StringUtil.isNullOrEmpty(startTime)) + params.put("startTime", startTime); + + if (!StringUtil.isNullOrEmpty(endTime)) + params.put("endTime", endTime); + + if (!StringUtil.isNullOrEmpty(pageId)) + params.put("pageId", pageId); + + params.put("sign", getSign(params, app.getAppSecret())); + String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/pull-goods-by-time", params, + new HashMap<>()); + JSONObject json = JSONObject.fromObject(result); + JSONObject dataJson = json.optJSONObject("data"); + if (dataJson != null) { + JSONArray array = dataJson.optJSONArray("list"); + if (array != null) { + String data = array.toString(); + Type type = new TypeToken<List<DaTaoKeDetailV2>>() { + }.getType(); + + List<DaTaoKeDetailV2> list = gson.fromJson(data, type); + daTaoKeGoodsResult.setGoodsList(list); + } + daTaoKeGoodsResult.setPageId(dataJson.optString("pageId")); + daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum")); + } + return daTaoKeGoodsResult; + } + + public static DaTaoKeGoodsResult getUpdateGoodsList(String pageId, String startTime, String endTime) { + TaoKeAppInfo app = getRandomApp(); + DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult(); + Map<String, String> params = new TreeMap<>(); + params.put("version", "v1.0.0"); + params.put("appKey", app.getAppKey()); + params.put("pageSize", 200 + ""); + if (!StringUtil.isNullOrEmpty(startTime)) + params.put("startTime", startTime); + + if (!StringUtil.isNullOrEmpty(endTime)) + params.put("endTime", endTime); + + if (!StringUtil.isNullOrEmpty(pageId)) + params.put("pageId", pageId); + + params.put("sign", getSign(params, app.getAppSecret())); + String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-newest-goods", params, new HashMap<>()); + JSONObject json = JSONObject.fromObject(result); + JSONObject dataJson = json.optJSONObject("data"); + if (dataJson != null) { + JSONArray array = dataJson.optJSONArray("list"); + if (array != null) { + String data = array.toString(); + Type type = new TypeToken<List<DaTaoKeDetailV2>>() { + }.getType(); + + List<DaTaoKeDetailV2> list = gson.fromJson(data, type); + daTaoKeGoodsResult.setGoodsList(list); + } + daTaoKeGoodsResult.setPageId(dataJson.optString("pageId")); + daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum")); + } + return daTaoKeGoodsResult; + } + + public static DaTaoKeGoodsResult search(String key, List<Integer> cidList, int page, int pageSize, int sort) { + + TaoKeAppInfo app = getRandomApp(); + DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult(); + Map<String, String> params = new TreeMap<>(); + params.put("version", "v1.0.0"); + params.put("appKey", app.getAppKey()); + params.put("pageSize", 200 + ""); + params.put("pageId", page + ""); + + String cids = ""; + if (cidList != null && cidList.size() > 0) + for (Integer cid : cidList) { + cids += cid + ","; + } + + if (cids.endsWith(",")) + cids = cids.substring(0, cids.length() - 1); + if (!StringUtil.isNullOrEmpty(cids)) + params.put("cids", cids); + + params.put("keyWords", key); + params.put("sort", sort + ""); + params.put("sign", getSign(params, app.getAppSecret())); + String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params, + new HashMap<>()); + JSONObject json = JSONObject.fromObject(result); + JSONObject dataJson = json.optJSONObject("data"); + if (dataJson != null) { + JSONArray array = dataJson.optJSONArray("list"); + if (array != null) { + String data = array.toString(); + Type type = new TypeToken<List<DaTaoKeDetailV2>>() { + }.getType(); + + List<DaTaoKeDetailV2> list = gson.fromJson(data, type); + daTaoKeGoodsResult.setGoodsList(list); + } + daTaoKeGoodsResult.setPageId(dataJson.optString("pageId")); + daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum")); + } + return daTaoKeGoodsResult; + } + + private static String getSign(Map<String, String> map, String secretKey) { + if (map.size() == 0) { + return ""; + } + StringBuffer sb = new StringBuffer(""); + Set<String> keySet = map.keySet(); + Iterator<String> iter = keySet.iterator(); + while (iter.hasNext()) { + String key = iter.next(); + sb.append("&" + key + "=" + map.get(key)); + } + sb.deleteCharAt(0); + String signStr = ""; + signStr = sb.toString() + "&key=" + secretKey; + return StringUtil.Md5(signStr).toUpperCase(); } public static TaoBaoShopDTO convertTaoBaoShopDTO(JSONObject data) { -- Gitblit v1.8.0