admin
2020-11-25 604be616a6ba9e2604c8616be562c5a1c49f073c
facade-goods/src/main/java/com/yeshi/goods/facade/utils/taobao/DaTaoKeApiUtil.java
@@ -14,6 +14,7 @@
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.io.IOUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
@@ -23,778 +24,816 @@
import org.yeshi.utils.StringUtil;
import org.yeshi.utils.TimeUtil;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.*;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.*;
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 API_CHARSET = "ISO-8859-1";
   final static String APP_KEY_2 = "5cf75b0f2c0e4";
   final static String APP_KEY_SECRET_2 = "b14f1fa115129a447937ca998b311d1e";
    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 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 String APP_KEY_2 = "5cf75b0f2c0e4";
    final static String APP_KEY_SECRET_2 = "b14f1fa115129a447937ca998b311d1e";
   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 };
    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;
   static Gson gson = null;
   static {
      gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
         @Override
         public boolean shouldSkipField(FieldAttributes f) {
            return f.getName().equals("createTime");// 忽略createTime的解析
         }
    final static TaoKeAppInfo[] APP_KEYS = new TaoKeAppInfo[]{new TaoKeAppInfo(APP_KEY, APP_KEY_SECRET),
            new TaoKeAppInfo(APP_KEY_2, APP_KEY_SECRET_2)};
         @Override
         public boolean shouldSkipClass(Class<?> clazz) {
            return false;
         }
      }).create();
   }
    final static String[] APP_SECRETS = new String[]{APP_KEY_SECRET, APP_KEY_SECRET_2};
   private static String get(String url) {
      HttpClient client = new HttpClient();
      try {
         client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
         client.getHttpConnectionManager().getParams().setSoTimeout(5000);
         GetMethod method = new GetMethod(url);
         client.executeMethod(method);
         return method.getResponseBodyAsString();
      } catch (HttpException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
      return "";
   }
    static Gson gson = null;
   private static String request(String url) {
      String result = null;
    static {
        gson = new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
            @Override
            public boolean shouldSkipField(FieldAttributes f) {
                return f.getName().equals("createTime");// 忽略createTime的解析
            }
      while (result == null) {
         try {
            result = get(url);
            if ((result != null && result.startsWith("<html>")) || StringUtil.isNullOrEmpty(result))
               result = null;
         } catch (Exception e) {
            try {
               Thread.sleep(400);
            } catch (InterruptedException e1) {
            }
         }
      }
            @Override
            public boolean shouldSkipClass(Class<?> clazz) {
                return false;
            }
        }).create();
    }
      return result;
   }
    private static String get(String url) {
        HttpClient client = new HttpClient();
        try {
            client.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
            client.getHttpConnectionManager().getParams().setSoTimeout(5000);
            GetMethod method = new GetMethod(url);
            client.executeMethod(method);
            return method.getResponseBodyAsString();
        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
   /**
    * 获取大淘客品牌优选 品牌id
    *
    * @return
    */
   public static List<String> getBrandIdList() {
      List<String> listId = new ArrayList<>();
      try {
         Document doc = Jsoup.connect("http://www.dataoke.com/brandFilter?cid=0&sort=1&main=0").get();
         Element root = doc.getElementsByClass("brand-list").get(0);
         Elements items = root.getElementsByTag("a");
         for (int i = 0; i < items.size(); i++) {
            String id = items.get(i).attr("href").split("\\?")[1].replace("id=", "").trim();
            listId.add(id);
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
      return listId;
   }
    private static String baseGet(String url, Map<String, String> params) {
        HttpClient client = new HttpClient();
        try {
            Iterator<String> keys = params.keySet().iterator();
            String key;
            for (url = url + "?"; keys.hasNext(); url = url + String.format("%s=%s&", key, URLEncoder.encode((String) params.get(key), "UTF-8"))) {
                key = keys.next();
            }
   /**
    * 获取店铺下前4个商品、店铺介绍
    *
    * @param brandId
    * @return
    */
   public static TaoBaoShopDTO getDynamicShopInfo(String brandId) {
      if (brandId == null) {
         return null;
      }
      TaoBaoShopDTO taoBaoShopDTO = null;
            GetMethod method = new GetMethod(url);
            client.executeMethod(method);
            InputStream inputStream = method.getResponseBodyAsStream();
            String result = IOUtils.toString(inputStream, API_CHARSET);
            return result;
        } catch (Exception var7) {
            var7.printStackTrace();
            return "";
        }
    }
      Document doc;
      try {
         doc = Jsoup.connect("http://www.dataoke.com/brandSingle?id=" + brandId).get();
         Elements els = doc.getElementsByTag("script");
         for (int i = 0; i < els.size(); i++) {
            if (els.get(i).html().contains("var brandData")) {
               JSONObject data = JSONObject
                     .fromObject(els.get(i).html().replace("var brandData =", "").trim().split("};")[0] + "}");
               taoBaoShopDTO = new TaoBaoShopDTO();
               JSONObject item = data.optJSONObject("act");
               taoBaoShopDTO.setSellerId(item.optLong("seller_id"));
               taoBaoShopDTO.setBrandId(item.optString("brand_id"));
               taoBaoShopDTO.setBrandDes(item.optString("brand_des"));
               taoBaoShopDTO.setShopIcon(item.optString("brand_logo"));
               taoBaoShopDTO.setUserType(0);
    private static String request(String url) {
        String result = null;
               // 商品信息
               taoBaoShopDTO = getDynamicShopGoods(brandId, taoBaoShopDTO);
        while (result == null) {
            try {
                result = get(url);
                if ((result != null && result.startsWith("<html>")) || StringUtil.isNullOrEmpty(result))
                    result = null;
            } catch (Exception e) {
                try {
                    Thread.sleep(400);
                } catch (InterruptedException e1) {
                }
            }
        }
               break;
            }
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
      return taoBaoShopDTO;
   }
        return result;
    }
   private static TaoKeAppInfo getRandomApp() {
      int pos = (int) (Math.random() * APP_KEYS.length);
      return APP_KEYS[pos];
   }
    /**
     * 获取大淘客品牌优选 品牌id
     *
     * @return
     */
    public static List<String> getBrandIdList() {
        List<String> listId = new ArrayList<>();
        try {
            Document doc = Jsoup.connect("http://www.dataoke.com/brandFilter?cid=0&sort=1&main=0").get();
            Element root = doc.getElementsByClass("brand-list").get(0);
            Elements items = root.getElementsByTag("a");
            for (int i = 0; i < items.size(); i++) {
                String id = items.get(i).attr("href").split("\\?")[1].replace("id=", "").trim();
                listId.add(id);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listId;
    }
   public static DaTaoKeGoodsResult listAll(String pageId) {
      TaoKeAppInfo app = getRandomApp();
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.1.0");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", 200 + "");
      // params.put("sort", "1");
      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) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
    /**
     * 获取店铺下前4个商品、店铺介绍
     *
     * @param brandId
     * @return
     */
    public static TaoBaoShopDTO getDynamicShopInfo(String brandId) {
        if (brandId == null) {
            return null;
        }
        TaoBaoShopDTO taoBaoShopDTO = null;
   /**
    * 失效商品
    *
    * @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.1");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", 200 + "");
      if (!StringUtil.isNullOrEmpty(startTime))
         params.put("startTime", startTime);
        Document doc;
        try {
            doc = Jsoup.connect("http://www.dataoke.com/brandSingle?id=" + brandId).get();
            Elements els = doc.getElementsByTag("script");
            for (int i = 0; i < els.size(); i++) {
                if (els.get(i).html().contains("var brandData")) {
      if (!StringUtil.isNullOrEmpty(endTime))
         params.put("endTime", endTime);
                    JSONObject data = JSONObject
                            .fromObject(els.get(i).html().replace("var brandData =", "").trim().split("};")[0] + "}");
                    taoBaoShopDTO = new TaoBaoShopDTO();
                    JSONObject item = data.optJSONObject("act");
                    taoBaoShopDTO.setSellerId(item.optLong("seller_id"));
                    taoBaoShopDTO.setBrandId(item.optString("brand_id"));
                    taoBaoShopDTO.setBrandDes(item.optString("brand_des"));
                    taoBaoShopDTO.setShopIcon(item.optString("brand_logo"));
                    taoBaoShopDTO.setUserType(0);
      if (!StringUtil.isNullOrEmpty(pageId))
         params.put("pageId", pageId);
                    // 商品信息
                    taoBaoShopDTO = getDynamicShopGoods(brandId, taoBaoShopDTO);
      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<>());
      System.out.println(result);
      JSONObject json = JSONObject.fromObject(result);
      JSONObject dataJson = json.optJSONObject("data");
      if (dataJson != null) {
         JSONArray array = dataJson.optJSONArray("list");
         if (array != null) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return taoBaoShopDTO;
    }
   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.1.0");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", 200 + "");
      if (!StringUtil.isNullOrEmpty(startTime))
         params.put("startTime", startTime);
    private static TaoKeAppInfo getRandomApp() {
        int pos = (int) (Math.random() * APP_KEYS.length);
        return APP_KEYS[pos];
    }
      if (!StringUtil.isNullOrEmpty(endTime))
         params.put("endTime", endTime);
    public static DaTaoKeGoodsResult listAll(String pageId) {
        TaoKeAppInfo app = getRandomApp();
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.1.0");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", 200 + "");
        // params.put("sort", "1");
        if (!StringUtil.isNullOrEmpty(pageId)) {
            params.put("pageId", pageId);
        }
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/get-goods-list", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
      if (!StringUtil.isNullOrEmpty(pageId))
         params.put("pageId", pageId);
    /**
     * 失效商品
     *
     * @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.1");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", 200 + "");
        if (!StringUtil.isNullOrEmpty(startTime))
            params.put("startTime", startTime);
      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) {
        if (!StringUtil.isNullOrEmpty(endTime))
            params.put("endTime", endTime);
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
        if (!StringUtil.isNullOrEmpty(pageId))
            params.put("pageId", pageId);
   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.1.0");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", 200 + "");
      if (!StringUtil.isNullOrEmpty(startTime))
         params.put("startTime", startTime);
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/get-stale-goods-by-time", params);
        System.out.println(result);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
      if (!StringUtil.isNullOrEmpty(endTime))
         params.put("endTime", endTime);
    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.1.0");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", 200 + "");
        if (!StringUtil.isNullOrEmpty(startTime))
            params.put("startTime", startTime);
      if (!StringUtil.isNullOrEmpty(pageId))
         params.put("pageId", pageId);
        if (!StringUtil.isNullOrEmpty(endTime))
            params.put("endTime", endTime);
      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) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
        if (!StringUtil.isNullOrEmpty(pageId))
            params.put("pageId", pageId);
   public static DaTaoKeDetailV2 getGoodsDetail(Long id) {
      TaoKeAppInfo app = getRandomApp();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.1.0");
      params.put("appKey", app.getAppKey());
      params.put("id", id + "");
      params.put("sign", getSign(params, app.getAppSecret()));
      String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-goods-details", params,
            new HashMap<>());
      JSONObject json = JSONObject.fromObject(result);
      JSONObject dataJson = json.optJSONObject("data");
      if (dataJson != null) {
         return parseDaTaoKeDetailV2(dataJson);
      }
      return null;
   }
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/pull-goods-by-time", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
   public static DaTaoKeDetailV2 getGoodsDetailByGoodsId(Long goodsId) {
      TaoKeAppInfo app = getRandomApp();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.1.1");
      params.put("appKey", app.getAppKey());
      params.put("goodsId", goodsId + "");
      params.put("sign", getSign(params, app.getAppSecret()));
      String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-goods-details", params,
            new HashMap<>());
      System.out.println(result);
      JSONObject json = JSONObject.fromObject(result);
      JSONObject dataJson = json.optJSONObject("data");
      if (dataJson != null) {
         return parseDaTaoKeDetailV2(dataJson);
      }
      return null;
   }
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
   private static String requestGet(String url, Map<String, String> params) {
      Iterator<String> keys = params.keySet().iterator();
      url += "?";
      while (keys.hasNext()) {
         String key = keys.next();
         try {
            url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8"));
         } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
         }
      }
      return HttpUtil.get(url, 10000);
   }
    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.1.0");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", 200 + "");
        if (!StringUtil.isNullOrEmpty(startTime))
            params.put("startTime", startTime);
   public static DaTaoKeGoodsResult search(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
         BigDecimal priceUpperLimit, int page, int pageSize, Integer sort) {
        if (!StringUtil.isNullOrEmpty(endTime))
            params.put("endTime", endTime);
      TaoKeAppInfo app = getRandomApp();
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v2.1.0");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", pageSize + "");
      params.put("pageId", page + "");
      if (priceLowerLimit != null)
         params.put("priceLowerLimit", priceLowerLimit + "");
      if (priceUpperLimit != null)
         params.put("priceUpperLimit", priceUpperLimit + "");
      String cids = "";
      if (cidList != null && cidList.size() > 0)
         for (Integer cid : cidList) {
            cids += cid + ",";
         }
        if (!StringUtil.isNullOrEmpty(pageId))
            params.put("pageId", pageId);
      if (cids.endsWith(","))
         cids = cids.substring(0, cids.length() - 1);
      if (!StringUtil.isNullOrEmpty(cids))
         params.put("cids", cids);
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/get-newest-goods", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
      if (StringUtil.isNullOrEmpty(key))
         key = "";
      params.put("keyWords", key);
    public static DaTaoKeDetailV2 getGoodsDetail(Long id) {
        TaoKeAppInfo app = getRandomApp();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.1.0");
        params.put("appKey", app.getAppKey());
        params.put("id", id + "");
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/get-goods-details", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            return parseDaTaoKeDetailV2(dataJson);
        }
        return null;
    }
    public static DaTaoKeDetailV2 getGoodsDetailByGoodsId(Long goodsId) {
        TaoKeAppInfo app = getRandomApp();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.1.1");
        params.put("appKey", app.getAppKey());
        params.put("goodsId", goodsId + "");
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/get-goods-details", params);
        System.out.println(result);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            return parseDaTaoKeDetailV2(dataJson);
        }
        return null;
    }
    private static String requestGet(String url, Map<String, String> params) {
        Iterator<String> keys = params.keySet().iterator();
        url += "?";
        while (keys.hasNext()) {
            String key = keys.next();
            try {
                url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        String result = HttpUtil.get(url, 10000);
        try {
            if (result != null)
                return new String(result.getBytes("ISO-8859-1"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
        }
        return result;
    }
    public static DaTaoKeGoodsResult search(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
                                            BigDecimal priceUpperLimit, int page, int pageSize, Integer sort) {
        TaoKeAppInfo app = getRandomApp();
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v2.1.0");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", pageSize + "");
        params.put("pageId", page + "");
        if (priceLowerLimit != null)
            params.put("priceLowerLimit", priceLowerLimit + "");
        if (priceUpperLimit != null)
            params.put("priceUpperLimit", priceUpperLimit + "");
        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);
        if (StringUtil.isNullOrEmpty(key))
            key = "";
        params.put("keyWords", key);
        if (sort != null)
            params.put("sort", sort + "");
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = requestGet("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
    public static DaTaoKeGoodsResult search(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
                                            BigDecimal priceUpperLimit, Integer couponPriceLowerLimit, int page, int pageSize, Integer sort) {
        TaoKeAppInfo app = getRandomApp();
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v2.1.0");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", pageSize + "");
        params.put("pageId", page + "");
        if (priceLowerLimit != null)
            params.put("priceLowerLimit", priceLowerLimit + "");
        if (priceUpperLimit != null)
            params.put("priceUpperLimit", priceUpperLimit + "");
        if (couponPriceLowerLimit != null)
            params.put("couponPriceLowerLimit", couponPriceLowerLimit + "");
        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);
        if (StringUtil.isNullOrEmpty(key))
            key = "%";
        params.put("keyWords", key);
        if (sort != null)
            params.put("sort", sort + "");
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = requestGet("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
      if (sort != null)
         params.put("sort", sort + "");
      params.put("sign", getSign(params, app.getAppSecret()));
      String result = requestGet("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params);
    /**
     * 商品列表
     *
     * @param key
     * @param cidList
     * @param priceLowerLimit
     * @param priceUpperLimit
     * @param couponPriceLowerLimit
     * @param pageId
     * @param pageSize
     * @param sort
     * @return
     */
    public static DaTaoKeGoodsResult getGoodsList(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
                                                  BigDecimal priceUpperLimit, Integer couponPriceLowerLimit, int pageId, int pageSize, Integer sort) {
        TaoKeAppInfo app = getRandomApp();
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.1.0");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", pageSize + "");
        params.put("pageId", pageId + "");
      JSONObject json = JSONObject.fromObject(result);
      JSONObject dataJson = json.optJSONObject("data");
      if (dataJson != null) {
         JSONArray array = dataJson.optJSONArray("list");
         if (array != null) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
        if (priceLowerLimit != null)
            params.put("priceLowerLimit", priceLowerLimit + "");
        if (priceUpperLimit != null)
            params.put("priceUpperLimit", priceUpperLimit + "");
   public static DaTaoKeGoodsResult search(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
         BigDecimal priceUpperLimit, Integer couponPriceLowerLimit, int page, int pageSize, Integer sort) {
        if (couponPriceLowerLimit != null)
            params.put("couponPriceLowerLimit", couponPriceLowerLimit + "");
      TaoKeAppInfo app = getRandomApp();
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v2.1.0");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", pageSize + "");
      params.put("pageId", page + "");
      if (priceLowerLimit != null)
         params.put("priceLowerLimit", priceLowerLimit + "");
      if (priceUpperLimit != null)
         params.put("priceUpperLimit", priceUpperLimit + "");
        if (sort != null)
            params.put("sort", sort + "");
      if (couponPriceLowerLimit != null)
         params.put("couponPriceLowerLimit", couponPriceLowerLimit + "");
        if (cidList != null && cidList.size() > 0) {
            String cids = "";
            for (int cid : cidList)
                cids += cid + ",";
            cids = cids.endsWith(",") ? cids.substring(0, cids.length() - 1) : cids;
      String cids = "";
      if (cidList != null && cidList.size() > 0)
         for (Integer cid : cidList) {
            cids += cid + ",";
         }
            params.put("cids", cids + "");
        }
      if (cids.endsWith(","))
         cids = cids.substring(0, cids.length() - 1);
      if (!StringUtil.isNullOrEmpty(cids))
         params.put("cids", cids);
        params.put("sign", getSign(params, app.getAppSecret()));
        String result = baseGet("https://openapi.dataoke.com/api/goods/get-goods-list", params);
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
      if (StringUtil.isNullOrEmpty(key))
         key = "%";
      params.put("keyWords", key);
    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();
    }
      if (sort != null)
         params.put("sort", sort + "");
      params.put("sign", getSign(params, app.getAppSecret()));
      String result = requestGet("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params);
    /**
     * 获取店铺下前4个商品、店铺介绍
     *
     * @param brandId
     * @return
     */
    public static TaoBaoShopDTO getDynamicShopGoods(String brandId, TaoBaoShopDTO taoBaoShopDTO) {
        if (brandId == null) {
            return taoBaoShopDTO;
        }
      JSONObject json = JSONObject.fromObject(result);
      JSONObject dataJson = json.optJSONObject("data");
      if (dataJson != null) {
         JSONArray array = dataJson.optJSONArray("list");
         if (array != null) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
        int userType = 0;
        List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
   /**
    * 商品列表
    *
    * @param key
    * @param cidList
    * @param priceLowerLimit
    * @param priceUpperLimit
    * @param couponPriceLowerLimit
    * @param pageId
    * @param pageSize
    * @param sort
    * @return
    */
   public static DaTaoKeGoodsResult getGoodsList(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
         BigDecimal priceUpperLimit, Integer couponPriceLowerLimit, int pageId, int pageSize, Integer sort) {
      TaoKeAppInfo app = getRandomApp();
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.1.0");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", pageSize + "");
      params.put("pageId", pageId + "");
        String result = baseGet("http://www.dataoke.com/brandGoods?id=" + brandId + "&page=1", new HashMap<>());
        JSONObject json = JSONObject.fromObject(result);
        JSONArray arrayGoods = json.optJSONArray("goods");
      if (priceLowerLimit != null)
         params.put("priceLowerLimit", priceLowerLimit + "");
      if (priceUpperLimit != null)
         params.put("priceUpperLimit", priceUpperLimit + "");
        for (int i = 0; i < arrayGoods.size(); i++) {
            if (i >= 2) {
                break;
            }
            JSONObject itemGoods = arrayGoods.optJSONObject(i);
      if (couponPriceLowerLimit != null)
         params.put("couponPriceLowerLimit", couponPriceLowerLimit + "");
            TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
            taoBaoGoods.setAuctionId(itemGoods.optLong("goodsid"));
            taoBaoGoods.setBiz30day(itemGoods.optInt("xiaoliang"));
            taoBaoGoods.setCouponAmount(new BigDecimal(itemGoods.optString("quan_jine")));
            taoBaoGoods.setCouponInfo(String.format("满%s元减%s元", itemGoods.optString("quan_tiaojian"),
                    MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(itemGoods.optString("quan_jine")))));
            taoBaoGoods.setCouponLeftCount(itemGoods.optInt("quan_num"));
            taoBaoGoods.setCouponStartFee(new BigDecimal(itemGoods.optString("quan_tiaojian")));
            taoBaoGoods.setCouponTotalCount(itemGoods.optInt("quan_num"));
            taoBaoGoods.setPictUrl(itemGoods.optString("pic"));
            taoBaoGoods.setPictUrlWhite(itemGoods.optString("pic"));
            taoBaoGoods.setSellerId(itemGoods.optLong("seller_id"));
            taoBaoGoods.setShopTitle("");
            taoBaoGoods.setTitle(itemGoods.optString("title"));
            taoBaoGoods.setUserType(itemGoods.optInt("istmall"));
            taoBaoGoods.setZkPrice(new BigDecimal(itemGoods.optString("yuanjia")));
            taoBaoGoods.setTkRate(new BigDecimal(itemGoods.optString("yongjin")));
            taoBaoGoods.setTkCommFee(new BigDecimal("0"));
            taoBaoGoods.setState(0);
      if (sort != null)
         params.put("sort", sort + "");
            listGoods.add(taoBaoGoods);
      if (cidList != null && cidList.size() > 0) {
         String cids = "";
         for (int cid : cidList)
            cids += cid + ",";
         cids = cids.endsWith(",") ? cids.substring(0, cids.length() - 1) : cids;
            userType = itemGoods.optInt("istmall");
        }
        taoBaoShopDTO.setUserType(userType);
        taoBaoShopDTO.setListGoods(listGoods);
        return taoBaoShopDTO;
    }
         params.put("cids", cids + "");
      }
    public static int RANK_TYPE_TIME = 1;// 实时
    public static int RANK_TYPE_DAY = 2;// 全天榜
    public static int RANK_TYPE_HOT = 3;// 热推榜
    public static int RANK_TYPE_REBUY = 4;// 复购榜
      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) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
    /**
     * 各大榜单
     *
     * @param type
     * @return
     */
    public static DaTaoKeGoodsResult getRankingList(int type, Integer cid) {
        TaoKeAppInfo app = getRandomApp();
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.1.0");
        params.put("appKey", app.getAppKey());
        params.put("rankType", type + "");
        if (cid != null)
            params.put("cid", cid + "");
        params.put("sign", getSign(params, app.getAppSecret()));
        // 做2次请求
        String result = null;
        try {
            result = baseGet("https://openapi.dataoke.com/api/goods/get-ranking-list", params);
        } catch (Exception e) {
            result = baseGet("https://openapi.dataoke.com/api/goods/get-ranking-list", params);
        }
   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();
   }
        try {
   /**
    * 获取店铺下前4个商品、店铺介绍
    *
    * @param brandId
    * @return
    */
   public static TaoBaoShopDTO getDynamicShopGoods(String brandId, TaoBaoShopDTO taoBaoShopDTO) {
      if (brandId == null) {
         return taoBaoShopDTO;
      }
//         System.out.println("GBK:"+new String(result.getBytes("GBK"),"UTF-8"));
//         System.out.println("ISO-8859-1:"+new String(result.getBytes("ISO-8859-1"),"UTF-8"));
//         System.out.println("GB2312:"+new String(result.getBytes("GB2312"),"UTF-8"));
      int userType = 0;
      List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
            result = new String(result.getBytes("ISO-8859-1"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
      String result = HttpUtil.get("http://www.dataoke.com/brandGoods?id=" + brandId + "&page=1");
      JSONObject json = JSONObject.fromObject(result);
      JSONArray arrayGoods = json.optJSONArray("goods");
        JSONObject json = JSONObject.fromObject(result);
        if (json != null) {
            JSONArray array = json.optJSONArray("data");
      for (int i = 0; i < arrayGoods.size(); i++) {
         if (i >= 2) {
            break;
         }
         JSONObject itemGoods = arrayGoods.optJSONObject(i);
            List<DaTaoKeDetailV2> list = new ArrayList<>();
            for (int i = 0; i < array.size(); i++) {
                JSONObject itemData = array.optJSONObject(i);
                DaTaoKeDetailV2 item = parseDaTaoKeDetailV2(itemData);
                item.setCouponConditions(itemData.optString("couponConditions"));
                item.setShopType(itemData.optInt("shopType"));
                item.setOriginalPrice(new BigDecimal(itemData.optString("originalPrice")));
                item.setMainPic(itemData.optString("mainPic"));
                list.add(item);
            }
            daTaoKeGoodsResult.setGoodsList(list);
        }
        return daTaoKeGoodsResult;
    }
         TaoBaoGoodsBrief taoBaoGoods = new TaoBaoGoodsBrief();
         taoBaoGoods.setAuctionId(itemGoods.optLong("goodsid"));
         taoBaoGoods.setBiz30day(itemGoods.optInt("xiaoliang"));
         taoBaoGoods.setCouponAmount(new BigDecimal(itemGoods.optString("quan_jine")));
         taoBaoGoods.setCouponInfo(String.format("满%s元减%s元", itemGoods.optString("quan_tiaojian"),
               MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(itemGoods.optString("quan_jine")))));
         taoBaoGoods.setCouponLeftCount(itemGoods.optInt("quan_num"));
         taoBaoGoods.setCouponStartFee(new BigDecimal(itemGoods.optString("quan_tiaojian")));
         taoBaoGoods.setCouponTotalCount(itemGoods.optInt("quan_num"));
         taoBaoGoods.setPictUrl(itemGoods.optString("pic"));
         taoBaoGoods.setPictUrlWhite(itemGoods.optString("pic"));
         taoBaoGoods.setSellerId(itemGoods.optLong("seller_id"));
         taoBaoGoods.setShopTitle("");
         taoBaoGoods.setTitle(itemGoods.optString("title"));
         taoBaoGoods.setUserType(itemGoods.optInt("istmall"));
         taoBaoGoods.setZkPrice(new BigDecimal(itemGoods.optString("yuanjia")));
         taoBaoGoods.setTkRate(new BigDecimal(itemGoods.optString("yongjin")));
         taoBaoGoods.setTkCommFee(new BigDecimal("0"));
         taoBaoGoods.setState(0);
    private static List<DaTaoKeDetailV2> parseDaTaoKeDetailV2List(JSONArray array) {
        List<DaTaoKeDetailV2> detailList = new ArrayList<>();
        for (int i = 0; i < array.size(); i++) {
            DaTaoKeDetailV2 detail = parseDaTaoKeDetailV2(array.optJSONObject(i));
            detailList.add(detail);
        }
        return detailList;
    }
         listGoods.add(taoBaoGoods);
    private static DaTaoKeDetailV2 parseDaTaoKeDetailV2(JSONObject json) {
        DaTaoKeDetailV2 detail = gson.fromJson(json.toString(), DaTaoKeDetailV2.class);
        if (StringUtil.isNullOrEmpty(json.optString("createTime"))) {
            detail.setCreateTime(
                    new Date(TimeUtil.convertToTimeTemp(json.optString("onSaleTime"), "yyyy-MM-dd HH:mm:ss")));
        } else {
            detail.setCreateTime(
                    new Date(TimeUtil.convertToTimeTemp(json.optString("createTime"), "yyyy-MM-dd HH:mm:ss")));
        }
        return detail;
    }
         userType = itemGoods.optInt("istmall");
      }
      taoBaoShopDTO.setUserType(userType);
      taoBaoShopDTO.setListGoods(listGoods);
      return taoBaoShopDTO;
   }
    /**
     * 各大榜单
     *
     * @param type
     * @return
     */
    public static String getHotWords() {
        TaoKeAppInfo app = getRandomApp();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.0.1");
        params.put("appKey", app.getAppKey());
        params.put("sign", getSign(params, app.getAppSecret()));
   public static int RANK_TYPE_TIME = 1;// 实时
   public static int RANK_TYPE_DAY = 2;// 全天榜
   public static int RANK_TYPE_HOT = 3;// 热推榜
   public static int RANK_TYPE_REBUY = 4;// 复购榜
        String result = null;
        try {
            result = baseGet("https://openapi.dataoke.com/api/category/get-top100", params);
        } catch (Exception e) {
            result = baseGet("https://openapi.dataoke.com/api/category/get-top100", params);
        }
   /**
    * 各大榜单
    *
    * @param type
    * @return
    */
   public static DaTaoKeGoodsResult getRankingList(int type, Integer cid) {
      TaoKeAppInfo app = getRandomApp();
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.1.0");
      params.put("appKey", app.getAppKey());
      params.put("rankType", type + "");
      if (cid != null)
         params.put("cid", cid + "");
      params.put("sign", getSign(params, app.getAppSecret()));
      // 做2次请求
      String result = null;
      try {
         result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-ranking-list", params, new HashMap<>());
      } catch (Exception e) {
         result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-ranking-list", params, new HashMap<>());
      }
      JSONObject json = JSONObject.fromObject(result);
      if (json != null) {
         JSONArray array = json.optJSONArray("data");
        String hotWords = null;
        JSONObject json = JSONObject.fromObject(result);
        if (json != null) {
            json = json.getJSONObject("data");
            if (json != null) {
                hotWords = json.optString("hotWords");
            }
        }
        return hotWords;
    }
         List<DaTaoKeDetailV2> list = new ArrayList<>();
         for (int i = 0; i < array.size(); i++) {
            JSONObject itemData = array.optJSONObject(i);
            DaTaoKeDetailV2 item = parseDaTaoKeDetailV2(itemData);
            item.setCouponConditions(itemData.optString("couponConditions"));
            item.setShopType(itemData.optInt("shopType"));
            item.setOriginalPrice(new BigDecimal(itemData.optString("originalPrice")));
            item.setMainPic(itemData.optString("mainPic"));
            list.add(item);
         }
         daTaoKeGoodsResult.setGoodsList(list);
      }
      return daTaoKeGoodsResult;
   }
    /**
     * 高效转链
     *
     * @param auctionId
     * @param pid       void 返回类型
     * @throws
     * @Title: convertLink
     * @Description:
     */
    public static String convertLink(Long auctionId, String pid) {
        TaoKeAppInfo app = APP_KEYS[0];
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.1.1");
        params.put("goodsId", auctionId + "");
        params.put("pid", pid);
        params.put("appKey", app.getAppKey());
        params.put("sign", getSign(params, app.getAppSecret()));
   private static List<DaTaoKeDetailV2> parseDaTaoKeDetailV2List(JSONArray array) {
      List<DaTaoKeDetailV2> detailList = new ArrayList<>();
      for (int i = 0; i < array.size(); i++) {
         DaTaoKeDetailV2 detail = parseDaTaoKeDetailV2(array.optJSONObject(i));
         detailList.add(detail);
      }
      return detailList;
   }
        String result = null;
        try {
            result = baseGet("https://openapi.dataoke.com/api/tb-service/get-privilege-link", params);
        } catch (Exception e) {
            result = baseGet("https://openapi.dataoke.com/api/tb-service/get-privilege-link", params);
        }
   private static DaTaoKeDetailV2 parseDaTaoKeDetailV2(JSONObject json) {
      DaTaoKeDetailV2 detail = gson.fromJson(json.toString(), DaTaoKeDetailV2.class);
      if (StringUtil.isNullOrEmpty(json.optString("createTime"))) {
         detail.setCreateTime(
               new Date(TimeUtil.convertToTimeTemp(json.optString("onSaleTime"), "yyyy-MM-dd HH:mm:ss")));
      } else {
         detail.setCreateTime(
               new Date(TimeUtil.convertToTimeTemp(json.optString("createTime"), "yyyy-MM-dd HH:mm:ss")));
      }
      return detail;
   }
        System.out.println(result);
   /**
    * 各大榜单
    *
    * @param type
    * @return
    */
   public static String getHotWords() {
      TaoKeAppInfo app = getRandomApp();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.0.1");
      params.put("appKey", app.getAppKey());
      params.put("sign", getSign(params, app.getAppSecret()));
        JSONObject json = JSONObject.fromObject(result);
        if (json != null) {
            json = json.getJSONObject("data");
            if (json != null) {
                return json.optString("couponClickUrl");
            }
        }
        return null;
    }
      String result = null;
      try {
         result = HttpUtil.get("https://openapi.dataoke.com/api/category/get-top100", params, new HashMap<>());
      } catch (Exception e) {
         result = HttpUtil.get("https://openapi.dataoke.com/api/category/get-top100", params, new HashMap<>());
      }
    /**
     * 朋友圈
     *
     * @param pageId
     * @return
     */
    public static DaTaoKeGoodsResult getFriendsFircleList(String pageId, int pageSize) {
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      String hotWords = null;
      JSONObject json = JSONObject.fromObject(result);
      if (json != null) {
         json = json.getJSONObject("data");
         if (json != null) {
            hotWords = json.optString("hotWords");
         }
      }
      return hotWords;
   }
        TaoKeAppInfo app = getRandomApp();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.2.2");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", pageSize + "");
        if (!StringUtil.isNullOrEmpty(pageId))
            params.put("pageId", pageId);
        params.put("sign", getSign(params, app.getAppSecret()));
   /**
    * 高效转链
    * @Title: convertLink
    * @Description:
    * @param auctionId
    * @param pid
    * void 返回类型
    * @throws
    */
   public static String convertLink(Long auctionId, String pid) {
      TaoKeAppInfo app = APP_KEYS[0];
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.1.1");
      params.put("goodsId", auctionId + "");
      params.put("pid", pid);
      params.put("appKey", app.getAppKey());
      params.put("sign", getSign(params, app.getAppSecret()));
        String result = null;
        try {
            result = baseGet("https://openapi.dataoke.com/api/goods/friends-circle-list", params);
        } catch (Exception e) {
            result = baseGet("https://openapi.dataoke.com/api/goods/friends-circle-list", params);
        }
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
      String result = null;
      try {
         result = HttpUtil.get("https://openapi.dataoke.com/api/tb-service/get-privilege-link", params,
               new HashMap<>());
      } catch (Exception e) {
         result = HttpUtil.get("https://openapi.dataoke.com/api/tb-service/get-privilege-link", params,
               new HashMap<>());
      }
      System.out.println(result);
      JSONObject json = JSONObject.fromObject(result);
      if (json != null) {
         json = json.getJSONObject("data");
         if (json != null) {
            return json.optString("couponClickUrl");
         }
      }
      return null;
   }
   /**
    * 朋友圈
    * @param pageId
    * @return
    */
   public static DaTaoKeGoodsResult getFriendsFircleList(String pageId, int pageSize) {
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      TaoKeAppInfo app = getRandomApp();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.2.2");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", pageSize + "");
      if (!StringUtil.isNullOrEmpty(pageId))
         params.put("pageId", pageId);
      params.put("sign", getSign(params, app.getAppSecret()));
    /**
     * 9.9包邮精选
     *
     * @param pageId
     * @return
     */
    public static DaTaoKeGoodsResult getNineGoodsList(Integer pageId, int pageSize) {
        DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      String result = null;
      try {
         result = HttpUtil.get("https://openapi.dataoke.com/api/goods/friends-circle-list", params, new HashMap<>());
      } catch (Exception e) {
         result = HttpUtil.get("https://openapi.dataoke.com/api/goods/friends-circle-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) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
        TaoKeAppInfo app = getRandomApp();
        Map<String, String> params = new TreeMap<>();
        params.put("version", "v1.2.2");
        params.put("appKey", app.getAppKey());
        params.put("pageSize", pageSize + "");
        params.put("nineCid", "-1");
   /**
    * 9.9包邮精选
    * @param pageId
    * @return
    */
   public static DaTaoKeGoodsResult getNineGoodsList(Integer pageId, int pageSize) {
      DaTaoKeGoodsResult daTaoKeGoodsResult = new DaTaoKeGoodsResult();
      TaoKeAppInfo app = getRandomApp();
      Map<String, String> params = new TreeMap<>();
      params.put("version", "v1.2.2");
      params.put("appKey", app.getAppKey());
      params.put("pageSize", pageSize + "");
      params.put("nineCid", "-1");
      if (pageId != null)
         params.put("pageId", pageId + "");
      params.put("sign", getSign(params, app.getAppSecret()));
        if (pageId != null)
            params.put("pageId", pageId + "");
        params.put("sign", getSign(params, app.getAppSecret()));
      String result = null;
      try {
         result = HttpUtil.get("https://openapi.dataoke.com/api/goods/nine/op-goods-list", params, new HashMap<>());
      } catch (Exception e) {
         result = HttpUtil.get("https://openapi.dataoke.com/api/goods/nine/op-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) {
            List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
            daTaoKeGoodsResult.setGoodsList(list);
         }
         daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
         daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
      }
      return daTaoKeGoodsResult;
   }
        String result = null;
        try {
            result = baseGet("https://openapi.dataoke.com/api/goods/nine/op-goods-list", params);
        } catch (Exception e) {
            result = baseGet("https://openapi.dataoke.com/api/goods/nine/op-goods-list", params);
        }
        JSONObject json = JSONObject.fromObject(result);
        JSONObject dataJson = json.optJSONObject("data");
        if (dataJson != null) {
            JSONArray array = dataJson.optJSONArray("list");
            if (array != null) {
                List<DaTaoKeDetailV2> list = parseDaTaoKeDetailV2List(array);
                daTaoKeGoodsResult.setGoodsList(list);
            }
            daTaoKeGoodsResult.setPageId(dataJson.optString("pageId"));
            daTaoKeGoodsResult.setTotalCount(dataJson.optLong("totalNum"));
        }
        return daTaoKeGoodsResult;
    }
}